From 5d2050b8afc638819aa91ff0531fbfa7fc341788 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Thu, 7 Jan 2021 10:50:09 -0400 Subject: [PATCH 001/177] [FIX] RoomItem using deprecated animated event signature (#2771) --- app/presentation/RoomItem/Touchable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/presentation/RoomItem/Touchable.js b/app/presentation/RoomItem/Touchable.js index 00f44b788ec..37b45639dca 100644 --- a/app/presentation/RoomItem/Touchable.js +++ b/app/presentation/RoomItem/Touchable.js @@ -48,7 +48,7 @@ class Touchable extends React.Component { rowState: 0 // 0: closed, 1: right opened, -1: left opened }; this._onGestureEvent = Animated.event( - [{ nativeEvent: { translationX: this.dragX } }] + [{ nativeEvent: { translationX: this.dragX } }], { useNativeDriver: true } ); this._value = 0; } From 59fd703f522aa64d53ecaaa00b5c5a4deb2b5dc3 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Tue, 12 Jan 2021 18:02:34 -0400 Subject: [PATCH 002/177] [FIX] Server autocomplete text breaking line (#2774) --- app/views/NewServerView/ServerInput/Item.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/NewServerView/ServerInput/Item.js b/app/views/NewServerView/ServerInput/Item.js index f9496332ad6..b249c88e090 100644 --- a/app/views/NewServerView/ServerInput/Item.js +++ b/app/views/NewServerView/ServerInput/Item.js @@ -34,8 +34,8 @@ const Item = ({ }) => ( onPress(item.url)} theme={theme} testID={`server-history-${ item.url }`}> - {item.url} - {item.username} + {item.url} + {item.username} onDelete(item)} testID={`server-history-delete-${ item.url }`}> From 3b4f4574fe59e68a523601fbcabdcd0632a515fe Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Wed, 13 Jan 2021 10:11:31 -0400 Subject: [PATCH 003/177] [FIX] ServerDropdown flashing bigger server icon (#2775) * [FIX] ServerDropdown flashing bigger server icon * Remove unused logo and update image path where needed * Minor tweak Co-authored-by: Diego Mello --- .../app/src/main/res/drawable-hdpi/logo.png | Bin 3649 -> 0 bytes .../app/src/main/res/drawable-mdpi/logo.png | Bin 2460 -> 0 bytes .../app/src/main/res/drawable-xhdpi/logo.png | Bin 5637 -> 0 bytes .../app/src/main/res/drawable-xxhdpi/logo.png | Bin 8033 -> 0 bytes .../src/main/res/drawable-xxxhdpi/logo.png | Bin 11155 -> 0 bytes app/presentation/ServerItem/index.js | 4 +-- app/static/images/logo.png | Bin 16300 -> 42947 bytes app/views/OnboardingView/index.js | 2 +- app/views/OnboardingView/styles.js | 4 +-- app/views/RoomsListView/ServerDropdown.js | 4 +-- .../logo.imageset/Contents.json | 23 ------------------ .../Images.xcassets/logo.imageset/icon.png | Bin 2558 -> 0 bytes .../Images.xcassets/logo.imageset/icon@2x.png | Bin 5636 -> 0 bytes .../Images.xcassets/logo.imageset/icon@3x.png | Bin 8037 -> 0 bytes 14 files changed, 7 insertions(+), 30 deletions(-) delete mode 100755 android/app/src/main/res/drawable-hdpi/logo.png delete mode 100755 android/app/src/main/res/drawable-mdpi/logo.png delete mode 100755 android/app/src/main/res/drawable-xhdpi/logo.png delete mode 100755 android/app/src/main/res/drawable-xxhdpi/logo.png delete mode 100755 android/app/src/main/res/drawable-xxxhdpi/logo.png delete mode 100644 ios/RocketChatRN/Images.xcassets/logo.imageset/Contents.json delete mode 100644 ios/RocketChatRN/Images.xcassets/logo.imageset/icon.png delete mode 100644 ios/RocketChatRN/Images.xcassets/logo.imageset/icon@2x.png delete mode 100644 ios/RocketChatRN/Images.xcassets/logo.imageset/icon@3x.png diff --git a/android/app/src/main/res/drawable-hdpi/logo.png b/android/app/src/main/res/drawable-hdpi/logo.png deleted file mode 100755 index b4d275593b6334b9bdb7e07f259c7237e7cc6ccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3649 zcmV-H4!-e;P)oYbaRS5!ll&LMU)kV12=N<4xqEGYy8$^fLkZkj{=P;Q_Xq*1kUH3+|1@G0Te;ZjBf9rip8~=< z%mr*o0qdWR3NQ0vJRKy>n>CmlqD+=tFBXD>kNlwJI7f7sR}nHpV$oM$z1V^rC(!2! z4af|MMR%7UK7apBtqeI+BZU{P^&FoJA!@}ac>VF-!$*)a70QeL_|13aIPzYz1wqCT z0yh_4z4!@otmvWl{{1h1ueTt_h@n8oA9q))G%3G^OoFW=uW-jy zWRAv-`~KC&zglpK5vO11+OE)f>8ffSJG=> z!a%51(8Cm>ct`hY(Y;$2Iov8nz4+no>JAE6fsBGkBFuOy;onK4Ta)ALv5*akaf=@` z$T%Yf=9n}GAF}9lWeaT4XxAi*-~A*DZ?fnki1WUY?fE#fWNuSMjQb|d$8~x_^R=iI z*h0XUfmhs|r)7^7SPj*Fc$m?p(}jVfg|wcp&m#mYCS5>7^*RmJ`9^>fIMy!epQOJv zE32L;aBjtEfpuEfZ=@~sM1h&yiqk{who@-KQs*Ke;$6r|g&1Ky&5ac;3uZnnufCp5 zO3&wvT{w0eS{BSiF}#Hf1V^6e`EBtZdN3QO|Mb77uFDFdT#Uj)m)R}a7W}`jR#!X; zJCGSv?6`>{e#a@gVGQr2j9Xq1w{12M`mt? zi$vw2^bP&Bk+t+%tge(g{!)cv&^5B|+iAz_lRUNU4X_|n0<)-WrB{Q_)+{Y_S~|<$ zSLjPkfcQ2ovFSnD{qx9QGu^h-7C6~q3g3fcc=)BK<{4zrQf=T(n#8hGiQzYo0{@PQ z$l3zC-(8}uHV~T^&02Ngc{>Wdb@xNKne(M3u-pCN&nx$tg$_f%CIvonD73aEYYE(4 ze#qihU9o6av`+qM+&cMOfw^>q z!)9PfZncwfRd7HX7I)4wqEwRZXh{F*bDe8#_~Wb9O)23qSVNw5P`EY9=^DA&aHSYM zwGo#cDSn!Aam~2)pY12~xmiW35=8k*F&Mc)amIq}hh|#-c+s7!zhCZ3fi&Sx3j*YG zuw>Lwea3=GT#Fr}TwE6{?fq6qh}XapZ$#G3kih%|(HA54U1j{|;yOc#Og;=)zzG=~ zaU6VYNMPl*o8R<)F0NbHhq0ZLPg`+c;6!;*1{3H_;vxOa5 zQ!A!ny28V>R34YXjz(_1^TEQ3OTHggeDa3U5ENTr1eT=kq>U2)3yw%C0L&PS&Wyh|7~h+yOzMcI?v2vs-lc^r z@ojK`%GfXqU6!=VN9o2+sv0;C$u`lfP&g`2y2dtJkq;l4bPYXZWw78ViYKPGY9obF zY+7I741g%-P{w(JkYcXC-v$XYE`a{@=?m-M$7{if7je%?3%Dnxi)%(v^yC4|hqlx< zd2+eI0X&b`1kVYrhM;j|wpL8QmQG-TqDgPSf><26>yBX5WL31;i`Mgw$>jz|*ago~ zD^pX*xDKXJ%ivF2;<2>R>ijHV{$5?jd?z6Q}SWmzB3}IKdSdG`} zX6Y{2(oJ0GMU#x~Exl-pbl71ywrp}euYB0a(q7-1{(^BV?QhrOSk(oOg)>JM!j4gL z0jIm@iHuE77z6|K^QBVAG)1!(&lp34ELdm@EFAZc=7euf6U7lhl%(1pYxE%8u_=FH zk)s&y4i5CaqGN$F9h9Nt~X|qT4Q}!TeXcu;k5UfYt#1P z-nJ8G>&%&K!^f)8xPAHII5wZ)b*9d=u*UO$OpC>hJJqip-g^Ka#+k);QxG;!98(GLM0 z((>=G$Nw7IO)?B2mN>h?W!_QF2|P5%7X4AA7}jt|VDtQ2t}G9&3zl<6ldO65Q-e;x z!_y(%GyB1&8vzu#S^049VOEdAyKt!fC?u{`3k|>rr(ZiGFk7)sjCknAD4yg;v`7mg)U*wi-j~bSf&PEm+I(T^AuGP6E4Ytikc@F>6^Vf3k zS|62255bOY+p2Nl<8yPe)KG1)G0)4aD^c!v>B2eLdWrPsFrmxB#G<6m-Bk*5gHdrf z@ESSrZ(P(fcV~gBZ7N1jr|JWWu(PnkX<^A@?RWcDlfGmi=*AU`LAf-ggq;MwG!CCODF-qLO>1K=gpoywaErgJx&vAWn6o=f4vLy7%u*YB~E~70l zTXA=JRrhk3&tX#8Kpo5>;uXN~ksD!E#PIcE*nJ@O%<|K;1vVvHN5-YkV8ws3BPTW1 zC|V%*-d@_@wrX#vEpYE_AZ-NTr5AWu)UfLMP$^UefB5q>?U}U&=E5(Np{C$@Mj3$T z!F!_om5;QWcd{P~>J`JP#JDOz-X_na;#$-b@Q^&!2h$ean+(xagKHs(!*?(xg9n1p z(t=N3Q=!lp;A*(c}a{3IUT$G8)aR}WF7snxJ z+ayJ_4h(8BZX*c=)B@%bTTrH?1CB zGE(4zA8eXCJfoY9@JQfGxE;mtgfuP9ewFElo|r8muqi+^vnuFm&IsH)Qr2*2K4~_h zLVSfnRYFt|!uyt^LbPQDj<(F&LPl$gul~8qn;#q>_XOOe5Br8dc^zrUrw_l(4P(HN zBpN2#GDm04DSk2*i5T(KW&CS_9T5Xv}xK!bB}1J8{)$j0^T32PSg&rQmzxE#t`2)g;%h?a<~ikmn! zxRIYlJRQDyFe809^1~;qp(?>0n)L|1SAKSLWH$epyR9+Q4%RA+BdCKuew{10nf-Qusj=xvI2`4aPnu!S7uBOI2$mT4On;s$SVM!gERAIn6Dh$iRBeo zUIAhSD93;aUEMG5wP+%w?y7DfVbR=k&_U{IwRBZg@4ox08leXVwbioY1&a!TszP;# z0IL*I84=2H8zSiN^ELu>LI^*EsG5OtTepASYQqf#3Te|N{g{cV5kL)wM~g|_`rUDN zZxWe!Jiq*s5EfyipskSb`K>qGO(;0y0Q6pT7C75(W;Fh!q$ss7*jiv#)<@K|z4=KM{%A zeGfg7WlZQOq_ragx+4u(K2;$3({{LBM-%Ql2nPYd2gI=R zIe!rBeR8<)?^Oh~30HtKJvquBi%FywPwLHp=)+Z!iv2Hq{O58*DR>Om9@OTCW`MZ+ z*H_y+FeVHT7zGtq?_I%AzA|)sJMD}^n_|+7ALp0rJQNBlJ*ds!tuAvgi~xxQ7O@u& zVl+fz+JR#C!d_gC$W#Km+R)vDn}gP=<1XbD`e-_MG{1Z>-eHVwp5a@B;l2X3rvZOs zo!5?!x>~oj>sI3D91O~?f;+7LZYzKsi|y2|Qj{etSua>l{%e zWLd#qxXC`^yBYtujm@17i~y`(g+vkLHGcnlm(Qr!1o6EeZ#TEBpU>67-*-SpGY%_$vRNT3;fLP%p?=nkKu?+Coz%0qlJfiS;&j#IH2{} zH!m7+&CoSY@JWt2vUTdabNzuu^|v~{|NTa`H>H;2>aVUNc>;E8wv-dh5m8nFU7afV z1Bt~@b`}rUXS1)j*PtNClXZmzbG=j5g&x@L(iRY`7l}Lp6H;elGKpt4gEz%1IDa1h zBfZZ$bonAPd@(2>vXh7vHd@X*(D@Ly1`dK9CT|G}j*NzKhXcx82`EtywD&%CEL{B~ z+yLDAWqU0{skiL8{;K?=x(~{ziJ}Di=l`|gh5#M?$ks-oq=`}&jzqIgwXKjv@?YL; z&%q5tmdMP*__p$b)0(MK0NJ8b(V(?!)wi;e&81LPQKdDZ_N_NBnvfF`=BGTp!byDB zt78l6M0xMBnw60OfZ?J8__qM)H{U5WvYwlC?P1(z2@q_iG)-oT;%lJEaT!K1A1tg^ zOW?m83`*HnB^-VI{U)o`)&AGB7@eQ)KU@hyYz)?$vsqL9IGlgD#yRtbp-D>-VkPaU zr_@`>foMKWBu{`9&T`)NiqL*UX=DO<0@i5tDozf+`v*# z#xnOps-zwEL%k0<;Awx+BF4+TBD5Dm0OzH~-cBJtNh5);T?Zqu5=)P)uqzL$DAQrb z4|7@WacDPzHP*f4Yw0Ytjk4#RR#M*iOR!xV!P+L_q_*j>k-!s}9!bq26BK3|UR)kX zY=;@oA2pPT;b}O@^`U|gKG@n2{#kYFh3EK9$N-iXi9x8hnwJJycm#Q2nBqWIno&rp zy-ZD&a&>vv(+!AB)^xB3ml#Q9zOkiHq6*R~Wr5WQV1iZf4sswv&}s7!rqo{J2fqyp#QeMOE}gBa8a$UXB9o*Nk1owk5$9YaRNi#dadget0BK+5z*Jq9 zB`EZx>-6fo;`H(dZ$*C)KI6ZyW`F%@%XF^vu9?>_?sD5l6!k_ayu%KAaI3Q!(n+zT zlCB*&=R>R)_6j;lhv6_eolsV2+-V?LI zl!q1xNB94=XiF(&@lhPn&odEDoa?5!kn_+DaXX;Ei1P8!v5vN0EqhL&Flw9&L81;e z&Q?AZ4)Jmp>(&d_n!S2*U}?wE!m>yjBT1smMzu(L5|Hj;_Jj6Vr~bY7l>sw>h3Jwk z9TVTJD8rcz<;Nar>q06PY0D-o2ECvtvYh5E2sUik02gpX29aE@+ACgkR zL_15;F>95cRDN%5LLeg9bM>A*+MYpHWW4%sqC0I|p?WyK{NA*Pd*=1F@%%}H6ssIA zRpwZA%N_(gH7#dxO=mMZZ5Z=D;;TR}aXGfG&|QbUmPq86K|&GpunlmJLU3q$D0rkXFB_75$av;$9-LvX6` zChZUvlcp;Wb+chei@@eQJmp?j&vQ~Lfn5DsG}W9!wAVib$qUwzOPEkmvIj-JG=JgH zb4A3T9UiRH#5Vv6yUoFo6XiU4pi50OByKmGu0PBSv4AR-Kv}Ux#;by*=$wDGf6tp& z`d`A)$9p>4UGVfWy9?6x3)i@J7*-`vTda35p!*)QnVY=vVe+U-JIehm0|a)hY>SzYQks;cd4#kos?PRv)&;L0T^^P?cqel9UZkPNqAq ztE(bZ5uFE?>iq!ti#}(`up?<=wC|UrD@NC~zfboD5-1M3+(@Fu&d@$_)b@P8nMDST z8s`K?&P0af`qKA%$*@&Iv|iHdpMxM9A_9-(=3oSM7$dIpzB&`|D#(lODC7i7MO^9c zvXoyNm)hvANr7j1)1&JI7sh~Cb2)Cg-3g#qyy$8}-TyEBQm}C>6FxdE1if aj6VR_2*|g2`(`Qt0000By8Cs{ zulG4f_?_x{^%Ef>tL52=AlM3H@TQO`^pQ>zU`U9ee4JvMK!k|{Ux-)*q8b9! z0HGFB{G9@|5)nMt+Fw3ZS*(G>kr3?k32PVsbc%&`7J;T>RAm-n2suCmHKm{e1QikW z_a5J`fWy&&0|FKc>jlwt0P)#~aJsEEEdV2Egk?lp+*HBSQ$Jm-g2SiQ3cm8&JYX@PROH%;;_{a#a}UG-*|ET;?=vW@6Cqb7Q4J`Cf?dorw+Sl~p+!q`_2Zh>QH*po_@x(6in1o|)&XAi1w zdBHj7QVa*G^_`QC{&txUbyr}h!BAWZd9i|H;AvZpwszs_O+>r{!%a;g-OM9q{Hpw6 z*zWNYmA|io!zzcCQ@(s>Wq0YgqB@p1olyN^kP<~VFl)Jy&p5Kc(_Gh#g90lr~s zpn+X2#EC;|ppQVR?NDKDe~mPesu5z9e^!-$R!#1T;5d{+1>6X)X+G2qdYZX2B4QoG zQxD-x4DqBwB}MvEdDT8AW?RsFZO>g3z+R3lXg84w?LQmtL){=FRvMS17@qSxl~ELR zHys%RT&*^eEEB{}WArM~mRA{eL3b3euyJALAt6kIW8jcXq_`gJTQ3b`{d89XHvX`$ zSDY&`=$LG4Wtf@)x)QMP|L@F9dkP+cV@MbdF?TIsVdLV=6R9l#$B-d))VR2*{Ck6z zp-d!TlWGR_3>-rX$Fr9-z`gH(b$0XM4F z{1tGF2>tC|Bo?sXtnet(pF&oU0#36of@8#xenXgVGzZMgL7$My0t+r8G3xY(kDST^ z3o+4`;22?Wa=Qckm%Z!&Pc7iO4i>@TU?GQ5wN3k8!}z)~b4d3JC(K8TgKk6Z@YQPr??M|1lNEUMRw5F`pd}QBxyQ(Y|HN2AKpb4AO8w(}!jTWt$q=r-R&Y))Y0r zDWecBvyU>>zcW4P?p8hcBoCJ&yMQl!w9+@dV{Ks3R`?b6l;5lj^FZvTpk<#)3^0v- z7o*R|r5H*9i)i`QwS;y3(jrKl^zYMXJn4#%ui}W?CVj_if(!hDN~R9dinCk;KV>Lqf*jBmb!27`4F2ZfMFQYRwI}2<7rOSK}oMkchvKWg{ z(I;d7{9pkxl1ae5DsXRF+mm{20V_*xL1IGs#41~fP-GJDx>O|*%tJvq;o65j_z@re zYO_5Oa%K@{sYbiOV#<6A=msa;{OO^PS;TZbZB<(;0k2>B;WUt!dj`%4w|IIaWa1R` z`84O4!~&Mmxj^e@xo3e0mXxn=o%pGXC=|`EkL=ACc-UJdh|ebtu_Y3)h*v7|^L=Gf zH7307q6)odTga1fIYOKQZ5kgR{E*PLbA_C*?VzQW6p4dhLokqzwl2 z?w{kDetjqB;pbf+>N*NISHG8UOXH94&x2#2pg+0_>vgz=h(Ce+Slz1oZ+5C+>*xaq zx;}4PyrvEpqbp9lg9-lA0~r6q-?^ha{br8)1y3C->CZcT(vcQ8AJ>7Z1a!siei(cT z@QXXT5*>DA*j_R~Ow%F_D#5?SWC9YMfr%Hilcfz_QKJ-A>)&e&U zZnkjZ9Ra%gk44UX~O4+%Z} zF*GJ1*#Y4Pt?%v#SQ<2K#C^qea1jTGVEke9WERAyV2`Pn7iP-McXll>p#^`Hs-C9{ z>63E|206GA>{i3&<~wTlQ8)`3Q3&(S`a1SA{+mD%fi)}4FNSL^Z`+#hzz4TS4<^Ck zXv5kc&!Vd9uPyCWA>QI&5wpV^p(*zP(wJ9L+i!_%EVJD=r%Mi@V<~q!BK-sAVmXOKpwQs6# z1zLaGy(sKoN4Jbqo!F81N3ej7qDg)sW*bh;-=G2olBG+UZ==(E`+5QvFeA1|r@Ril zwSMuVjtz?)zmJHw#^NRYb(&FMwyq-)zZJ-OF*^r2gx^zaf=@#RBBJL|AQoEur`Yn` zfeaY8fv+Rmd^nojc=u}R?5A-XUREbdQ2(Nr*O3&7MtFb~EAT)Fz=N zQFzQ`<1Dy@R8wqHGCUEOwT_}|q}t6=EoqYqq`*|&S#%?$$Ouvp)x9N~*THww1t^HM zjfj8k?1y2L3cHNHWe7!rajHM|eoSeh7o}cW!q1tdg(p-+j8a*2v6eA_mFL6U1q!T8 zL*KI!MIj{PLS(UO6G>y3S>Rj#qMhzmx}Bx@^yK3QR=RAnHo<_=3I1Pey||7PBZx@jRmy0R7NbPTnD7EfHL&Z{&gf1 zv03A5@jAL@?LVzF5eu55NT#iR{ld&@`d0*2#~=MoPul4lJ3Kn?^p#a!1aLdAwx=Z5 zA-C(iD)?Srn3?Cp*tKr1!}Im^Ud-^Y*pab1{^<6ha8EOR*Jeda~(+2d_pea~GX6sWa(!Yd^a0KGX z*yH=>ee;chp7Jl6TEN?-i52J(-~X5U;=>i@$MySl$YGcNTZDdNr;09f`hj9-v?ZDE z=H*K=AAF>*w4l{ze0{Yd;wOVYHKuS&v7s&$~dB647O0w(>?FDzGJJx$^M3W$3S9l zcEvWdxIcS%Afl|bzhI%xH1qTu$6zCS;$FSpxM6X21t~8&Fd+MYfNfb}nSSG<5~GQ6 z9VnP20E6$i1+38!vCGyC zHapRVp#E(R^FfU3&`rxzSEcb%JQ2sXW)KJ%%4#ncCmu}9IJT@mTwic@kjR)PiA!V4w{~YjSW4|BAbI;pl9s&zTNF-Cu&a0JPY9< z6IpguIEuq;{d{kB^3}S2lB0OV?|nbXS0oa!_#^~$#p-OZg6B#&((&q>U))Hxi!K>N zu*%{+pS0CKaeJurBH29DA=;mK?y!eMjJ93Jg*>LhZ$qe}kJHSlNY&qLCPhMQE6L$3 za33O_HLots%(2ydmY3DthL}&%j<-tPpf9rrEJY?laP$@Hmwq@cD|DqrEJv%`fFllB zX4UzS0YA_SapY(1Ms_`PeS#dQJ%l;-N6SzI7G~8Y3Zu1S{o)KkMpRu-o~RT*r_0e` zN4QXsaJStC8&g6vSzv<Jo`IKpcN^@@q5xDl^#y z>=-CSxW`NSMilFtoDH2QO1KSZ1(4on@md=$m|egzO=NXMocoY3B3dtqrhOo`wz|xR zGYMZ7j7d_Qw>{F;f(zjeVf~1R*7x<4k8~{}Jvzr2OSUFRV9$E$OnNxXk|SSpaPe3iZTA*bl7`u)q5_-(lKWU5GMdBu4uiC-)L3BU^!Nkx9TDJ3O1&ugcj1H^tjNWsMnY=eZbt1KZw=+1IK!RLu%Xx^`u@}jxd5UhGcvReq+IFN8un2@A zU51RHqD8Qb6K}ql1&IKkoz!a!MY{{_NG0Gv*XOOoY4*)}&C2S<*{N-xHw1@O`c1e^ z606YG;f>vg%Gl%k=fDzD!%DGt7hPu1D*Y&WU0s}xI0Uy))4q35s?S~a7L5i>y z*6%uhH#`0ACLBfA0+t2R{7YJ~bjpivLrNMo4bdDC-L%k9GO~zh0poj|h*|38qV}wG zCE$kZP`5J7LJn_ft#8xn5@86A#I%Z*t?lxlS=)AWCE)FYTL>1201{i@y**pb>Ly{^ zrDxhhdUA8~c%O+n0Rc-*0g(3)h8i+sVvFjsaOB4x0n4FHrV$QzK@2T(BISzh z`2>#Mu+vh}tfL)f@k+XMtiFEEiFbG~7I@f;!1MHX9lZrdK)e;t*VmoZ9Zr0kY2tpu zSY4poc}|6K^d6sm-m@@dIIBB4_`~Hom@b0r!&tQ9XpaIM{NZ}yE^tQgHb)rVa^f8= ze2U}GIHh?91``FW;G2PztgxYblIgPlIvv4?CGSQ};{iGC$In z4U!^Sg|Kv@?yRk2mjksBRGyw#55}f}u-u4HU0CtAl*bkmU`Wsjy-mv7r4 zi`vSh$NiXUHGs+}7iT+?lelbLEcBXxa*9kXEKDgRnO_@ru8nO(JBUMF*r*13A#E=* fhSZ7Gk(OTr{G)yP3O`|Y00000NkvXXu0mjfL6yRx diff --git a/android/app/src/main/res/drawable-xxhdpi/logo.png b/android/app/src/main/res/drawable-xxhdpi/logo.png deleted file mode 100755 index 86ef8a102673c82e066141c28b446a7308453030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8033 zcmV-nAD-ZeP);M1&0drDELIAGL9O(c600d`2O+f$vv5yPez2NLHV#pfEfX11UMtW?zYc4ZVTRc%eYI{fP$DLfN$&&ghl+x1P9x`-5^ zO{vBd@{H>LpcDA~)RR`|)JQTN62KJl$_ats2Bo8pKi}t)>n|4I7oK+inZ#BU%fA|BXz@S1{HV9Tgat$WpObR2?Qfq4I$siruXxhSRmr8h9A6<0xBW@P>T!J zKB>}6>9$RnSRfefYOH8i<1q-r)F3-qnN$RV;oX(IbqWMwsz|JgE6;WcIn+5df%tH{ zUgIUVAP7?lwGh?rXXX7?B=;jVfndan5Q;%@rj;v5k&xga2*T9E)5?pnz&TY5f)Oi1 zC?3;mQKV`?FcHyH5QIW8y%t647KGGA2t_BUrSP|=!JEOO49+hI%~K->&LI7Q-ia4A4uvK_`;4Cdf={heep1Ysa;RP=D%rAf9hEf7!i zcUS_!0@xy=w*G~-0I5wt?}=2Kx?8YxXq}hW#8Z^~AZQKqe+)~iqW>Sq0?*sK;_uXr zEh*mMMOY#I5J2FsNz7?fc!uU@&tG*lHepmCWNu}e=o_7=NtkS=3IN|L2%BCfYF}ym zvjvVowWZ2I>1vgQ#Y4Eo+rW@`5m3AdOvV!q#NCcjqXHp|cE%wQf(YO>KmALcPQxVu zm=sR=^~8e+Y9bt8K%|YU&vx#ELl_l^cwJxUzX4$&@y<$ZV(J^D!MiGFgZ(Bpb_+R7 zmB$5$XfV{$>CkysTn?iG!5l2q34|^>P5|N42)yRBSq5ptuF3~*wx(26)6tGwSgZ!X zc8IX*!a!Z~0#V>hMzYnKc0*7vuXR4`7S%dPgJZ!!TGH0V_nb0>Dd)Vc@3t^65CyBK z)S}SPCeus(vLREF&B5+#7^<4SjqXmfb)m&@_w$j?a%8l}Lj)oPSQNC{?_TNbZ;6#) zpKj)4NoPxbn$EO(c5w+2h%pgSaFd=`OrK?ujYx<rAHkT4h7GnsyafOE>3i*Z8s0g%zh#NNK@RCz3$wxg zhPV*Z!?aixS|nC%h=fsr$mgyMYUzt-Lt+cl4{wCabF9LKNSJQcdZ53tZVD@0XU5oiB9Rew0bvE8(OQy;fZ_VKrQyo zW}a^^i#Q0AqJ8{z4D5xy;KTPi~pr!K^!jr`iO|uz#-V3nCa}Vi#s8hz;(AH zt?5(~3&i0<{hq!V9h%HbEdpA$S+6b>6W6mHsObKrQ?n-$h$QY1I5SdCtOg+q;^E9} zO}Ll2n>e#Ewm>9(7M)jam{=TZz*VVf5V9hfzv?*{q@OHkId+ipQaNI|uWU!W8m|J7wCVWi^JjAj;+7URL73nF@;S?Q<=NY^;YQl_~QZgd%Xb zP=7%gj@`e=ia6JTux&kXg`|jsP$WKg{N=d#FC#9x$Ilc9wjOLN8>(;~ehm4Tlf^hrec z9xM?rv5~lgAjF`jAC?)!BeXEx<$kNvpZ`iAl8wh$1uM{|Y`7AHFYv>XfU>BxtazpH zt4>e#^(U02cJ8>|!GY!#L2!%N=Q|r&xEemtSNHx2f#Bezt<>_S2t!+ie2(MEBzmy6u3aLj122 zANO9cX<@^?K!V0N({%-*XmFKf1a_^6({9GGKzLqI0}F)U!c-kW$Ol2-Z`igX`m-6w z0-=yb8fG~TY(2<=8$lSJ46F$BAo`Eq2gd?oqc{o`ZGs>OBN1B>R#CO%SNtzdZ<;TT zlFWr5j6*zun!sY*j;bGPKUeuxED&BNm;=KQxwf-V5b}fVU}dLNs_~yb{|hZ-FFZfY zeddBymESlds`^Mb_;Vr9dz~JB6B4}EreJg2Ey}jpU-)G%0&lMWECJzL58)l3B~P)U zX*$bU@EHzn*V~r%eWC)o#V=xk@D$u4Fb4-G^IA2@DWA*b;9dl{66p)j<3td$q9>j5 z$dfZ5t_+28Dc})e4MaD4OxTsY90hm72)Jvoa{4TMhTd5Y7U~?A+6@4}~%Ala+eGJ1~gyf}44=Ad+7MJx(WZOPfcX(*3MlkAua(Em7n>#uOd^`YF6|_1R8l zRj}GRyB86xr*W1MYGXJMf^T&zFI;w+OuKu^IEVM$f=y+Ecj z7!Ak?y^9c12dm|<^TMV`B;o+;kUn$T;(THA#xivl-gbSd6g+_(5us{;B{=Y_2+-&+ zS}RZkazH%U*USyo1*^lZJDZev=#SB}z}%&>owFDex)_dS94_8@1UaGPbsAs?2UFl$r$v4G$afqL|W2gVdL&qbGJmE7qOQq}wMyv??i<@+u$k18RCXB$2 zRZe(Ap)weQKza*~;|IYCSO=F(Jgw}mE9io7&%{|2WUwCsv)M^8DmpmO0xMue>3okd zfzZBP3mixLSyruwE|t@xz0$zux`I9`X{X9#!9mC(CQvzV4V^3KOop|Z8fCKRf->4S zI4pL$SO2Y#8ux=Zr?YY9fAsGizQ+?m<<;Dlnf)vS8?9lPdn_aL~Xcxm`Rp#O!|AOJ3!QBB7!Z*fV7AB^291@O+2UgbW}=J?BcUzGDn13d6-#g zGq$IU`g;i1!F4c$CkE0}6H~UbSQ*bF^-PS@3!+TcBs3rg*s{#o-BLz_TRA8?;U|Xe zri^&fu&R$gYO55GXS~JhL*TEoc5k(eU4gI8Sm_AFI*lH2zgwcCtS~c^~9mmW*-`R+a`tY$h z%-eWM@ma`d@HIILSm4?p+iPasCTe+pV9!#S5S#7joEeMjAc)LGzw^)?*F!(C*3F0n zv4yg1(}bOUzP(~bBVvdpe)iS+KF2tFmei_}iM(8ATWy z4T(S?HNYU4&G@j1;2U8!d1}qW2-S7R!Vv7=yyi&Yi_fBkN()}JI-2NVt9KTTYk&iA z;BvgPK-0CejEcocTfFzU!7s4)8N)mO+B19G?iWp+1J#x)AH3O`Qc(>_-JrhrO8bQ^ z1Z?JI)%?dFf39{q{@m%a#EnWwZ9a=mm%hxy$^t%17^<3nseSV=bvONI!A|fr&Cc1Z z*uQ;e)6&#(I_mg;=~lER94^#fm^5GbNu1}^>w=IaHkNGn(Bk^y>htaY=6p4iGK$Fbge9>e1Yrm`_F#Eid*k#cz7mKa z@Xc45i4`FT7ow0JgGC7FtJeCj1j5ohz{;g^$5z@#5OT-&mm8fw9Lk z7w1G^W2!J##nljmFR*K2IWQT|<2>t2X9`3dth8W7h^rw830b%njPircGrxA$7dTjH z$BO8>8v4xvK`1cgu=B)nU=l8xvVQJvPFq$)>}rI8)s&7PxWvI?U0V)leZccYQ`XNF z2%A;}&!RY7yz>YIp$5T#9osNw|m>OB9eH-;a~4am8DP^-Yu-mMOlag zPxL+~_R!-(fnY1b&Qh5Kity2&i**?;BTPLUcPm5Z37Q-AcqR&AeV75n2t#6eB;6^r zC`I#mn29I|;}DBO*m+?;D9KPf#CVv$d7%Z-!}8|n3W9nenGInYiRVjZCJy>uMjU!I zGD`EMvo6a)HjrZdyoN$u>1MQ zUuCfZL2!(?w<41Y$y4yc;t7^WPb3hGTf>Dc;S^@q%{IR-Vn~SSep-D@ zsR#t4f1u6CZofv1KEN#ygbZM-p%es;xD;LVJvjS(CpEE}I7oS#3^E(-nZ51nAPAOV ztAQt=IVB7b$K-yS-P=yJPAGMOVD@j>9};8W9L4?);4G z1TB%M3WAU#>`ojm{`#mK25(%8HGCndbuc9kj1d>3N2wGvqtNKLh;hvy6!OcLI76_e z{d$M5tFGm+XHFa#qjxVCY8))o!88c;EeOH{^b3Pd*H_$&GxTHDt?0+b;;^MtnJZus5eT6$ zbUQ7%K4*yoj|4d)u8`bb2g`^+2vZMR3y9GYyAfIxau?8!dn-~bpB{y&5C{T%4}#Fg zX=@=bZp29_?v$Q=p4|c|^8#TZKuOuOnhTC`QWS!Gxe#ALO|EfBqh)&%j0!|D%q0NR z5NAq+LNZ;Vkibn>Go6EV(=`smU{oM%4Rb-tW}=ml4IESO6@0HP$J(@r0+U$6^f0S< z!yt?b1Om<3aQt)t%2^j9ZVirtNBXhQ2nk-xUXRiFSo^t3CI2VBo9;p!If-og|eM6K!%mlVdW@NNAk|Gc{_7(w7SWit0kc#E0>^?gqe zqHZa@ejma0LZ)$W$)z}rVSzv!)1I6bhtnN^{PgQK|I}D8%B27f7V1rYg6PY?Sv1jL zG2m`o1tE*VEo~Xh>9>X7qp1~yFHnp3%eZV+8hiVb8zguGra^i-^K8edxs)lbT5IZ? zqZLN*nv{MWK|8O)!GXk5>8Q#=z@4`~(v2wDQCZkF{lse6U$<2Ctxs^dZBsR#|J^4-!au@!3DT)HS}XlAdu8gHm(D0hC1V7 z*jUnf?4rc?nu@i<>k3Fz@}Uf|%hGF-YwJ(PVu9V=B_YszA~m#t=m2nqZ+3o7@y#B8 z{|evu6j22+s6_fQ!tT$J{3uF`Ko^?2XyVxLQ0Lj;V8eB*p&ui+Fh5oF)9xKuU}kUI ziN{gAGzB_O+?+ZjWC?d*dVa9#T83g6j93ub-(0fcULd*QUa&aCOIrB}D+tGEs|}<3 zvwQ#8g`8qUAhch6*M?yk0=$Hb>4}3(wGw)8!BaefK4?XB91s5tf>(C@aca%%?c4;5blZxbxVs}kFikJ`==;Iuw7C*zk(vd; z)&p8f^AX@vu*j*VE1_U~$x7_!J}WUQsR)GS*aLW8V69)CSG-3-ur4(Y#e?Guk%Hg8 z+1t)-9mAxgA`muX4_q8&!@P@KigNgX;|N`M<5F$ z(oIpmEMjb7SSAt(t_RQ&!zx%pp}E=vu^Ng3wjv^a$TY--xR|j8f&-Hf>foIF!BsYKwFCN@ssd z+=uZQOCW5!7L4+PO-O++Yu;gv2cJlWVmi>G(A3$7mz;gjF@>gxLOP6mdsv$_c>>y; z+1pu#3FsFF>AuWAJwb>f)wmY!H$)K3Fp>q)H&PAkK`ri*gE3%H;N?B>ns*3lyh}kW zhWx=UgZ{NO^zSa-Eg}|zJw_6UZb4KPY%*f(p(hHxZO+{pj?UBdn_K$lE$pP{1YV;U zHFyO;5W(A07&NamiqZGrB0~#AH|}7qAS!`cSA&BK%c^9Ja(VaEqaCp=2Oy z@Cq!WkXB9?M)h_q^foU=sA@Jgh?^sJq2`CNlBl*++4pC89Dc=D$#{7rb)zdFEFRUY zMI?3y5Zk2Bg~|H*_wi_c!1p2o`Qt)?urbR0EJDClALv^a0v@?eyk{ZTVsH}9&(8$= z%W2;*Y*F!^3LVi;R@QahLhO6*c$__U$Jt-_bDkQNf4ogSA}t2VJ`Vm+T!HE1T!Bc& z*LPmYDEIWy;;=RQe0v21!C}swO<(qd$07~}-~}oo4nht%Gf3GDN-lwr8gXzgitf+; z>+hQ&2svP&i_sN_br4cy_+X?UxWZQgk&JW4O%T$9VE1aUzbestA#a=zh=awyEdhB? zKu8TDxwlkyR`MDh=VXq_*xt+H(*U0)Y4g>Rhe%nOe4Ou z7mvr6ZA%9-5m}g8QeEC#6u8OC^Mh3>dJ?7`pGS9z6)_xNR=tZmAru2&U+_;6L?F&X zgh41O7`Jr$!5feoh_4~ojdYwrgh41OaU~^>I73n|L?nv6>Rk{{b6jfu@yDO5QRo%2 zV5+xhMcfEMILTMtoV=qFfmZaFewy~uYmP0*_9a0$n{!9b^~6F8#rM--S;$H@K^Tpp z2g7rmf+tDqpxsiQMzG6DHbEGlu{THb1Vi6|HA=>u6bb1DX+c^VB&0!F0qO3JU0M-IK{^CMy1SNc5Ri^#>28*W-+tfs zk2!Phz0Wx_^PK10`NaLIp{9V3LxBST0KSrXhaTwZp2v7OAa zTGu}G90R+hF*r8>Rkn%8l*p_HK}9e6nPKT2jokQr2HhVhLTdRoO-E!+r?tqIPJC1ldon!W@|3|J+&9^!` z&qA7-l0=v9@_V3R`G*Xm+3-K_M(Q?ZtNx`FdF{~lEv*FVG5KaIEj$}^W+-QTJim3_ zYUHmuJ!b&{7SXm{Ub4yT_zIeNGWQ=;mWXn1>o`ojxD} zq;UFZphoVJ*Eya)125KKCxk z|8S&ukM8*TJ+T=c(0{`Td7xWhNNkZ6p?q7Tl(r!Bc(%JI3IYylD50V`UIi2qq`wS8 zUccXBZt!BCz9WaCLV}lpm8_PV1iz_1(+~`3?p99%(Oo%Pe4zVHCZqh<>o9VC0@1D5!RR1;v)9m5L1353K_&>7n zqDbRuuuwqBefU|i*M1(Cb1g9fY@91uMnovxexaTz0w9gIF=3U4!*9y_yHsnLfhYwd zqPdK>WPT53|3%%s4C+{JjHHH$=@WaMZs2CS*{p6p`x{PEr{{m+&(g4|%<+4varY3a z1ccgeKlE?Hz*+z9({8~UgWFHKNDX|{jcL|J&0A%kdA%+l`t2W17w5Upm);5B#SuCk z^8_%r9$@+&5pN_oF^iITW_PrBos)tfzL;5Gf|Z4z{Jsh4y7Hs*9{gqeT3^onCKWqL zr`_>LCxp^Q37GTP$jxxxCe2z8i*8M0c%Pof6!M^4goC18x&tQW zO&%9w!kma-NXr%$oAF>n4)8yK2u=MA<2TG*j+PIuF1sbjFr?3#=ug14uRX0HbkwQ&4!u+D zDC=%<0VngXQ=`^zxNJ#z?p|o^R%rQ=!o8iu&YljS&<7{YQsT3r|QCA(>35s2Zj_l9V2Gt?fPOk$@UHb2#S3} zNquhhVv6JG8>viFh8hVJXE+Je_nT}e$fEjpQuWc4s)kJ=f$2pkh(+Pb=ZNsWEKiv` zOB=ItA??mAeo&kVNcqzi9E~IL)b|{Ua~=wsEDSz?mELIt1ydiNSv!E1(rK3hzpDBJ z)d`$*w!K}k8r0j}b13>|b`%i&!3!Y;E*1muaWPNjO@gX9zGadK#Rb|*ZyL_cEWRMd=atrMh#L~o9If}I6ytfbERaLxCe+qwk>lwnU zB5{S@cI;vwc+j8Uk^azL?%YlH=c=P34J<#apFc)5n{v%TUv8gsr#|~^MVF*PD8mzw zM8G=VN^{#nZ-pGK<}c{)j8u|T@u%%xIH|F#OjQe9$;$Rjhc%T;AL?`4Dc)5go9vmW zv{jT2zBL8ZNY9!324@!(?7D=oZFxoYR7}6mwvchu?zk;ts{S5TG$vDb7+*5ZP026G zJ(P~*(XayS(z)EK*PV)Satz}h(W4S);Wg8kc;3%LRGaq_t;YSdv|^h3rv4o&*LS7( zdS~0^v2(AVsTjN%Yt@^m-r9?p&zi_6>V^FR_%60v7x5`VHLM)o3F!JdDOpfJ2iu9J zPw+c?E=v|wO_tlw+D0!^UF?aI9K9YJn|b#!8F_BNKMj_ti9Vd|ZqzZy+X5UTVJTEk zYfd+0SGZ43xWV@6_1siV!&nG}K5nU44{uGI38oo-CxqraR;oG;+~@uSaI+RBN;GB;O*?rU2@k*FokZ!Iyl>D`0x zO@z;ZKJ1sQg}M7+=*+lR15NG_7g=g%#e-&Q>g9(l!q4q7y1npw;C!g5(B6BH7tKYD z&I3*-nnY|CkUyHK?9y##LJo46%V}H1{HsgU?DC>4x}jt{fT+bNWvf1Wxl;tM>m@(A z;#AS+o!u@rFaN%tD-U}Glxm8ulnARZ-Il7n?6G501WL3zUwVi|eCm5JP%!%}szTq; zmbEK&vI)4%VHnPN7Fvz6cGL-=xo22XI?mZ#^l#fS4sQewq6C`lm8*rPjXF z&Z&I8hk|2r`nVD5oeC&h*&jvrhVbmnE$w3Hao461XXhQWp=(QDR|-GrPi7D_w7eF2{!>m+p) zSsPUFuV^mMtloYZSWdOJZ>m@UO%@oLiY7CBzf*Cr>XE~MkIDJccqDqc^~+wPM9cLn z88bJpeM>RUPziWje#PgA0_OW}kcGMIVK?vLZU3_E6XaCUuX~N=1^jQgQbz6D8DMOm zhVa3+O^CM}WO`pKM5T}a4z3I~eU2Or)I=V5@ zvTmf5gMoOpp!^CfuCHHq`-I1m#5{rRip!iDstpW+PP73vo-kDLm{RGRH_4e(YRe%5 zdi&A~qT(2E+&C`BJ5}e>AmaWD;!W*C6)K4wZP5<^YguGQso%s0$L;3DohuY_x5wj> z_k#rzA{+dck5~4%=N>qW4RmL1Q3R#9iTId<+-@O8^)y!d^AWJ8XqZr@(vl^1z z^PJ}Rwa^1t@D3%}=>kA*3bHD~?FkLabMcg~h}Ef}q9-gWg?4Y%sk+GM8qUbOWZsmt zKqs&>g(3dw+>{X~=mTwUBV3$u$A}-Z5(BDqI|?vYh}wbhD$1^=&dUaHbCX8`%=H&g zZ~VY=CyIOm4l}mdvLpj5)0V%ey!TuMttdoQuR~^^pR$Ct`5cgv*m*VLCxgE!>&T83 zIrb|TbvR+cxVVX`3kz{j8L4fG@Gs3}LiO(Z2tw*+Ik zcfEaQ4yf0E*o($=C?L>KyZuLrol1MNHSM|Y zk4;!3dNcr7CCKw(ggOB^9z14GeIAt6ZX@*hkrSfgRA$)=IowiYsjZfd`1#a%Xlz=7mknS<8Bl^oPih1}tv#f&z8YGPOl5XU zc$xy~lmW8)ARvZF+rhWU?Xa@55fycAW;MNb!ViGt?W6(2?~`ug#Q!bRn*^jre+mCD zZI0w&pFNW@oa3p4bKx~W{d7>=){S)u7YZO8QJ%p6md@Lhat)dP7vz$}M%zLQf?zj$ z{+w<1REC{V^E>kcJL=I9IW z??YCO5yZnm;sn1cem1z{a#5}ui9hqjtf0j)+3c&#A12gw9!}> z{PJh0mNRD@ZN-SC!4@QmApFuVBAf-=cQr&JB0(t~YvRp}8 zk=@mAaJ2E(>y@OsaRHL>3fM;@UeB~a*MQg~wP`)Jb$pZFZ%u79X4h`5@RAEZkN=q9 z)QmywtG`~2d0bB^LP+ zCPx;AZuseR_uJx;-vIhImFp$&1iU>K$1ir*5hJUJi@uJ)QPTF;dZ+li&r5?AAE#mo zU#YpbsJGBB-8Jps20v4C1;xSlbGahfnrJ+g$G6mk8nu#%5bC7kT%!>uvyUMqy54&~ z%2dOS^Igt<&5#MbOi;aM&zogTKly-f5+E+QH+R8sy3SQGK$I!7vo<&VN?YqX$ysTU ze#|b<-#>RyiSae{?f%vJ8gn%sFEe+-`1tLNt_H}*5TuCq6#Jk6l~rZaJN-ntUVpx z83dJhG1SX#Oe3z__ zu1x9!^=fH6yjJ^*G0I|P%*DQq(lsyceo(x}{hbkKf%v02H@Kp*Z}D;%S6P#D%UO|2 zS(9p*kuN&)O;OHD;8kE|^j}wU@q|CBFJJ9h9OpN`xu2tUVV*vRBNZy!8^1OEc7Pe_hkF>78YKz*|D?33@$DuDYgVN|E#1C>TN_Qi$#|%69;@IV?xWQs|+J>nW z`uBHh4hLZ?vH7-+{gtj~TzX_d&rzbWNw~uQ%NJ}L8=c%Gz>U5Lvu`wvu z-7Y`)GpBc43EN8I=Z{W)qH3nDK%Rb1OvODN4a3Wu$L11~zX>03(=MIj&lX(RdPURXA356)t z)kK|=kCw)Vfk-qGfhcfP_ijioTJ6!8*ft?dZwn`Xi3o0)-s2=8*OQ^-;WG)e`nY_N zjpL->NV5=Cu#M$Up60d3S_$g@93TRVr=^C+Jo%R`MPndwu*mR!ZW$kYqyZnp)`~8m z1bkcPJP!IUlPx(tOPI-FD-mSBDR%DQ8IL#lcVg(s+oNtpKa&n8HNheb zg#mlj?)Ty^Jd)e{B5{w6MRd4OBF&e{&CRxcWuv6yAVc39)=-^tOjnO?zd0K$h1bg| z_fo%iqJMBO7Y8IhR*)A%F#W5TKpA-NEQEO{ztY@DC1 zO(LSl#!iHyzg}2i&YIuunmANQ>`!H#$W=sw*+plU9}E7bA5!ILVOtNzbzZ_+s4c(o zt=&Nz{#ev5xF((KySDv(W8?Q>bT6rObo1ZwER2`bRoo9_R<;BDa%$i0%I~`H*ROFe z;VKh9oH9OZ_>^y7 zILn9^Di7u=&vsZKY6$*?y)3u5`*LG#e=>Lwm0IIdt+RvmdHH8WptvbuC{ zDw(_t%&=S{!Nr(M#Rw8c*u8EjM1zc67v2?sn}w#fkc5&fAu!igolsvg?zC@SpiTQ3 z08L>kfqkh+q)rb#`H-D~{qwSKo}|DZ4d7*&-WzNEP0Slma+%ncEQ!6UOk^qgL1BA0 z$xIUi$nVzcD2NiBZ$MpP1!btr4qmsi!y>sKq^N+5PZhrhJ*(GiYRDzUk|oYjnNyE) za4;ZKpOIKwUSgj&fE0>B@S`;Mznl+JRbQSQ!6a!MIt4kbNh#@c0xmeyl`Sgu9t5J_ zCa5oxFbFi{Nbms0D*XqVe?c0U7?r_-XvL-g`Pa@pJv}xW{eLv%(81u~`D{yFG5+b^ zR%9t{EPz-4p`LIty@wiMRQ>5kuAGk&Ei2Myz>3+VpPv#vAVwm2p;AFEsw^KC9Ij6q z0PlayTi*OUh*%-BJuXW?8I`&J_#&_J5+OqpcI$6T)>( z#QTFK-UFcms0xHm`aJmxv|JUkRNO59%9qjFRl4Jx&utM{Dch+ zw;G^Q?a9x4+USWr_dq`x=tpA2vCcmM_kk_zFj{JXONWYF6#f5*#&5Dxk6zr{PGFNC z2`wEEfl0L=i3B4b_Ht1hJ9xW$qQB4}ygN@`Z(*YT=ttCr`}bIQ3H}%hAg{kwZO>9O zwOZdU04Ht^4&DhA6i=X{K)R-+g(R_RRjlxZ&dn-_(JQ0Ej}l&0U#lHQ0UG+ETjt(> z%dAs;JMLb8hr+&Q?K`0HF}-@oE~l`I2cW_``sxCBCe^v?n}n4jZB@7UnSZ}>nD!=} z2)v~RG(@hLhLL8Yo&a|6#e+djitWXN;KCDer0MN?Tu z6Y*LP1+)MT`>9C`qAsL;l6T@rTL(LKeMhir;Tlodq#GuKg}R{^)OEEnH70TQ;DIyf zmGpTP7)PZG1D&y|!_#YN)PxTmI<(O%Z;3D($_|LDvLkpA-+_V1jPTAl zwf<)E-4Niy`%x=^1&4OaDY=`5;a{3>z3Azh!!ME(scMt3vYHKqovAAZ)Q1Vx(d?RU z99|OYGzFiL!&pYVXNGvjl{A>Qj;21F-c!p2Of3vA5rx_18`d8dr4wEf>NVD74M78t zUVz6s&I2KT(^s(%6lehBM4;}O$t88v!Lhf-)e(1Ekt}+t}Hznq4M+Y?CBgU?1f> zk_%Grixq%gEdM8^W5yi45cRp!9u2roGe}Ce1z4%P?~?}KLh_2cRRLxBMJE%LaPQCY z@=wElnxPE}3q1(6PGp%mIVOCo9Seng$c(5}lZw0dmwGlj<;Ob}XJ6NaZ=4bFzQ7#| zxNy$<6F@0}@a{ICZPlqYz{gBf6(8;Td|iBCMDz~LY>ovIvP%o`9o|0t^<|Ks2!1(W$_w5`mdk<9I)yaX!~G! zC>|L6$|la9`I4=G`D0l@MRE1C;GjyRaJ#)_+PrJEvviME&53qMs0e*52CAKe zPwga^rt=luLn=W;K`J$pJgDhryV}4{vEaB(r%s5wW}VRe$K{(&h~fP1Gnpj1W=GG; zL*7&jmt&?V6+KzPT5Krq;VwoDxBYKQG8@+FssW{rD>`JIs>QEY>an^Ce+_i8TggW< zCi>M{X^HD__t)gZ4}|{%bCc`iyxli9_9*}%sl%f7>r3h<&CZ>I`Dq*LS5~u8ULmA@ zOZB#^7}9g(I!z0PJB}}QhJ+FX!#)kuk9-_9>rg?Rd$Re+fZMZWmYX+uk{Q)J{y1hG zLcXS@{N))eMyBmo2uohhtyf_0|{`5*&abb~q zFL$k?;BHE&u#mSa%l?L^Y+;7Vvfy2dc%J|DU@OS53rl0b+k|Q?E(drd@%iPA(Eqck~s|I{@41Urg1?RE` zUHwIRA0;3O?p*_;EV)xASEAFDCyV$tPgQE1rxi+ycd<8OpAWtUAG-LmNgy9 z3@^)$o(?dX_L+=v7279W%80<5p|wXH&%nIRLuGW@&`x42*?4hixPkeSlS)x8f9ElTeUmHMZH1j^oI_;*xv`|GjX z0$0)!9_aa?+ta`&{=Ns|ir?NRcCB~)h+@5mV(G>{+754>>X$p?`wzSKHFcKkUsX`% zu7*j=RGj`PSPkWVx^_#9l99+#c~A;`MN50EaPN+Nz%kUik~qW$xe=X@8xFFBcabTV z&V@SkD+SV5js;aBwMr@kxS@h;N%mT1#kQrhVf-k2-wCX}wHs5U2aQ?c;vfuvj5N)3 zlk1*^2_$3F^(V~Zo1Jc5#4t?1EB)O|_M_&e1IuKfr5fQIn_!1-jNdYB74g%+Z7N9W zS|-c(Xf<81gI1fMwGFY3`pkd)Greme(XxUIO*#uLXZ;*uy%`}&r9-7jw@PDOh;M75&;;_u^}7D*{Mn&S z$D6SCU{S_cw8Dn6Ir0k^T)M+&7}1WeRo*~6S9sF>GLjKD*7jU{4D-r-c(k~JCm5l% z3x}Brzr=pzj`Cs?)>|a>x)!_Udl`JwX8HlFafrTvmnc+)+yNPXTxz_Lhr{f} z0xnFI*Qorp3(PUJUmHDjT6R+vfvbYd_$o-e)r>nBHpaE|mD#wD6SGpLWO?p}RMxvB z+)gOaoX|9MYV3LW^X0;5n`!@uF3iU&C(;@!I{Q#iUCl?lKbDRMpe2|~p;~g~+reMA zssx@HIElq%+k8^VM9qTV1t9(kqcugrLL~jIGOwmy62!C+n!`mw`JB7E&m9>&94Qx3 zUBOQw+cU|3_u2`!v&uf@{x}%h7jWC-|Ixn^T>GB`n`;l7V>eAK!&G*LVdAe?thm2O z6FEhVa&%6j)V}|`H9y|;*0g@)KYPfK@Q6N@@o@KhU4?B(?X-qjb7U0RWKNs0$!5Du zk`Z2EIizgNPb1OLCpXmIx_FQw(HH-dPAe~VC=OY$kuehdwHUD~-yKZVRUO^MaZ+#j zWFY~#DK}5_%Z9)`Cq8YC=YHW(u6Av7m#0#`M2_aq@WnS6cO}akyo@88;oAG*WiI#j zR4p?%Sh(~$DJELxkN36kFYcRf_%6LX)1|@wzK56| z0kEZylj$7hc{$p<4bK)v+N+sYo;EIHMQ?z7ollMVl_9ycY5Z{Z)GQESzguP`S^^W4R( zHg96<@kI8tT|dp@Z40A!TQL}%RUQHU`+8yIVu19n{)bT2g7FxDt zpVw+jGZHobnNE*zJfJNxr^O=)Ttz%A@r|1*(!{P`AB}W8E#*JE2rXQG+PsxE;m6wD zI5sbLf7+GlUI6C^&f(5WW?i+v%NHzKUBTB1gb_|69#>Y3@IRPrc3^)6pLgsClQnQG zH-@@|D~W2NFVT7!v9u%v8C5Upzg)y({c9rNX=&As*a*Zw36+q*^4v61pvE5#Z9l^G zgGqOglu{rqFT&W{%VkFN_L3hM9pGrn;*~u=3QJ#s>=D=Zi_Um3eI@$yv zSsr%&@B~i)I|#IN5>O3BR@~!Si2xh#Cs9{!!Elm(ELcFotjt-gFd-ftIOD$IsfaS~ z-Xx@TBDg-uefbbv*`AFGP;t&3d0a@1ib}@}4C`N;@V4R6!B7+k`u}Xpfi-)dM4lWR zQvtdwlnMT2m%dcb6gZ$E1u~1|U*D*67P{wOzz2GXHL70=$;_omx0taked>%@1A1S4 z$(mCZHk}}va6e?1zNoMf0$!wJoDic`Vk@0AHu3cWIUT>=8UtbzSg z*=f5g5HXCQYh?BHLYY_Ux+f*n_<94&02 zdY)`2)QZe+s){~7zyc}|LS_isL@%O console.log('err_loading_server_icon')} /> ) : ( ) diff --git a/app/static/images/logo.png b/app/static/images/logo.png index 4ea18f530a57b07d304e0223706bd9c16b358183..d03b30baa4862b4cfec6d40bb3d3fb486d326791 100644 GIT binary patch literal 42947 zcmeFZWmufevM4$XKDa}$!QI^lhu{$0Ex3DdcMA>)8XyGs5Zr?k+$DtI5?ls2lW(mp zcR%O+zJE3&UDI7v-CfmPEmbeE>ZpjRLO0Dz&WAfpKY0AU~yfPw@|u6*YnU3Z}P@jwjHAjT~23sm%jbi{y z|AOGZU;mi`3xWTE0R$An{}&9y0+jV}V8aqrR|S0!0Dx8L?+30_EVBaELwmb7dY*bJ z%EFc|PVDAZE*948zD}-xsQ{wB!Z6Uu+S45D>*VO{A?zzg{SSsP4E~$VK@I)~#nVBI zT2DnCEbZcM4d!F#W#^<82Z6z0QFp7i!kRL2|0ak15~H^D^mG;G;PCPBVfW!-cX7Aj z;1UuN;^5@w;O1t7VX%4lIeVJ>vN?Ou{ENwd@R70huynU`^|W(w2LI)2ZsFqPDMn5G zx1#_2`&TT~zIOi)vcDz&BKxOb|Ef;(FEe2^ zcROoXga0;5oJ;hd3jRNN|JA&I;cHrZxHx+KMb~z=^AzX)H_89V{%=%&>lT)FaddIl zay7TK{#(ia%=(|$>UO@?j(Re7PS(yI|FnyfoA=*T|Fh`-N~-_=CjDq#>$10OywqMK~wLm{xUU5%})OZC{LVm4pZFmG{ zy&SmGa6L|IN|zbjS%GH!zy}tuRwrFaAU}R=q%!Ge~Pf^t%_E4?#a?H>F(&& z(C`7TX=Yg7-1Ec24`o9pHKx^iCqto;@g7^lE(`gTEQs{xv<6Bqh1|-@9%HjM)1J1q zEC-@+z(~U}Ly?SVwdd7w2vHa3&hX-i=+{wXMnw6~i@n|3Hn?CoTyW?i9&t7C=b%aD zKL8*y3REResuYuV`%G_IEHG}-`z`So53t$hzVPXCYLW>&T=1)!lXFKRonTs~_pic) z=e}KVgqeW%nub1$*Au@P_!hu*L1i89g3pxRLPvuVd^y!}PC1#);#$Ornu<9l_y;tX z$k2>gAXAnsIQncYL>5qN*^j|N@uB4O)H^O){5z4xnXsxcnGt3X{olro$b^6(@P?}i zQJ0rwTnCl;`L4bi4}?KxszY`n0x^B@qN{$EpG!Qb2GnlIhI!so04YkG$B05nx8Wm1 zUTIl1)50H#{R)(I-0{#})xW^O0Pf27$!YY;d%SLFpbIAQD_NUH`&D9{QGy*O*+jk& zC-3!%64lWw%L%dj4qELHY#6d(#@>exO@F~81hl6Yxk$AeUk|Jf*?O{pV1dFFwQpkN_>V=ukQE_deLUm^1UkWz#w*<&08`fLfM5v60Z33 z^kDAv=(<{kM|>TZCfP7$N==YD)2>w^w%})vDr^}M&LUT=Hy>9EsU63wOdlC*k_k}U z81Wqxah|c|-Ga!RBz?*M)~f6cd;_o#Kqlr1-hP!K_y@!2-L75c(PVTiR4gUR<4GQ# z)4el;QA-C)m!Rpqv-e9X0Cg@KQi+!RYDeVV1@-6mI4@><4P)SG@dVTH{?E6>sn+3e z0k_qkEoKD9&guRAV?u~3k)s|*M}*YV%&5*w0IHD-f!Tn2mw-Tz(}m`4)$d0E8>QV4 zsqosrwuAE>FwJ-?A%Bjzwgaaxn2YSu+sBJCtx@>dbV^4Tnh)!sOW^GD02M`UmUsWI_%{d!7no+HFf&N6 z8bTNn%OeVowAu(RbU2v#uv2|{J0{K^6J3RDG=hak2T(!_KxEBPbu%MS$AzMB;haY8 zza*~*wm&=Ed=xm#5dDmzoX#7p1~bKR2v(T6@_eXZxo+A$+iMN|$>{KeNGS|Vl%Vgy zyK&3i5{%KMoG8YIodmt_byN$uFHHnZo(F4`YCcrN4FZS`2h<9YWX<3IW7jm}`59}-tzfn6K z9ujav)m-s$J17TFd3LlQOGkf)||0YW>S7Ytv=%sc&wi=oO863qw!wvPXm490@ zmVfJRyG|M1lSKkYfkAJE9}1_3@UX=I7#p|F-`(I_YQ937(t*NT85D+OkYcbiG&1}( zecx~kL%vX-T0OlaA?kiyHK!>P3j};oXcbm0N*wdoO0S@dGH94Efs6?Ae-=cUgE z#tfeyiLLlM9wFaQUFWn0Z&J4;8a|$Ik=6#j`ME^%?xP@pqHe;4pwUuu2Mkt1`opts z%5LsgCX6-Ip(jklSWLDm@KwA;gOyEj@Zd)YMn*1l?G(4z-Gqwky<_xJQPBnz89Zsw%x$^5;Q0r`TNY|tH{ zE^_Fc){Vo1G^NS!IEN|u=sFGESU!klX^0jkR368`R`F(GKG{_*RE`h%k`4~{Ga{@T z&4t3O6IOQ1J;em&?FO5%PQX3%h@x?pcmd&LUcBkd&C_obE#wq3qD5-I_^Y0x@O5=S zG1}k>S)1j*yEijhm_3%GeiL~%7{HpkcS9u(fWifVaJc)Esd2z>fM0rAGZoE*!Jg^v z?lsX)(IqaTl_vLSRbWR3i9Xb4e6+8DHwka~0Ap7~`nitGEOFRT zez|i=Z3{1!BV-`RHj23};jfBQu($9bQpHKNiiL%+$wfB&K?R&pMD(pl`*@k9rU_?$lf8b7NY+JkRT94&uZ zBp0X4hbc{gBow~jS2{tBc07$3V^1Dt<64_z_?{qIofdgZ`R+vzy}gGUT8wbV2QAF- zJfEzGTH%_dMh^XJjfr;yxJ1Ed*gvt?WF195s&S`~Gs-Fu{gRPnxYfS!>NMHmCQP3X z%)U^hQYNw7Ez+>AB0~Eu4V-{2D3EXi=6ay0#LI<#<9dY;ja-jDym?Os9EN?en+=N+ zVrPObXbdY-*jE=3*+fqp{I_2(!sqC8=gYAyaQo2YlggN79&nq-<%%)Hspxpi-x z(R$C9Tz`0$WOd5=4g2@EY$8X|!j^4GmDCYsNm8o~Vp!r#(ocXgeotG(%o1%9`!6?6 zV?NS}87W_?)(fk~^l%TBr~QsEGF=OK>uxJ%5V1tTUb5P9!4SW&hPtK9hg?$(ChkNn z3pvwwCW^pnNwfW4m&8L}T{he_w+fGgqaQyu3H0BAbdX)GAs&1sG2(a}g;gcxJW0(8 z>kSXF;kqd3lvJceHV9B7h2B1mK!|h1<#rh2y4G6*r`f=%+)`?v%-V4MmeQmj%()oX zTYASrLKx0*vs;yd1pC5G1S*m_D>TH6VB6Jmad>lQkz$n?X_}-Z6l;hQCFdO0Ko+sS z$$bgmMa;RpyaGD%Xyt3YSIfz79_nLCu|}?`b^{fxIBM4L_H6|=T!uMXf99UF>>f{# zZgz1r`5bm`*VJx$oOJb}baA|um(#{ zMo|ibovEp$^k&Co)9s~bSx6+)g{5E*n)92Z99jgH=R(O7VOtQQdB)TCi% z%~qp_nSeV_Gc|@|U*Am@AP=NJ}ff5P!2?)y&Ni?+o4PqDW z;g&@IK2L$3Q~SNz)X(AluuDDH+=z~I(urWX@DY2QBmIH_b95*;_Ko(QGOfz zy2$Fowu(Z<-A$<)DmWnques(d&uFk8*SxOd-_Hn*vs`YhpFKaKCeMc>6_&g6_U=xJ zR!^4sF0X@)H8`Oz)J6nGXQ9Tmmtq~yd-AJhM3%F|X6p?|It%tgU|r>V4W!3#)QGUa zRnKPCgCLpHEdddKwwhg|2i?b5Rt|@`-ygJ>9GPV6M(p&}NzXKWYqz8f4-gMaj)bI( z`oT=`8x&su=oxMdKN>mCcpTH9)zWnamFtzWeuXoc@zPO+-tx=ous3E zwdRSw)G<}jVoG9U2)hg`&fTYNuZ7*dTu55*;m5ZOR)ka02k^9^*3BwvJTm;*MQ+dR zW+|CVMyh89h*905DQJ);7BSiiqZ?09-JCAbCZ`4b9s;;6mG z&m^O@%11`H(i(z-DZ!iahbQiEgwm=+y$^426cAeVbksS0HO*?k@TEPOuB(FDabbYH zd?}k-lrqE9A>KZ*z{ju&p3|?+d*`|6_c-|R4TcOEq1&!^U39RuNkPA{c#(^zpaFVx zQL`&C{9!-uk%SU#T|Myg(}xfg7bt12z1x;g5w`1?s4P$bOvk|ZG-f;&e8_ao zuZsAosa~(Di~-;U>EIo-!{ca~rC)$!LCZQiIMR4o2Rb14I=yP-#o;e2IBI;LXmBwF6!Zhb zzaD>EUJc`BGmQ~m9g|bVHPMoQO_>LOpJ)2Dk2Kn1BnUD}>SN1X=&?Lsb42hk77iy& zg@p3juf5)vO%{?42bE@hyBf;Ar3aS|myI5TNN#RSe3+O2&Tea?Ezf^c(?Me`zQK}4 z7q4kfWjZdS2$*uAlTiW4LGl&uruK1H-3%wTcVUz*O5pry%gDqb5ibv9liLDY_hi_G zp=_g4M5Jv8o3{_-mDh9!d1%_G;?UCG<;uZ!X){aA$Qew_EQPfm%k3U5PtvH^5lR-x zrQtQZ@_)DaIGm$^F!7aa`kosk3zG9k?5TT(Z2GUgx8Yv1af>c#GYX%koc(6|C*l#{ zlRf_ql_YQCdi+=kKrzCz%|grOR3}hQW(ZB8&>6w3B8@KUu6&JOz@$nGvwv@k@Zqx_xPqXVQoU|RvG4Q zie?wMJtdAU@k3V-q^G);x{N=a*_?NWm5&cD!n-y3aFUIvnBlRSoPHYhzniIhntwG@ z8!AfY`c(D{A2Cl6#UW1%K~Bv3Qum1@*{W8-{mM( zW#eIa@TtM>W_VHIP)~QwW@|rhavHOoiadhM%zM!mcnNOUSB4?RxGQ5n^ z2+2qkwN#<>R3S_f1GsgbB4tRQzLzo{CRXj|-fT2WWKF&8hI1CBW%Nx*1vC$H0hM-k z&*8rEC+=G0{Bs*pXn~Vb5n6{e3$H(X(8Ttrs)x|UQ)fGP08&Dhl}sUk$D2xIQl$j>~c0;IviwvlXKA7hLl*}&NA;c(g9 zxXBR03TTx0gJI^ool129QYOQb^1#EsEJy$#5wSnMTkw!z_lUYewms#yK2S9CMDPT| zMK-ts*%7yQMnMv3C&vD1(9Bt2360=#?N5dJ<+G6GMst+9sveL_7!P=Zsl~3bm1#^3 zSVCQBr2JyH!}z&sb7W})3tD5nN!j6e@9^FZZU~E*;JczfPNZy_Kp-wV{#ev$DE+zb zg7+ttwsyU=R+e}eJuQHx#$5?V2R$Nae`S(#B{j&k&SQCV8F%7 zD=~wl0sIieJiB|0Z3N~dxqT{Pqq+`SmYB9RwFSd8V z$1eZRZ3cdnrEeWD_bs*=UxnVLjUu=^Z;d0tDf8oP{q^}&z4D#MZ9#CCyaUA2fOeuyQ~gt$mz+Mo=j7Y)LgOrxKe?D3 z{-%Z3%27xZbRAd5QToQS#d4f9_*ETJuUW{j*L^K_IxSfc0@O3v*b4UjM~>hYOrS>Z zKYya;z&@9*pfC!gtJwLaKFpaO^CuLz=Qc5qE7v(LVToePKSj5i21G)QGe>d(+>~T+)a@4^|QXmUQ(b1sfVcB4PU_} zfxK*YI$K0PIk1qw%hd68v2k_7G_}$w^oDve(>{9cQ_mW&=7R3IF@6RhO{!?EI{ zylx)D%1B(DN~aW3EKRLuM3ICt+hBf{5NC*kd!+06JOr2WYE(bw3DKwtBX{%pLu=5k zgu=?m!q55d(RREHa7anElinhq<^}^c>g&j`Z&sp>ho1vyXLFygQk49PyATrgd1kQg zM*$`>A|IOZy@UI~UDW%3RARKrijt7PG_6RP8*w#{yPORsny)2D?XJ0N)+m;L@K@a} z6}|4g`AFw*%d%S@hDPBFxka`LHwASYBw~Xhc9!;DXwV&$6+Q2*$IK>Uxsa8ndkmMmOdS`B`z_|w&YT>?EGo?<1!Vqp#Ss3 zVp2;m+K<~}7kQ53eJu|0-L9_!%OLMhAO(|5N6bdQ#s=nRaAq6juPoV^Ro{xw0f)V? z-MB~T2YJzVDXO>UE-JbAqdCQX8Qp%0x)I3uY60oNbkNnL;ApXwvdinq(l-85wFv!f z+K6uw%PnDAROhC9%zNnguhS!hgjSsz2i~b`pbs44*lJ+?O!YgdPK{h?x(z357<1zH3@BhJra&{-(BG3GWf zDCyjq`t*o2U;n&Sbz3RR-*8?nmrfHSrCIPO5_-Z+Uzz3VbPe0n8DddKsXJC-MdFSO z3I3{S$qqjZ$8^z;gR&3MlBqeSK0G=%6e-RUcaw5)*?igy9%$bRb$O7#!%=Gm!-;dU z&3vALi|1VWXzH$GIMjtz@`Yp{EGt--Sh+aV*U0UX*!GTOT?G3z^*L2ElyePv1^eoO z3+3_g{JFlj@M<8fy&wSd?L)tJ)eu6v7yHU*6rqA-+--Iz{Z5N=2D&yi6*~|jF=m{% zNqXLLo~2Ts`Jqvd!i(kEvAFY>0)KMn^Tq93qOX~OH98NhcZy^VQ1l-05UDNFQlgd6 z5h(^t6vE_w9L_-LrBiET2@qu@*6{n|>PkwSZa}48iprqD#j^-m>_`B65HSN!C}Bmr zXVt}Y*V^*3TY~U5+)|z?L$9Q|m;wU@9vBQXjfl&>{8)t%isjH1)q_g?6o=xM{pT#) zW4?2j6FTp~kyY@ay{$aJHAp&a14V?Zmx!~@nnC14+FJi_51&@2SWQo>!JZ(dmryO6 zcN;>S4h7M6;qk7QQ;`ZHG&DNEj!<>H;IN_=>2DWgb={2 zS}Zt)z-g)KoI5x$`aatd_f(W$fJXX1qHfv%0Jc zC$yfUH(gR(^9LzUi-=0iADX+jGB||e3hjB;C{6E42z4T|;Z&I}TyANedMi2|OyFhC^^46{Y62^(0^J_#!hf6vkbmE1@VQVR1_5d5YUQXxmRIypF)OiI{j2xBw5}L% zL_}^`EO||aNYiJUAmJK@jzUVw2dC$^twm)beeF5loE0>f?@GS`YPzQ_781jJiGXGe zMS4&VWbb{3kU(PxmLYt9f(oKpaCl+xY{PGT;0a{k-#3~<9#&~oW9kGuif_hGpmmA z=+A(Gi3C-2DN_Uq!ff5l_r0NKvIy0k7_WLK+NEA>hBv*RSVmO1nxLoP-qe7p#osh$ z_+g`OCeC+b@-El4Ca+dDff_H)%1EAlE`ZSxr+Z1T(l0Q)3K2=Pl4F;>THyc+Ix3xh zW^<<3U2EI5!}I)I3#aWgLU!3%IqcB5NWa7WBL&fHduCo}%20TO0C08xN*sH1=!5tJ zcf^O-zK_|A?0ti0kG&9I|KX{HuJj)Mk9k#w9E5EM%%L;IwQ?jOFA$s)G0~-&v5!h3 zWiktNB!^jC@)IlSIbb`pz|p!!&~z5&Rh#V( z!_wVKS;WG~TtPQr1Xj=OHvD;X+7Dy^c{<5Sf6mlI-vCxxji-eV&FDsAc+i17kMqlh zOB%g^l&QGun>27vdaXMpSrvLm_RCg1PooI~@HcDJ^}c2VTRyWEf}TMhf^#2!?`gmula8D8fco-50EoLxpb0`luZ?{|hViAIY8oj*$9S6Z zVMbpiE(t`_q<&N1Z)>`661#kXIDWFhORT>bY~BB*9i)yPp*6F-Cp1GuCW=X&q8G-z zojB1N9-rBvYNvrPM}YFos|&>JV+KFd`gWy@npSTn_i2}j=|61J#)*rrXPUo*>5d{hs*ha`e52>yudjuxpg`) zcDQbS-<{?c=sD+#khf=~H7<{s%U=JQxl;~tzCo~YPMp)qJ+t?PJFP(++cx*Xx-3T6jsE*FJKfmtDBPb1Je}?X7jO! zOF!?7mV>0rHU|7K<&{*sN$3Fez;meB8|Fu}at+j!7U$7$5JZcAwJ35ZzzFH1X4_ob zF$kf#tw@5gbq3mv16|Tt%$Tkz%{f5i9AxgbdJZ}%c`B==TqOCTZ5ALa~Z zv?El^J#9fa-1Cu9=fXqkLEtV(F$!2s`_SkDxyAh%cjNQrr*MLJKpE1&tHobaJCZVZ zbYM{MA9qvEmnM;#RYkfjupHBi0wQ=9gIDv)W^ z=(LNNjbsS|@oy2`WO? z$|l#W=ey}WRj4rZcN8{C+^`%)N{;(nv+UpmU%~t|u z4??<~5hL(7p5g@}Tpowj`on?9-j$c;Hdo5ETGwO_`QR!-m=GG6QToa2vV)#>*8^X$ zCKD$*&-L4ZA6E1)<54M^S8)j)|SZu!sRcICEE;8_chL zdNLunz%s@5lEZamJJpKj-=Aibzr|VeVChn+x~kq>W#}*R^qI;%tK2ooGJ3>#K~a{D z?8h&Id0e3aeyugEG3Qx0-E+FX^_Fwq{GqqdaIdxX*T64DvNGb%q zQqpUcS|02qe{7rU;B1}*1gaHC5JTGZjZB)L4!`vib(Oc+lACbNc0M&*Cu!DLZETu0 zL6y$qURIwqD-On=XCxJ9`R-W1-Z4Bjx?Fi(-JWzhoTh%6oeNGU4Kd}TgR8fon+$u( zVi!RTsxF9}dH%s_fzqpiJq!HVI(y9G<28M{y9Ne5bDS+`zi@X0 zR9P*K!``opN;fyUg04H85I$W-IT7}zs=o7L)wa0FN>p?_StB{H)%onjQ+=IvuUpJ~eGv@ZGlq9LaMauB`?z)=TY+uEEzP(k?jDk*^ygddqk}#k^^q zu4QxYPZ{;D>;6rzDzvuM1#S-fPoFkzwxYx(0YO3RHbV>rAUo!rWU zg7qA9hV}R#?ATPpRJ<8=f4=ukx@~b^jH}J=)4kEOZHQ}fbc5Xz`pweQgg@7m2G9QX zH9cj?0wNHobf#g8Lc>3t6n|I=BRrqViJyd43Euo@m)I2`i(hmF_LmPJ31=Ba(uJG$ zzs}JQlq69y&*KP5sk%9E<(V`iu1P6PQ7l++on{3nD~W0#P zYv64)biDB4I!uPz)YJ7wZ=(j}L4K2&*}L!&vRWfViJ)S#KJ*;Cw&}|7>bQS;29NK9 zRs#fP(?b?wPAkZUH%h|ytCtfUC@f7=l1SMn!f44OUcHI4+ITsDKE53vQEeY?nRD32 zkLdOMVhPQ=Xzu@k^#j_~UETdMr3%%b(n)$C^~B>^Eo0yeXiE4fUOR*&jhOH`?}sFI zWv~%)WiZ8^-+f!_(014X*7QDUx;P-wIh1BMna=HE{=-^A@YvF+Lp@beRY}I(c7^D` zuY!7~;eJo+UIpAzeoWuA&zH<4oLmBIHS-8!9__d z+p^|sRmw1OYol9ed_#HQhO4}2MAN0q^~DdE|A3OEuT8Vp9KisSLzy#CE8=-$= zOXE&cALaz|UtD9S7q3Ky3*0&>kQ!jcMdc+Ar7ctq-a}S(%kZh*v)WkL%d+yTM*o#t z%8~3IgT3YOG--5p=rzJ?Gs`CzkN;KQIhU|k%$*N+Hu%L__v5kL>66}Ba6sJRuEf8`SzQsAw{Xc5wSxQc5xZ;Ud0gNpJCys=W|uA_@~oXX46 z(VC`HP5G#Xs~4feBNsHJxf?)4mkT9zJ>ncwl;(|I z_hc@vZ~-5|&X*ABmDUA@&w#nybH*99FpInR%wOczfy6l7TS5gbw!v;z5?_xT(caV* zTK4A}j_auW;O65rB$V|b@2uV?ESJ_8W5 zGGgJ6M0GBI3~#n4;>@cKKQKD2t!mr~9mW0Q$~&g8^Qjus=A6Fn9|9Pc458Af**LsE zT{_-cPMs3HK3w0OHeJkjR{}f;mrI;WAA50j&ov*9`gUU<dbKuBF~H8YRwsK{;ItZQ3}ZEI(J1Zm&b9b+rNtNTKSXSN?RF z{Ko1(n$rkNoo!$jYyETiI>Qh=GRC?qJpYDM#739r$&F7gqV8<>DtsuPY(MG4f@<_% zW&8+U&(j0HlV}>GUkC)v%l_bzQnU zvIH>P>|t*g!1(WAXS;PQs*@D>fXvnEi;GB_|g{uYIxO zte5`d6riAnPyN1!dMV1&RR8flY2%1u>$`-C57w9z%>SYAA>PN>eRsUY`_UU^>5|zH zR6aSt9y%x*i8z$mJg@uX%nKG`j9U$$Y5gNpTZm{@j4=H8INBf~f7E^LNYrNQdHblO75@Gp6q~7zk!h0Cz`udh3qK8u$ zpa&6K%uB2emvH`0HLYQZ+7fh{NF-Q2b(iug&QJA&@#~K)LCEemq2RccqLVW7D-P@F zecIz*&O7zhC_WaU3yDwnzF`QtaS&W<7uV;8#g!T_22e0-Cg?TqR1*e(&k&I~izhlDS-0ra!Yxxluv2xF6(M-Np%4tjUd>A|!Sm%6F5@ zg%r%z5XKJy1E}BETOMLLXM!Ulr0Opu7l|SzRH8xHfC;aToXqN%ar^|GklYq5HUQtC zzwOVFwU@0hmZ^y3b!lI4dEW>-MoF+KS!7+%UHg*NuVj|X=!OiJ72#Ovq6>7?l%5y_ zT!#&_y_sYy@>|jdD5k{gjGVx)91v_h7su|vYqTa{!cx;t*Wc*H64E`aOWFQ4H_@uc zTQF4R`z8{Lg|MxUkqhVf*=^bNOU2xAZhjl}9ZdSm<4_XRPl+L@r0A6t{G0dmax11$ zeOTKrRml}hhpwi8;aN(4#GSa1+-9|KM74>-jL`@@6&)Wop&yGk{nOqymOSV<4T+A? z-?jKZJXcjSjv21JTNM51i&c(GjV22V$#w=RQqrQPi)3v?F@0Ck`g+9359)Ka%)B0F zS?IYhuR2@i>R8*U5e@c5finPLN@}*_4aU)nU{{ppA4%N_cwb>vOQ&OvH9D~*6iaaR zbvLxBoiK7*!yM~!I4L$JA5!RoO&^uE(eJ2>&qqc9Ij2fv=2^vzA@1%Ee}oyt(K6@P zRrIyP7pUf5LBurQU&ak?9YEtgSQ?I%Oh>%9Fb3;^nN@?gi9ARbHmYRrJUj|$_$a5+ zAWGOV{U?NLNf-hhC@_Dephbw|Cya~pH}znBPuxf8i{ZF(TC8BYsiZuJG~)DErS%92 z{Kjwi{z-eLnf2=)NOhwWl%yjP>3qFG#A|uR-M?p%?CQY=s93O;6Ec9~x)`Bt8}mn; z*SDqK0`Xmp+Rp&hV0@XDhK+A7y%|}|mDqHFw($Zg#+8c-aBmjl%IJA^S!>e=vo}fK zuqQ_OjA{sm;DiXS*z%m2=HS|@=VY_}^W4cB{Ac;ry=NjMAl7J7!FO@7a6mQ9up29S zcIF)3nAIptU{nF&CoCDE$oSDZ_u25g z%rZm43?BhEdb3Mb*LdH4kNpm~oRO;d$|@Wc-OAAZvCDQ#W!Ul9+^kTe=|GRY2+@qS zX~^FxD4*-a#`y7xWHIvG<@03$*AueFxd+a3*=ydX{t!?{l4eRhRYkkm$*xmSc3TNGSQo_E!U5O^|FRv zQrAx24-NGjyfmk0mc7t4k*KBhSW&5y0IY6qUZjQ4DW_K6GK1+Vfo7tEukBXdH(YXQ z3e*(a40e9oegfNLgwf3P4Ln7E2(0u!G|bR(ImCj;AZV9dGk=JVI@7yZOxVZZ2 z&A+2)Z!N-N2-uV%QP47uua!1E8Vlv)`2m7i@0nNOLzf5diZ%CU7V`+ub&4dPY+lE_ zsV7Fzm(7k=`J$IVvie}WbO6fY9qlM{$h^wN4zPni?bSbkF#@!JUmboc7Xx29G~c?wU$4PCm&bVOMPAw zRNC#G2(bfPeO#g!`~$zm+tV8}be{w25$sL;ZKF6)oi@s|5g~NzF$hiGs$a`@&f z1PaPoU%5FeJNATkqPw1`!n7fUPgaKZ}4KKBEJ%fy~2^11s_crCuBYFh`8`Xt_0 z4vsj8QV5Jgk~f>h@gHu!4~d2bvGO$)B*C%m1*@*>E}Xsxp&WqUfCSV=^XvXM5f?b!2+m{WCGSACDI-*(JJE^7rqLehb89UoCoiVf$AmnS-Zgk7RZq7P1suK zpnr?3usZ7f#JEOSF`e*STakTZ|HhhL3HG=MH9|rxxf|SyKurg!)Xy95VFLXh>YG$K zI*IEzbFxT0B|z0X=d?C*3T^t7@fRQGR<%~6CxeKM46?&2#{-@MolUp3a%biLB3C>^@H$&HZReN^l%o;m%>ku*?@T=mT`dr;%-N-!p8X>etyg~9?aI_w@%tUWdqF%4O_6E$D)F8Vih))# z0w#nz_a}OnUxu&o%&8_D4U1?;4esBi^I`bW_FdoKXHDgvsQP0Ej#PvuF_)9-NXhVO z>wG?GZFbS~Di=M%B`P#8wYx~LgZnHCKgu|Eh%@#=%8GSCd*v3szy|~aUj+FVCdHw7 zL`Y|x+7XaSS?$^MGLjQZnPf~!;e&nHinrz_bYx^J=`wBZOR<16B`KoZPirCPfEaDj ziPfHX0ud3bA$u(9l6=9L_c*y!{FpE$bIcp7THA(6bIjRLT~`<6A9Q;qH0<5c3m2~- z@8U|nCz!BT7K+>_Z9o3Uz+YOKC~{@xxNTB;_2$GMKPyC ziJvhLJ)H}wFU4rIeO;pdrug8~U8`G5a#eHs(% zBC}So*hRyP_*k*i6{(xQ$9(&`D(F}WVQ4dwZlKYKWNGJhll&Sj^?Y5+_aT}P2nKf0 z!d%tk>k5Z^<9*An*4c)j&+itm6k}y9gQA4~<9`8!@G3*C>72j%QRwm0&EvMP$0>yPb+mpr6F{`${5cx0uxp^*>)LpN zwr6OirT=JQvH6z@$=E$_#8SKQsuLQHe-XYp96jwfPqKZXUqJ%F%=d-uS+x`Tt2(2T zvDgElZ9@~;kI)B~R`dV?onlZ8^AISi4ICL9#q#cv&}2TxYwaagcuM+;cNH0J4)xZ& z;e%3a6%VWOb*W|bXE{L(zTOt=GZa0vt^3lmxuWOA+Rac zd>a$Qw<%`*w&lsB>G>?PPhHwP-KGLZ9wk}^IrsTwqnf2?F4ter*_>hrJpEaYOkN{z zhhYTc9s~qTG_4~~TaJgIyeDlkshU`m;12ku|2QvD(CKW<#H8hcO%}+Mruw``C<9Pr2!3w5 zDX<|s(~>0ib=#xuY(FR*dKauTOx@QTxeGpoJ+!DpZieo$fk@( z7;Zd9XytKoYwZZT5UhHP9H>J5e&xkWV^?vHrq^VK8Xy(*83c;x2?Q7b!oxRE}j))kY@rYS|~)HH3|`y7N$W7Fl9hlq)dM2 z(tp4b*zZ74Pn9x@G6)G?mA(#XiPGZ;W2AXH?t|M07A{>OaX+LjssTG~X(Z7@2Lp9K zra`vBX;SVhV5t8g+NPMa9A&q`MhB-}9PoKDulzG+0t7c^WF!3`Z!W;R>6x)WGA757 zepIdR;n{9GWgYHRshpOk~wKsT@8KBH)9|` z1z-%YMs=wKS&>7j*EB#$)>+J3O`A=tNY#d$XT z^5Kk?!HBdT^O4X4EU&*jQ1%>eae2{-uN$rsSf@cpq6n21E$wb|oUaXpW$BQmtxfM- z!(vIDZLkPn;rd_w3zz)0C;?KQ8s>S_q>U9sM*fSIe+G^le40LsXjuAT^q__1HAW{mYOB=lOY`hW&t^sFW92BCzx*?H0=0fX#$KXk z|3$psUM5{ni2cdTom!__!P^~vZ($g2HW@B%9n%;(bR~jj%SGMCcy`p|YCTPaKL+P@ z6g(=^Um6JD2=(WKoy$JfD8VOd(M8Z;nH~a8*xw$+vb~C(sb0@BdSB%X_$Bc-`PYGk z%jYLP0d>03hqBoOv%8GEF#>;&YuWz{)4YuOMKFtmsK;TXp-dBbO0691T5^`L1Ry|7 zJu~FecZJ6FT>&QEG(_`fwqpqzjE7Pxjf9v7zC*= z?(JOqdL#Ji+}U^c+!)u8w7>+!eMcqgXCD3v%%r=3JrjO{=_A_7N!u{u5Ak`qA#v z^cCFou4HW3#Olo1Cg&S(Y}j-}y=z|W{Oa9lRJ;7CN)Jzi5%wp{I294r^mI`G#0+1r zLLwtu)+%H5_ODHzEutAG%aHbUEm?$6Z66x&2Lmz5*Nf|c`N;ZtboR>Wz=-dQ<~!L> zpiYM|cf$$seOl zm<6Yl!$=(S8q}vL7gGT~mXBUq?ppCblvRjY$te)^F~WX82hSoz#4|3Y0noSAt*H;n zNXfEJrPT~kgw2ALgD&95(Gh6S!!o+UHS1NG(47e>FU#k`E5EGMA* z`=8|i3m+_9e=ErFdLn2ZR$$1PkM6~i%z9ZwObmE2{Ui7jICr4$YUar_{_ z{i#2*GrwYnnF^@CHDahRReqy|`EkXbeR%ku!8DlkZ4DWD%b*G&tFaD8&p3a9H3j7n zO{BqnLX~OPDLEO+8a=mU$Y?5Iks;%?Pn!S&|BKcMxjH=eK z-ievfKOXS+cD7vx1qUNuU)HwQT-c6WPjr7E>{{+$jC^gCuBeQ7r)Aog!0Z1+c>Ie4 zWWDaMBUM6{or+(?l&ow2sa#Yn)?pN0vATGc{b!y7-7wxK_DE%{*LktP1+Ye((Uyy@ zG?`Y~tX>7EX+9O^2yBW0hTL|IF#*UOFBSl-Kb?94EOAojxaX~D?OQT&Dgf1NR@q(_ z2SUhV3c&K}tR7=&jLH6`k3R5#Z&d;kRkM1HObf=1%=?>5>!LQ*C@Ae2;H%uTb#h&SCUzf z>cu>m&@CoyA}cX%OD#o0Hnbs8SX<+$EVqNF@so|!JK_C;n*f%UjsYbbTJab!fmC!L z<1KvZewU0&lxmmJIF9-`0GLNY=HxaUlmPRG0?ygV>7&I zh(;bOmnebOxi;mr#{dfrDN7SI-eHTHmJZ~wg=^N6N{2E^tG`*w^fuNDhFdGF0H}2I z+I8Ow59?##d?%x+)I8|26bgZeup+>DhbdQaQ|(53Nqa_WK4PIGySN87ZJmNYa_dPk zFalm^ic>=e)SgP(c*eRa*`|QN{vtp@i?9)s<7hSCoUNf^xIfoAyi2%8YP;DFK{rML zl@6d{UG*?9$eEfK>QMg{%z_F)EgIE!u{uj`Q`0BbB8NlMtYn4paclvw@`qm2Y-cJR z4!qnhuE_m50v#C^T3BHuj%L>9?CM;4I;<15^ZCf` zXum;r!jvhIkqM6Pip5BKGj^wg0`U5ZATrjG@ugOaUy1e)>1f**n$#<8SBsqLnkKe_ zmi)?Lc`wG_A(XwkWco1_$8io^2ym#B~RRqRhJM2t6=)9Q!}~K!zesM z!XJZ9)$^GUGp&s>1OjJmx#*%cX*+4d38k5WA74|53o+ma`_Q-p@N+;v*4y;`9bR>LlNI z{iIIlNw*%k2s{U`x04L+#8h8J_SaYiBRr0uGVKIRIm|(jd!(K^d4l^71ylBvcI_Q! zs$YXmTCVPnV=m-u`*>_h(`J_1R*`j8l7e88Hi9$Y$sHYM$H8irUf@U_{tVO(s@7ufJ|0cmye?c))33eo20Q0JSTz{|5C?7M8DAsu}C!IsLH)- ziro@_{8AR%P1~}~a>MF_d(5{ z>EtUfDXbu3FjgFsYgah!AdmDSFcmi~1#^geD4H|X{u8H)Y4)1)9&gEqloDA86e3(r ziyc!OPwLdrdYS%C20W3|QUjiP-zro9YCs(3>axhJdg{lb5zCyMYuSwr4O?ZNuAl3- zY^N{HqkriOwX%1`RnJ$M!2aYA`gagpAVct(+1G}4!23(J|DD|L5}^%y@}RviRv)s6 z?Z0Ni?<#4c~H{9xd>W7<8DED0;K)1 zCLtd4R2+s=1F1<0LIt3j4VB!4%EE@^W`I&R9U$p+LWLCwEpPywJl^VS#g%&??_PC` z%uC;VFSIUOIwB}wFU8o4)u&%5n4WfbDcX)*2zSOTs-I02QUr@Au$^d|Nh^6Cs*vzd z5|uQ;e21(6z#zMB&)85IMtmbvaWIhEYJ0ig-w|IPx8aCCZGsERu9d+p->_*pc^J$@ z7*tK)kBrY#6JSea5vc&wpjjaL`{12ydM49z*C3CBlazU3nSVuqxOgtQCiAZc=UU^> zaGWYY(MPnM=N#F6tifi-!_^kjM?nxl?~0x`-`8NxccKiv)c2d0mF+y6M43EXc^Y?4 z%Vty%diEM8@SRr z!SuHmU7={ExL50TU@(d>EVeZx&M{xNjBA!rC4w51sfVQtO`r3dmX03S)iW>k1-~&I zY9aI_VJJfvV2=kVc)xbcI@8+w9E`19Rg@K>XW5S(f7|ugjH+NH^VrfD`RZ8OYjw=V zo-Md1ev<_Y*k4j6Ty-R?(-14?F;k-&#D*A|R1L1E>~+%aMN_cIu^m$Y#!6R%oJLGi z`a1mIuYz!|T%0UX9Px*|-~a+t01m)WoeyQp*^L`?uQ3A}OLleA9Zf1&Cw@YFU2!y* zr~8`9d@q9S{;V9D{bka2zasuU1dz5KI_-|@cA70}Yc9Wd_mH*{r7_ke9N4uJ+VO5NiK3sb-{?eg($t#G( zFFpP09k|gR%-K$g6hrI;hWix7yQO{Iwa-hN8BtZ0C!*1brCt}9{H!75t>E>_%EhwemEQP>k9LX7(8 zI}=SQb-$mzIezY<=ryKn4ZHntr(tjf%JIG@72kx^@oItsQ30rOBNZ!ipAf|_#R>p! z*18;!NHRE%qEp|Qw`PklLdFeyM5|S0B_m%5*W8Ac;$*k7-NPzJZ8bRF5msE-$_v6^ zd%qs|-%{7aL|?6XA1)m;@+}nX+^uWY2bS(_cRdJN-B1>|$7JhUHwdGLUfJ7sy_7p& zEY@BaSMqov8eHXv{;#u+Bg@hnJUyfXX%mb{|GRC&nxB}_e+_pJ*)szd)K@QpRd2eh!fRoj4uF29YKfZ zd4A;I`J?q~zij5ai-o$4!WUyiDHf6T_1E1C)B8WQdlC{~`*pj?D)(}npDrVRw;bv3 zWY@3$?|P4TjYR}XK(=?~4RAobLCONNSKV0{B(O@gds&Q1qieDouYJ@^2|-|1a5eo) zGS5Cempv5$4$YR-vJ|fo2Q)1k&!NPecvkXH`rJm8rP=eO0#M}^%va{DF$J(CUb=>x zwaR%MDLL31B6%o79b9Oxse>o>k;+o-^Gf_GMDT4`bv;JDUz5%rg0Ecdd`3u5mi@WN ze>>)$S1g9YWi?>_5iCOKkiFj3pDRZ}F9c5p_gJ}J-Ld2&g0|i9GC}D7@;UpJPa1BO zRU0EPtnSy9JWHYexE}<+>2O^MR9|N$0E$p1<3S1e@9g?DUo1vbA$2 z>%Io79Hv6E5#^>{x7-1hhqI~j!vM2R(Tnm$KA&$HMeBfy*5LycfT}|-7eiMwVy0=bEou%mir}!Dp$=`jwxAa&>ciCMOO7by5O!h*ceq zWven)By{K2uYIzCqddr%Ym6K&4VJGehyJfH_gohxAQAp;5VY`geK8D!KRA2cx;^zW z{U3bWqdZ#jo_5>n?HCij7gBdCRt0$Vumr@?55nKgW+0G$vCsCG9bCSa`CM57sG{i2 zGUX#vKaHuIi8zU|j{R~J_|KX$w2H%X1AtNis4{fvkR-|5Z?|5?n=M$ojuUl@1z?vV z_=t!44O){`RgCvxI+A2hnK9mg)z5fe{O1L1m z@w%rBiv~KonW+G@2c`lZFX><*JP==Phk}BeU+#-q9ndkXSolZ5Bju9)&ROfOttdjR zWBMP0R~cm^6vu@Ke1X%AvHwe7Dt#)3RnJbj?fO^65|;G2LuKWgQ4^p7FltnzzfeXb zi!IF6TGkU1qoj`7vO?HgIAy8hr`owUm=d>27}5%Uvnl|d@MmEC@1xs(c{!AT@3v>M z*quxiovM4pV#zSn%cDjtw`wxWn3;hZ3*} zQzNj781rmZJ@IibN4SqM&z;M_0qoHrD8D_sam{1*pZ^h0)zJsyh%8VBjj~KxzxLs% z9KPMx`tc5!jF*BoP!T#3n~9!B+bdBx_vO1! zfRpigrAYMN#y9|)z7&0G5Qa}lA*{;O#6;^jS$|IjpcXB^buRh`xjXd(^&fxhNH&YX zgECLbP;8Yjq*9s6VMf1D0wgwmcKxb9E(QKyy0){g-OY%1pv;d?RQQR&@I81L$=t4V z^5tmot!=liz9TKde~5+nMnK^_q4x)`-n4$zLUfE@fFr2g?zqVk!3nVt!H+vRkYGD) zPR1>T!MAqx?YuY{`CstBH)}b{PO3SoSB0`j`{XvQ{q+l_-4|h+XpP(x*e?M6oKX%Z zstAB3oIo9f+j1NWQ!oFJTfgcu69yV>&`68Wr~r-kqRJq`&32rJX|Opm$Y`7e09_l# z{Fsfq&s3+<*N(Spll^y80BUdt^dtc@EWH^U#mTc$N6y%u7SjOGK=L}V2z_A! zMZ(4$w+lEAVdVE-u=pRd@4R`ha8JX?{}2{p2|(G-DBiRSD-)Itgkd*4V;_+^NVGz! zlL+y+jw4MQnft~FecVr4ShhKyEcM%jI1HB{{r?;3D6HbPCd8^k2H{B={shgmvS`B1jKT*UcV) zUFw`N)~UZmOroZPYM~`b2e)@DnB)2QfkjL5j&}YGq!&RMm?pAc;>DxW##^+61Q4qn zm`}tFz;Kvognb`?giAI2^4mW+d-jo@JXW$;|eyfW?s zi6<*S@FFZM!$RhpabsA16b#_YpWu@JkR^|jk60V5V!=!YB>A@L>(lvs?xgJLcf+IU z_rOh_gE|gs5~|_=DF3OK%2DY8nfj9Ul6Fh3;Op23$c@gU1_UZMrd94*{u4|fzpXzE zFp@AqTWXNo!AZ(oZPvxIq))*_{>9+}^5835<+CU`vRj#S_)@3A`O98wxz=S6>+{eS z=O9w-Y1k||BO@3yL4s?rlu!Oa6j(cO{@2*c=0QmRA8+j&{HX-Bk#w4oT`Z(;6ya?; z#=c9JyvcT*cY3zE80On^Fo2tbz3N?bq>y$HefSUOArqqz&Q-5K_&***!957D^J6T# zyh~6S7BcE@vXQQ_R8-0=7O~5_R{TEPWZ&&5_d={^|6SB;HWWa3cS!Gm&FX8o#5@PwGr zO+7MhbRI_dp%B9b)s6+-(>vU@)9lDT9^2{8KmeUKjQRqt^ge9nyVZ}%&%?z3JbpIR znMnJ|vcqN`T^JTv3Od|!@zUG6XU}S%atg%$aZrAyL$c>ImNueu-vi2}b=%nGb$NqpBh-BYEt~H(X%!buBs3v+Pr#5Y9#rg=t`tu_I>?_r-48 zj$YX|;BT3ORTfEl2P>J$`Br}2-;XUrKjxwzE7h|fI{+>2MFio>xh22!h1`acFa`v{V@OkP6=y_!L3np z!whUNHTB+H@0uSbeQdLFO;dRr)sSgoP?NGG56?FE0ZcP~02cfJWQtMd80&Gw(*OvU z^;I~AeR48u%hDFu9Z|^?fn^+;@@RlKfaq2Tx$Y(&-H!E6IuZ*@qDD&KC9VWNf!{>e zK;VmIsA2twtkRG^6#f|-4DA-#=&aFq4i$h}wm>oVo(_GzsT}ymc?QZr9gjFB09Lns zxB$=HmJL)=N21J%1SSQ6ih#AF%pYS3X$O2{8s?&JSp0u zhLz+LKn>wa(ztoyMcr-tyW8&eZ2N*fI0FKDJrysrbOx?F?{n9Gx9(fE))+67CjkPLU225w4FnRXe*pU3|U0>!$0wgd_0{LrOp+=_gqWP35WxUSa zyyYJfAOR8>A^?k}yl=~8{t6+JPsFHOe3u$F`bWkg_Hd9`&G)x&c+GmT7s`O=ko>PF($LRa}mMzHZxf(#65G=bd^h4KHZ!2}K_y9g@i3?Dr+A$dt zAb}PjV1z41{{xFwoQ@vqNstZr!TiLIU^Z z98aWwU8ez1N*mj`N?d@~oiMHKlcv-abKl4{;1wi50$aU4{v)Bq62TnKokjOvS!rBT~HM%6Nnm-kQ zI<;)FsY-TxZavnsKGNnOJWu_t016x61~BhU&DrjkOw}bmJ`WNgfyqlimMTNw4|Xm4 zE7x`|?hhqsS>vMqNkfQ*RJQ*0qv)X*ogEuQNlE(9$=guXuQ?Tf>N7oJikskgrylqw z?rCckwjjrKjfe@LT-lQVvAzFbV8N0P$wNhlz#}#pzaW8@CSXGT%Cf)t%U%m5;B#Uj zgsg3_49zyLvXfOs#k$aP(KlRyA5Ir2fA7A3PpQY#zq4yyF8M zR!-NkAj*nd3p)iVwQa91ziC$Q4O_UmMjiPxD-uWvfh6i*xpQf+=eP?oIFQkQLstl) zOgf_+O#SPZ-~jl>DYsq!O44_x1Y64#gBE}~Hl>)^WV9XM&}wzY^(6QD$JoZgn*YDO zGl7$?&JJM-0c2A#GO~>bJe+1pcSlEL#OARio#4!KM&I~!#^?Jyb(|D4 z>Wt4>)KSJkMHAC1@gV%m zi3|TKn$W|u5mAUYm}jM_XBuJ>QqpmCtOgZ;I>H=NQOIL0$3?b%tsnYZlb8}%sizDD zlmmDo-dpTm^f8mL=!_2T6MAXCeUtZ968Zwpr-AIszIsXQyEMx8> z^WTg5M1&{y>^|n9}fBSF|BU>f=xd7#z(fRNR3rPyE8|hitDM5i$0(K(A4@OR@T=b_Q*I8OFfQB?SZ6|@e)uQQ6yK~uw zKfpNC`Tn-<#q+2Hr0uF`PEN(?QO0T_`0lgidgt3{#k!5>`ahf@Z}@V3HAt19|27QtDp(BMASC zG0Z2qe$$liBdp~75AV+m_MZ!70MA2C`)kytnxK$rR1?#E9=SOsF92$(1EoKWHMkS6 zumlA{2?;!9AMFJ0s`ckBJW^bUq68#fIaYuKNMOGNjPTFrjd4-#S^RBy7cU+%5&x+Y z{%D7mtfX)|+MhIy>b;CIX}`T&zXJ%nek>2VB(oroNe*>(D4~v8Na2=kK&1P15vNqxx)Pp&-0M4;IS>b+%x-*@4g(*DNYMJ)`J8lI{``YYgu_@(Y18Bd&$4U^8diF zk2yvuN%T|OKQJ)D4%c(aVR(6VaM}NlpMAB*@cqOSpa)>$8ISo4#>I}P-Q3`^8_H4i z!*(|#(*hG43XqB$Pk@3a!1rZ1;FRfh=AMzBC2!#DfH8L~4VT6Bmn&N~*;t6&mKm}koB*PC?$u>N&!)w1Ui4fBbt$qj%o*@U+^CSVA8In~sJ$pz0fEl)6ZjnU0iV8rY`1f)0s#|P$$p4rh1y6g9?Lh!1t|^NWAg)Cy zCP-HlxouA7`ch9{UZyfa0f@Mi@ILyKUy(o^2;d%6MtDkY|L%qFM$q4VuCm`S6qJLs z3V$>^%wg5>au}?B{q>Di*Z)A`&$BvoM^hI;1t6u}7cUkxN;eYzU>LI$_z47BmB*jzkFQprt6DVt8jWRoK_<}p7!J` zKi(b;{h1#IPvl$|K|VTFDKla1yB3xbMuhKqrna5Q$198nIe$w6X&?~0%Eb^E=~{SI zn|6MYQTAyP=?}d?X5XaPiz}AD>y-olk+o{wpBtV7H*wrQ4Hs6m4k^BPQbZ{QRWT0& zjQf=?yy`8=bMFnKXeQPTkeewbN}SfnS)d%-ez6!uXK)xG1s4sg(6j`^>bKxU6T$z& z*}b{Lr|15`Q_hD=VPJ*YBnM0T)LYE=w{4~D*Fqhhog3_bHhzXRZKt$g#Zw|YT99m= znSGxL zl(E2$Rm*;aG@75td1lqX)ZA1E1_+UY)IySgvkcbt>*--?qU(!QO_o4B)*lN>ziaVd zVc!F;ZNIg;l&{3qr23hS8y;2GQO@61B zHn{vBf-w40yVoYxK;lV)D*Yk1zqT+GaH{z{dv;2^6O;97VY{1!z)n{G{3WNt^8cCZ zI)4kVnmrPRX`bS@6Jq!PLp+ll)cbP?`un=c^oL=LoetuM)DWPBmYS{@dqu=j5Jel& z_ZnHizK0B8m!>2G7;*wQwq>h_fAIW+=UldWb$RTq;*lgU`3RU5{CZcbc!=+9hZH{r z|M{n|=0;{1X}58!i`Cy8&uNMH&tyGB{C_KR+x35Jl7i(cs}oMXo^6g6(*w{P{j^gp zjr6y!F%N~uUfRDHKIpn`9@aC2e}JLAv`6{ZbfcN>m+{J>f7|D8yZ(R3H`nBi=0Y!E z4W_icr2>$)9vNeOOr}8O2RIX1wKkOf_aY`>wI~6&+mciQRH!2uF!uB*x$IG(dxGg>o1m40#IwdR{vdRaV-klT1{*Tc%ub9~z5d@VhUJbS=8b3d2>N zZ6A-tdXmZ!pfUMZ9t_8{3}iNh1ja$YjD@eRjPqLq16HYP$t6mamU@nRD$?Ux7{ZgW zeyp4E`UZ`74i9ysA%Q^)SicuK+6!=Rq$`WXvry#tv{udzTAa(tPk_1Kte>K(Z_MX1q%V_(f6~XU7@Ry+yYf0wQyn-J+ zCzgLl22=e4|IsbwV$WfPfmdnyH}@q?4?uJG-%hnRb~hr7{qDXE%68ym6c0dSH_<3% z=mB#9+sv68?SN=(b9uH&NVSj*wiJ{j?Gj*ruePF)SPeW0cg&C+jFfk)kwa;9XlklSHy5~5}0oPJ$DlK zHX8xlM@j^JCuX!%$M>VH7xo>}=BP`t0`}Fo$KH{Fr)wk(B0s8F{4F5(rJH03QRgyk zt{((n&#b)RL$Xtppg7J!K67hc0#pE+x9@hVd0{l^4%Q1#PV!glB`bn*BZ1~6V50d8 zSlL1>T@0;BOSX3}d>h>SS0UHcWw7>-)lmq+ADSTmd=0OcY89`lw8_c284O~Smu6P> z|Bdi4>3x~xM=phy*r))sL^oC%Ar^|fgW7I_jgpeU2zG**pkyH+)JGJ7q-s*(!oMUi zRsv>mp3Z`86*?oyw29wEYyaDoGiSHEU5-*$!qA_OC9iX^h%uedEY>3ezo~=!c4wml znJl6`bLVmb}Au!uKOj|0Nk^pCIiW z34D!|+u{unYrplLpJtk0#>1jsuOKn;NL}2-`sFj;lY{7=6;@^dCZhwOT2KJi@2DN$ zkwD`K?Cjbf2;(t*%POdC-HYdWI=T?<{T|#T=Xj1iU7P}N@muA{W77iKHfIi{}pMhndV2gf6MlJ+%PHtF^Lv=ZJ*wLB#iJQg37RaGLJ5t z6;I6<4bst>3C#_-I`t`%OpBe;6iEPM+@{Ulu2!nO5%|5mwk6kG+&@*<{<_ZIDN{4; zr^E2?bS?WL9DBOwW;!e#Sw*<`eTnLW4vqa7L2JRW{oOknCV~z-DpvoRP^-T7JC@yN zg8c>tqByzH?my$6Rw6(JpjCQPk^o@{AnRq1f$X1w@MVc$ZupcWcpq$7|1ue>q5w2G zUn5k|2C*KW?d)tju2851H&)wa9+*bpbb@zY0wD1dZjB&d`es*wU(L#g^V^uKf0Acg zZ^un=0qpp*(KT=OoDA*^nYss|UzxKnN-_?q2z~i52{ut)opu*4e;o~MC~y4moWd=y zoALgE>*(^I1Q$TuL@EF=iDrK-U~E%_zShSha0zRSmn+fu4R4pWBOQiH>zB=`5o9If ztj)N^0!FMMzo#z`^YE&Xu7!7EK={6rwtn^GhR2`8chv`GrH%32aclN!Sp-RxFp0&W zQZUX7K>A_;!oGL?JSA+UPYl-`0$**q;L2m$UHdeg>Kt3y=i)bS^=xOF^Z?eZw;=4I zvR}k3S>x0n75d|>T66szQT{nB;~QAfNGT|Pvh9xLUzP@#?1lvj|K{q<@z-{eD7@nb zmG%-UH*g`qn&V$X@{SKz*BWoMf~Vp7hw-mA3`HZS&ssI`ygay@Q2CF>&Mt2aciCqw`yIl5m&2^p^LjJK9FaLO<2a{4+5CN2_-EmmlU-#Wf=)74ei1@H z(i+kGCNNbLWcfE)H=~TUds!Q^8Xhi1{+~>_W5ut{wV5{;yZL^y!kMh?rUK9+JueSV z>CAF>-@RCR^qlIN<9HG_bc>Kc#6|$X!@qle=$v`02P7F#(`_ahjI|UV6s7&{C0}wK z=cB`Zu{sUR2otbYP8*ski!RCL2S^H|)LMM|1cc6m_~x;46h8TS_|lqPhYeyNqr(TX zLp&uI!jZSls4z*r$GVLQc`L81UZk(CTJ_>F*;Csk?&2NobBeKG>|PKJ{C``|wh z0cuWR&{i(=QDDmE4;TVT#|G57X+O z%vT3*juz47a?D5gZk~c7f+enHsd&q-JbwBZv@J>xt4m9wxZ(@yf;%haB6|P z81^Mh)vK}a<-B6ySI=K9adN*@t^SOS>3zS&_4gs~_Uj9RM6NFe`c3YOLt4+9r3J15 zv5?M3v~#I@@ueBt{@!rli(qNA^^a3x)i6XA7X$yZxxxO=#KRKJg1A=r7kd_eGi$ql zTowNN9ZC^tjGIXwxMG3IC*)%gr9d1aRiyxe%MX1dShLn4j^KI7ueA_iPvX#L@S7L> zP`y|TM_w+>9vIn|auD-0!d6`6vYFWyo#ySRu$51e97?vl`HMeGE1&mz>sPs~_kjfF483RKewKErmW45T{5^()i+1k;x`mxe!c zSYcqh%%^9yL+Uac!;D zCGN^^|0q^W>V2MxD6dBN+fbywn{nLUAz1$7_2 z&&}nWDb|!}Q=<06+$cH}g8WdpNDf2mj)6vc43wcGVZYBolV_vhGr<|n6Im`-kG9~w zg0L5{C7u;rNrnza_$lni)WM)wiSYL_2m}rv!-(8RyxYG0Q~7bTDdb~nFb^6R0o+&I zT7kf;U5h$qD*GWkWZ#UjP_e}1soKa*9@ffH_E5?4&zv@R<8NgweT=9hFgE}IBqvEk zK~z>@BkQ@_xnc#X*Xngv^t9jX+U~`}<&qEk(%bFeaqbXp0K*1&K_)sQ^~@f*55;4k z5WgX5=j2oMOn48W7(yr_Kf8~kx8eJ(keVCu%|?9Q66kQV(rN>Kz6m2g+fdGS48x3I z#kyfg)e?p!M)1QjyykvnYu}2>VH9|N)^_CNqnpfcwB53Y(>qzq!4j}KlW{VhrNS(x zcIK3gf0k-T#XBIWr-Vw)vaM*QV>>f31Tr0Bdlszsneb{L^4^+`dbCMg7GRu@eA89ksg|*N?&?oKIhP?&;V5?xd%0E79s7JH*L$ zWW%k*$p(0$+Zzk7=}NsFPs}&NRVokDSb9wK>1)f^G6t?~`-$JJTMd`CJjuu860R+y z;qPO9Pc8UJ_ULHy4_({o!3>HC5&jh>=C261>JZHiIR~p>7vTwjAcw>k*=PhL4!|Br zR&1VQ*$}#F7LaRH3hgKrLq0Kn={R`0`jVXNekCap`%2?XBWf)hLgc^w&zl{ZZEPgBd;^1Mly%gyO4KZ6?~ zxC2q>Z-U~~(!zhgPP8drM)q%UwQ~o z0Z30@98gWF)7HZ6^RGM=!nO;`n93OKXlT{}6*k_3F*h5t-X+E8Pf=84b)Jv$M@-vJ z*=80yDdhc;u0_W=cC^YxrUu56Y}f5I$5rZI^wTWJtUVwjX|M))J` zY3W@{PQhwLx9xrRKbv9qzY)Z!J!`L0o2pIhz4xl9QB>`!){4FNrq!SnHDZ)firBSl z*50)CD1u17@jRbD;`_ssS6=xo$$id!UFSOYIq&y*V^15YC|N~RSkE3p8-(or`}Mnk zq45U+>sI^(r~QaKDH^?U-*QIM!!Yf^>Ztm(0t&tF+3%|D$5 zpp2*Y(l&PcA`U1pEtlW7E%dhqLUdVT#dSU>$aHTK8GQajN`ZPICzhXZ@W#BcBDMMt zPj@G#dr+~>92X50>jScNjAi%;UF-(dn{R)DARrKLEFCe)RUh7iXf_`3!91PB+ zyn^%@55=0VG-%6*=sX$v$*GTnO_WnDmCFWuc71xz#mzP)wry>C7`I0UWf4Qvq;#)= zWBgCsEVbJlP6y7f8P+7VgfrtkBrvVlZ5#At-%Tt|SUZ@t*ZPlNT9c5L#ha+t4TI7y zcQ-SW=VY3WQ})Gq_fHnV0y3HM=B%g(PMS6V{d9z8T1|`{>;{}I;FAPM!_*E3?YonF z)0^pjQl)Q5CmgAW3^l>Ln6Kf#$Viejjgk&nISpAPgm4I3lLyRpwQe`x9zdSC98*j+ zwrZRRNK+nl?;UZ~4emiagxbmHoCtEaw~M3kUQ#Ba=*Z3e+dJdR(me(k6~nkFk$HXT zT&MD|D=s0bk0!vbQP|TgBZ0g_2eZMVq}wa=K{V`J%^nOezQIN{-+9cPsg()XQxBUp zTsD*_D%$&v{-=Ainb#T0MH@@84^k@rTz3)&+E_%5e!eIy^v37H=)3Xg3vS-2EQcI7 zJv*keoZ0!e-oS-05{ib1-HEkgL`6cKyke@rOUR4{I+h9x?a-6$VqPhJ+23dl4y3d8 z@t=#tUb~j!Q&~?gky8LAH4D{hi@A)7{|e;mVTl?KW)2>m61{$QIq^cCDQnDOowK&l z>!8IUMq1PUB?7Lz%JoGRm*5FmDih>ZZ`lzy^gQe0u@$I;lIf==Iwk;U;94DGF>m>P zyivLL1Bc)0_^Fq4P6&#HcJG}Y`3zAA2WL1JPz0ZiaF4)mY^Ex?XuRbT>=-{&*^zx9 zE|F=%a@ggLhKrZ8bc!0G3h``cYR?miX`x~EQC{y-?#3uOld_LS;y|$Dz_1q#j_g>+ zxdQIhOjOgc+aJ>D-3wV`zBz=9ZGRh~e{5_1EU#RwW0j#28&HX<7y$^moaG<=-rAA9 zSf;lDu{!QAw$WWWWd||RqSFX8GSUz7ZiR_w7Y#g@4?6GCz`-t6KwDegjda&R+VX$d znc2I-))7y4(G)^xt4EE{m&+ee55k8tF`Xp9Kc!I;QAQ1Rx71fT7y-^y=jGIO)cfYx zK30~%xh@@J%j)U^nwy7jp-GkOa;}q@$e(srn~Jx;x3V(A_|0F=-aSNSr+)Zfaqott z{RIItC6ew2lKiz4vN*T~Vj!wtdyqbluW~L7-ISS!jPTx`ahNM7@rhD=y)g;ZlMJ|U zvIXPZWOd`%rtEh0r5Z9tZ78I?U9wS@ZD|eJP5}3Nl)eW&g3pQH|8c)vWu?ihzZ{Ue z@&6F(?<8PLg1FzyR`!rwf4oZ=bwvtCpEZl)S~IjBVytA3{&5@=b~G#{G+6AtwFIi zC!UCFuhYYHs6JS_PSmq_iJ109x4jPwFUgW7+a2JKke(mw^D<%L#1KUUnhFOk6WmMn z>AP0Soyxf(DRp`SEE4kMkJBEwScIKg?SyU?Mi&5K(+WvgKS1MEp-t+#UywMmLx~bq zf3Ql8m24!$gnT#g!ec_vovAHc!(V4Z^N#++h3WT=p?b*vV z^2-xGhSO9odGGDTRF3}Rqe1hkW|~+QnQ9D}f6y#AL|Ho5^23)Ndt|M_-zxEJ<3f+rs;zP84UkUNb%RE%_UX6X_?9ZN`kX#w^!Vc8J zC2`IU*NG@s@Wye--h?KtZ^D|HO4rORWpM-Oc6K?ns58#mBNG44#cj8-nxlS{9d2v5 zEVVh91oIKTYLclBd_D7n^>~+`@GB*@wXxg&=$-?p>|-A!GImz_QMQN7PLu35IeUN% z(nU#vWgq0VeORWs=18NC`Pnuf)_g)pX{X5srl+KxXnP*HvVoG2eKWvzL+Vp*{OL{ ze$R$Z6yX_CRG98V0{~&GXEfJOanV;Beg15lBu8YGbw($AhS3JSKALw0`3tv1e~LGJ zSyFo3EVCS7`+7vyKJP9-u2?wx;sMuWAb^D|IH!^{9$zkHcd}x7bt^nKr-a6gQ#bV;4<|E`P&z#xxdOVj8=TB-RrD4KJz+FQ?F>UJ`^wZ&(1X3kC$>fY?SPw~bf zd<*Tcox@#Of$M~w-S(s?A~%ONij()wYr z0nS<4PL32dr+^Xh>lpQj_crStwubpTIWhKFx&2%^uh+4|b3T_6FILK(|{xNe#So8Xh|6y(a0i_C6oZ{Lw0zeg(At z>JdE=&3nV=z(5+!bEE2%D9b{L_8#FK@Wq>X@vuyhu@8%wu6X^6%#|&Do?{wFiY2siPI5ko;@k@dcm*r=3c` zRj(NTuP=skCeJl6pdAOIFV`yJVBAPAEqgM+h>0`VZEICHVB-}e)BwEFv|KjhdL`cL zGN@t=?~}2eys55?yz3O*EX{x_iWOQFo}pQ&ps$W?eN}DDq1fyQePFvjy}wuF#CU?g zBqf3apDR4o7NWPmvwA@p-uF;Zu@zyV`lh97!Q#RqN2@>FMiwUZb#!k|R`*6tS6M5~3#*nxdh}P?XR|z6 zYW(XG-=Jae^$L^B7|3^pnWta&+Fsv_NMbd-Cq-rC-8PnBv+P$nU6{r<3xJ$MNNa*C~YEQUl1Z?hq`=W}Es-B3%%W7t{mH`Sr0>899zgttLZowcO0 z_YdI!4YUDwZlpi*vnzOW_zD{G=4iTdfMsvNL!*mIjDRClXlY?Ug+dOe!B;|LG^P7Q zOxE{)>{5lEWl=T~~v zg!AsE;_W4NJ2lslFuqN38fY>}z~DEIH9gpn($lh=jpZ=!Sm?lj4`cRbwTk?#Bf^nc z;MU?f0<m$-kbkbKD)S*3r@+H;j z%oV&VnOtXmVJ-v_*WaRM#r+GA&K`I*5V8DNHUKF6_xOjWnBZC3Uw9G&^Hlj_t$!Tz zUzK2;QDY+vBOm3>rCC7g)h%v0G*!%`3*UZ%*KKaB{%zBGuj}37gvExHq{eoh%oNP8u&&N_7||Y3@daAHe2=cY4Tl9IAeJ_Lt;x*HNe#V@4rl_=rJQ z`_Ajq&C#x<-PNc{T&PBDX)kwelWtkWd^4@W zAy~34ifFecw>Z4K5YdLZcFKWq)>b|9hXftAqXn%g>MOQKtadKMc;nX zL=_la;*~!UqCM+`jgsa{5p`49uPsrv@Fy zLhvE}#tk_^cN%|<0*&$R$^&n7l)kJkTa$2isgqzug{XB|;Li3wq)u(DC)(Di_Xp+I z@`y}4m(5YT#6{Pxudm%@Xg*?@oKN0TI*NnQ3=j20hADqBuYar`_4$>Vvr_M8Tay>y zNVMr*eCM@$R^_J;U_jfePu?MI|w}fGGUuzb<_}=s+#n_i6*uKUu=c zc$SFGvg`)DS)}4jKil{m<0DM*cPAtNU@qBb@mml>sX8g_7I`Qc%uA;3(|JVbfO~bg zAx17uT%1Hyphq2tyTtX^1jftIu)RHQ+`ei=vSQYe32V8RvVIWG9N;r$+SV=x&nHh4(+u-xOv45_VKB=+MOho=XSZnCaeb}oalU(y)Tpb4kFDEd- zXjH%(W!J#{jy*lg#KNPGuY%$bse(M0J=jyaYXo8|$KP2#mwNQ~wpTSq4ntfcX6QfU zD7u_vVZOb|tq6Z&7vYG!t2jCSE4w(e=c$TxnW8)e^*_?x=_#r(>%Sci@3db0Rp#+c z7$SDLqx(YSmFzv!g|b3*UBc_`eaVixpDHkvySpuq}EEiekyiXZVuw z;1?KmFtOA47&*1-R((It8AUjOTL)3!l;I#HVLbYdbe$VoN_^};!1g%B39jQlvD&h* z=m5I(OWA*}-?qh%QeCv~v?3Henxb{*f3NZ%Rz|7Q*gJRQRJ>?`lg)*dXL%M7oM?#2 zzb3AUM49%aL|*hN+~)k_l0EuL7orfFFM~dH9~B7u>`KV5b?>tvc15x-yRM{w04ACa z)KX%({(fF4UCwuTKdF-`sX0iyo=4>>=MYE{UzM(k#(G<%J(QOT^}E^(*G6h()p&WN z9|O7%yQiwOkl4!)y?S?tL1d>e|n5i>qWg`oia~q9eu=d zSer0Y1!LhaNRVi7bs)maxC02OUW)A4{Lhl9(F$V;3%qiF>dZGQi}s77KwA7Pv^k!t zYxkj040L3+FT}Np0@0pbYfSS%(1O8L^D*xKdVUG!3$Lnf}HluRhfJj=&)MKU(e9 zIJ)X4(s8()GMaLeZ7;M_(Q>Mjw(OHNAy%lt<#`+D+bU5jPjKsbg zJlp49Np6mS*hOj+pIUrL- z47Z26x+FN>5#VQQV66U1dT;f7E-tS6UakPzP12Y%4J8d^IK?rfsNmTR$-?_h(U0H+ zhR*rRF(zKMo01NpWj3Pc#t^AA???7Rsx0`Qrny9+6{ODiF)?PAM-gtis}M62Uk7o{ zZo54?&kB*qL1s&D>9*Rsj0N$Ijm&uY*%H9-GWw3C`I9Qjc^xC6kq(7S6UMeQH z-HXNxVv}M|x9tZBQ+<}1o|P0_tQT1wd5gCf@-T-7ph)K#`fe&^t>X>Jx#LdXr!o=5 z;9wdg@QoRIR~0d}JYE$I!2HM?9?V`i((V6IzK1ulUE3G=aes{UQiq$mfH?pz!1f5s z9qj(CpmCK<1=LU?YgWRIu6|Gs)Q7|wyHQMSuD&&G`A#Ox}}`ze4P*AVxUofoXW zmZDEP_t}gK9_krTS@vD2?HOm;I`wcBlDM{|BjjQ^jj ztpnpwE8MERJ|XDU4$Cs!I|>qZLJ?#&qq_V){H5I~OO8^&0lYpaiNSiJ4TnSPt|4yt z7u*S~epiRpl*PwvMZ)AgsC3PJXcXTKJS%&cHTnI^>btQq&F%A~rnush?0fI_D`KKE zJzMfFc|1Yg*<6LC;(cku)!juw^)85QX6*D8FYXB;+e>DlL!cNbA%G1zAv!53xC+Wv zmCsQIC7*eXC{7s3*Vsn>hgnX6HES2T!11D%cjFl7>$~_C{YdhP?%+px&#L# zWZR#^U3%SFM}!6Ch5+&5u%2HCPQ3_T*I1{mP#_~vLYP$O@k2xYri1&G!7tU_!Mxs_ z*qB9pgUMA4Suqph)XWPSWuE^y+Gt)`c-L3ldU@bR9!l3TB+ozjYmv!jG=gf07vRi` z2Mna5lg`4S+J7WmLOs|z^*hzF`)(8@eHx zo9lns!%zvZIeIBMtV7?)a_e`fAWa8`9m*DdN~QT}jUG}}P#Ptd6<$_Ca-h`pAHauS zZ4glm`B-#xFke6Z4xCYBpz)b%*QanpV6YScIZ3QH&d&g^r9b3N-X9W`!=Cl`_ZK^O z7+_ISy93&g=~ribjNMEknC!Oe1V8G>v^xB|##a?;4|ox3vzQbT>Bth6x|x1aMhBI{ zq{HT+e0YaeN(r5qq5;PLX^J60-6;DCgV9G;kJCO5b-#?j6X2b;QZ#(u3y8k1fe9z$`QYvnoqPY6@)azqPB+%WU;r|Xo|E!vl)?)L4 zo_>X&O*2Mm{jn-StTArBv6~3D6yp^0=6z+uL?us>tA&Wm02)&>e2SwJN&DBzu?Umy zliomQSr~lzgfFU1cOVEq1?6H|I_F6=EX)$Ro1765z!R;qz@3o7jngSc!m)b%TGwL+ z@$r76Xxcjf4~~COnkr!8WA7AZs4J?;x(6Y+DLKI9C-j}PjR@zE@agA-io3X48Cvry{q<6 z6)%BtzMLFEl^Lv^=2*#}e{F_DxL5Y_()yfn^Ih7e2p79{3_XJSEC_et?!VFVf1m&J m!2dk(KM(wW?STnv0E(C>9b|W$_O}!Z^U_k&SFKgHkNAHPrEJIm literal 16300 zcmb_@hd~% z&U`+7f6wzDJYFxabIv_J^SZD5y58^i6{e&0fRX+jJph1FRYg%3066p&4(Mp0kG=&odFej52TJ-lSD+sVdj(Ae0Lr5nh)<{ikW)}qRM3A8 zTc0xbKmDNMh|;<0_(cAF8~x7~xF` zxXfcPwu4ljK!wzJcA>QS{O00facMm@c2X!8BmjE)1qduWDA{f|Scw#2@uYugb}@+C z<-}KAChZ=Um#(51C*ESkUCA&Qu+;tX5g3=1_S!JycN>x2%4dxBc5TgjwPR5V$%fbS zWDe^K@wZi>ft&&#!KiHG?;)=6_(pYhx`P+x#V=b`d)&Cb?OL5HexUu1b%1FXa+ysKyRsIr7srVBY zYUF$t0GjLi@G?yInMb-Y)C$Pc57<)b>IL;_0qBtNf^Ti$ckU&3`qp*FQr5p^eD!~D z>RHy`NjFqLQxgvWYiEUEW${fvvTM9NM8r2=h1ozS90)^V4`#JR!uV<~Z+5(PfrGsI zORPX-S5OPJz3EEFo4ejxSA~h)>l#LtR8a#RWI8{%E%lM>ZFfP2=bCs3PQbX~h`0h7 zui|OXXK{lM>b%0H@b_Wne6}RmrrRX`c>O!QmjKA%E27P~icQR~54gGC z_m@e^^|~8$B<_dtMsSUnPV=k3rLO`olyIau&Il7I@HLqsp(g7E0Xknu8Af0mJ8znX z6!RFLE*>uZ$wvp`;zudZynHRt`R;8(j&`&FYjfe-$)lWS&J1D_`c#mO#gflcHnOGG zVOOxfP7ecrs0}{Zj0-#>cPLL6H)eBzp$^R#Kul|6iz^zDap&vQvkfxtQ>m9OHBi1H zL!>=JImWGL|88ve0blwh9EJOzG9%DGy*e7R@(?yFPLxyc-IS06+;kx81Lxt%LPTCq zsfQ8h{yf6nDf9$zM9gRV_PLVBcT~YmxDLCQq*~%t7~uGHe*Q&uDXxAgmGB5XXsHev zZ_J4uh01H6WV;P6((9b7<{$7ohKw#0fIjC81lG*2yeWBU#~3~69?{yRUX1`VYc%6< z>1ERXg8izEDw@SZi_6@f{2`bPa111|qH7pLyl(EV<)FMCqjf)DgY5g+A_6ORm3cu4 zS}HF%YH4ROtd!Bqns$hcK>uAh`I&W+i!hLGu44f$@4<&r&Py+0Gd4?F;Jr5dxAeug z6+5_;LOvL9|LV05IIDw#{CZ`cD2k|c7q9y`9+paugicmev`<`{FP+tjyrOyjpzzkn zG6t6)95}JyCE;Olk<3Y+TOxj(!XEn9UJ|A1`9<i>S6HQU7i7^jkF~1 zCazJvT#NkL*TtjObjx#wd?&QV$<1GFyFv{vIBHG%7zEd>-pjo?^rZs4Z|`IQ*4B?) zZlr)52{V?hCx1GW<*xjdyQEe6?#j}^9!sj=n&0Hk&2%NCVMxwV> zu?5=jr{C^{rKKW9)tVmTT;_FCYPi#DTMf5mmr;{W5Av(gfQwC#k;UQG&j?H`UZk2q%mHdYVG5a6kyV4d#8}2Hv})p0xaBB4Ko6a+5tQ_L zrmaFFCd#S}{xvo4i^>f$THJLZSD8{Gl<&RoZe;~6h5)2Sc~v~zV~jpwsiLR)-vPx^ zgKxNR9}fw_Q-A(qL0gG%_fCsJYxVUIP9Vb`*k7+gV4bg#zs~XBU!Rn0&w`1iHwusg>SyZel=Yy=YhnTHt&T%kWVKqIq^GQ!p3Kw?^(saqm5 z9T>`XO6AUbt;-KIpn0BU>#!y72%h`f!Uk|lX?8kbTTyctyZmSQgD5Nm3VCc>S3*Xi z?_&BeknzJiLXkT#?1PTc!e;=W#rVU!QtI}*nqWTyN$oy!wyq&KVE_OfHCqUCd^^5|aXePshJW>Ci|sN+L5+){s`9EzasD{&)oN`U(VXoo?E%b$(E1rwV*1%Su$ zlvK1V&ncldx^A$+=8s zK>zK(Eo2&J9IPBS^OQOsxSxZDs2Y4+`-**YzDMKrg_sO~@S_j%nPj&{K7bC-RCPc7 zeH_kw`({BY0_Z#`QIN2F-fRG511Z**Hov$bp!u*Rb~ETroP6u(?m|FW>Fq=jbf|*T$L2eT^`Xag0C$9WLpk)E#fkAbumnr+e)kITnD6)zRBj|Zfsl|SC zQNS}CJM~CNg}V3*zsjk@%)hIL9KHjt|9(aMTHLfU2>+3Vkj27525Ir7I zisc^M+H}=EA3Q92u^xKPj zksRk%LTg5kN2&3(#zM>QH+NT-;yG8&t8T|_1bK`Vwv3x{LQ4N4hIBTy8z>-R|< z&qn2O%dMjw5x>CFh+08?l4S|x9Yt6Y@HcX$J>7m9w zgP5^+M={P1BlG5o!DZXuz2ts;;v_FjUjF3AJ##@q1UgE!@?XF?gQ3M(_izUqaB-gA zVaJB{&pf8jTznC%r?dvoTZ}*RR}-f8{Tu^s*pB3-l5mA5BVSB^c%6Z+2I>AkU#_5! zFC>3{Tn{6P5IaVm- z%34|W=ekNg+Pd9aqe}DrVO0}g0UB-18QKn9*DH%d)9^X`xm`?VR))cn_l^d4a}RUi zDnRTyB1r#2mpn)KB38@)=D}wLKENRoD(n6=_y$%|;ZYloQ-zgV+10HnSY7EN%U;OP z`r(PEo(ZRxY*~C+u-E0^zrQfHTiVs$)_1^q?ijsW-WHM9(DCzo#XxoV^!x2;W)^Vb z6^ophtn69iC+{*&XWkL$d!cn9320juruKuL@;46i1xfv}b6)TTM{$!Q)u{S(t6$ z*c0fVm82ldI7%ali!MDa)>G@^fS_0~k01L|M}-A`Y|B0k8%o;TFquozj(nd`(QJ(|Hxjy>kzqLNnK zbY(kVym2n{;TA(F(PZozv+%S3(tvizLC3mvSC+$MtHc|;w$mw7?0|#W3!&`jRP!;| zbg}TIdJ14B_D6OF0p-uWBjMAF$G5MzZ2n#y=}ty`xB;E8?1q%y=C{QZH?cPUyO~V( z7I%X9fEZkyK2pP}Chl>=xS7b5p))VPc%0pu5@X)zQhzl@;E0NYf8yR=e|&uQ#~>Gx zN6mh{7J2qL&Q{mVsnM0>7v-MN+Xx;@(EzO>Wb_~D+$hnzD1QsJY<=iSQM^A8U>Xb) z@D`7-Y0RG7f}c-<0IX~-_-3p}b3ao0H*LlV|1%YJ_WD$PqDFOwAC=d2`G7YuU3sFe z{s5)zJt$ zCbjo#3Ox5C*gGIqN`+F5{-tG>^{1lAjYZuqo|}XMkf-?Dq228{&V-YN!QlE#=w}6o zfEqoD&p8s%TY=@-rx`R|_7DH-Z?I_*Tpk=Z!^F*Q*rnk(4MajWJz6(AK>ci7Oh;g*LpV;K%Xi)U=U$d>+mUlRm=)(#JL#m>uX(mSu&^;pjP>s583F zDQ(BWF)14RROlfO{VlJ#>Hpg6%_-vt1QL#g2(uI;`_-v=&Ez`A&Pr=jzrPC0a~;93 z^IuISff?s3NS&@tx`WzwjpPUy2EQw&VE8J@>94N+(zzu9Y=&5U29@la{B7@)qm}(^ zk27TGcOzj6*7?A!vmzhob;m(+EDE}^mdfqrFr0E#c!9jAcZZh|wo?SidYO8}YAjg2 za44T~iz6X`*bPorqL4?uClp4;JT4L+L}bL;lMOCDJ|Gyv0f$U1I>@x)0)|cO`xv-1 z1y4-s+JLSfWDTaXVSUg)BIR9hkE3}Q(}1+cPmAf97pOQdGSIn5P(`cpzbPHN3%im1nFW}VIxtLG>pf!! znlSJooFBHjA?r=&vozO*l#nX;O0 zN&?&nS)_5{qQUnT16W@gXl=sx4^QzNQOR?x3IDm1(4l+1MIY7|4-_%@!=!nkK4Ul# zSn8&fOyo^|)bBnn1WRhb>M^OX(>js>g8&B;pGwCLDub!;)RrVc*!Wlrl-Y*GR*SmH zlAv(DdB(62~Z{N)eTR+$Ug=sQgh)om4c}RuE?rYIJ%}Iv$LtPqd=tO&R zlw`q;O({UX@19N%9t zQof$Q7I9p>%y${QHT4Lv{HT1UA+o$`LKV|AZg&3Z^C>JF8bU^RnyzJ3J2@D3A$5Tc zbzAMs>K@gP-t4hP1-a)l2=4YQR9KwBYZ8#3w1XVve9x3-K3wW~e~Ua)esf%5Bsy<- zylqK4oepsOmn;@G4%f=KyABkF(yD>f<#5Fu=^dlyx}QKt({O#gK;Npzci>V;t|Y7p zLg7;K?cMl!!-m)lDM07$=9vVGg3i!Zmkc|so(R~-ZzM&sec;MLfxLonXX+orLw(&2 zTpv=&u&%n&b62?3ph>m{GHlV(hb<0VUbF1-&T$m|{ibIx=t0I{K^a@LcSY$n$tbxM zA1msNPtSOTDNZTS;t(^BUoHfG$t9_KWW8!&CcZ#1yFi5kfEof+3co)*d?6!iIfO`HoGsEczo)&Qa>RLUta;5uvHIj)zPBJopQjV0@SU{bl0Ptq)dY##Px#C*3 z3)-3$t#FI3CBx}Gff{h~_Y6L`ZUoaBr;)w^E89U`nTjbQ!$3z^BfVw$Bn|$;e$ypZ z^z0&rBkzvQJ`<4cg5sn?A6*UJXOlV^5UQ4|dSZc6%-8!H0nmD_cQ}`8uaf5c0XyIG z`sP(GAog~w*J8wKoqB5mJovOsxB?R@IpuvrFvNP33%IkNI)rojDQ!JuLsKI!rcnU8 zGVEAU-c!+;as`%`c0)!8@$YKv*>=OwS&>x1v0(IJ$UqcDCSITr1+adn4bXHKo^fu) zA-FXwXC6>~J0j1JA>gL10BB`jK6Q(8j>!#nMP=Y?&>s{TgM%*7D}4V8wj~Ip^MTKs zl*0DALuaAHvM~jo!yh9vNxP*ApP{^XF%8elnS#<9OO@dMJN1q`fBZlRrTt$ttQ9-L zBIHDF*s~%fTNV^`%|i)7$<4UFclCApd+HWi4UU_7OXK8MaKqsHwk!8cQ&lTzE zN&W|hym9|oNkGI70g1(so4)C*&nF>-|K}D3L&GY#Voe$w^b?2;ll%;x+?}cIMyb^- zMjyr`17o)u;-?Txb_&XWSD47T{t9iq=?hg`CQWxneKOCZ`1g&BD0RQtQ&SktRauYw zP*K=gdHu14(PSFNg^ZC12!J5a!^4FKs=U7Z zIt^)i!g4}!4-q62JEq!(EYcq#(YdD^zgL-%@-Hq6i{2bFXAr*>tWy=JOL}W#>CV1K z5)M`suUl7^)`aj^M)e=YGaAze`=*DfUUKS+M6cQHe=)(olhEB7^1x3lENLeotcRH- zr_46$u1CGAwwC@Krfx9v)W_EM?%yJO=`SYNwXB9`5!q|c*^h!QQ<{&`)5j0kDh*;Q zy23oq&&Yq9)CN8!*D#FxCqXx5?(k3h&I?rpx&Kt)$qL%RS4kUG291KO9Zntt^KiWc;2QPghy;v^6 zX+M6Zr}+yhJEZyj)NE8+I#*XOK`|kEJ}-L8_RZWZDLvo!v9{dN`H{pGJGY`+f*dIv zQ3;3E!7)JkrzI=e>_Zpo(r+f|*%u`r)V8q!q|);}@hgX;Owu_b3iWJ+0E5ds1oye$ z>-BayDsP!8=8s4b3-$&YodTbYEyv5p-tI+Zu_Murn^HWw9;qo8cmgsKZqBTw6z1P4 z{9e#eZPCr)E?e=kXm`-=t;&4SIlK6%6(h^YFT&~u>YW0YH`}WQG!EEFN^l+Z`SZvj zcJtXRJp_s(f6Wbh+-Z3Cx*)82{Ofu`1x;#{S&J&mGZxEcOyF=?)*j1^SoF`KPElIV z5~)ksDuCD`{$ns^$S5?1?()%LTQb6U3}=|a5?N;)hjtG|;U2SKeXuIe8XWYjGF8i$ zH}^rU*d`db(8mKC{eF3IM81|Iy@fU$>M-(%bgNIjZvhP;_OcMK0P4W z`W~Mu(}(za245q>Nt8dw73*p;k>ZTDqOU9L@2=mWmpL_Y z6ZPZ^>t6Mbj&S2q{i#Obw8XPDll+=tZ_UR)KFuRgSa9aOadw5A7S$0pOj8o~PTu+W zR%R)4w7U#zEy%&A^Vz8NWI?{Z=i?S>zQG9LMZPn3O{y%uU(UC5x2$l5eqQU1byMNH zvh{NGExQr#Z|k8;_fOnWT9G4$k19a0^GQ?KCFTi(UP|A-)VSLMWYeyh7B*W>J(sRudKDCu4zJVrKZ{F%z~x#KFSFCW1&VD8dBVPT4$ zG#sz?%0!aSyjT-%-zlln0P_M1NVjM!;LMThIu?Xer0dU`{xYBLg4d7nQ#|5yI3LvhW8Z1%9AA& zxhXF3SQw4qKFA(D+LX{joKUq+rkl&<&Fo&C==<%ud_+D%mNqy6zJ`hDA{ z)8_>}Q&?dwVJm#-o~Z;?ieW~yG+Q@iNq=)gRD}&uw&M*kDA4wMHR$`gk1BYrW5&qIc*YJM zU1&{%m1%40_tQzLfeHVPHrTMy5cw)qQbHdexgDOz#C?jNUL-S3XEHCT!5AAu7Rw z=8=xDW4QGLF>`Nrn!ZnCSR&hGv3q$vc%2xZMnj`x^uz(&^> zQS^O9Rylq58k;7fS$0Hb3+}!=uY0dRbs@5?PG=K!8OatQKz@0P7A)yB8sut&*gcWU zNlZA(X!Po3TM2w%VvT^yVaDW6lz_v2mq>nBo=RlB?!hE1QHYe1Q)3Hoo{-SgZ=yu@#oO2l^TYk0Fx-1ErtC(>by z-M#*7F@^dYCtqDr?@8LzFWOuCnrigi$m6zhybBWt1j&K(=cL;`WlQ{Pgj~&CO5%43 z4OYX66(zUcIcl_(oGBITQg5!~?~8Y>?({p#4ixD!sC!f@oGO`fue*L#ysmRomnT_W zPp!LdCpi86eZl_ci&@MzOz1h97O$i!VwFM8u$Cx3<%5x4L3V4Gz0pFveuv>UC$_Hb z#zTW3CFzGqH@QyxwG*4txoX8eYMkET(=WUEtj9(D1{~CEmtR{7m1G~9q{c^)Py$-t zo#1;Yd%H*Jak!n!y9Li*c3EDLom}z3K*7h|HGPTt*BQ)Q-b!rpRw;uV zzgIEW5{ONTZ-yy(Px&5z##zMRG&eV+t8kLnwvE-$AQa|i3d<1+l;1MdXVPbEL@Krl zT8;3@`*@4@TNiXbO&O*#6=e4zCqMOV%!1RQso4(fz1zE!`^qtbjkuT64CpwJwN*ng$I;1coi0q} zHcF*!JN5i4n8$FDxM-yQBlJ~S*yW7JETD+fUWe>nh{MH`on7Ubo z*bp~;;`&zJDk;%WMrr0$K#8-7atHf`7AJHAW#k)8w^RsG2lLvZ{I%hPGCfmr59P?LBH6nCnT=#@H^%39Pd7 zv5;87;v75nv7Y=>q9iufGP~%GO+<*T>Hg6S?(49fN*ww1uzKez?&DRSO0-_p@Rzhi zRpOyV5=(^@L1~}-FN|y+ZT&iBrX8C=sxhZ9isbbFs;pu8^n0Oq-;LV($%w_`)Oe4> z2Fjs)bx`P#&~F8?c5H$h&EAK+RWA466?}MkVPR^2VYs!6Dk-z^<IA8kkejVN9EYT zrS2bh4@|r(#|ykRsx>~8%Gcg07`kR#9Yp$lmvWAB#bb1bVX=^e3ycN-kH%w3%tRP& z5C6&55Ir>@(J)-PD$+X_ctX}N*_-h!E1a?-kVyBHB{%BcH)|f7&!X?6W&?+p2jA_J zK081;4irsxsA=wL+4=dtBa^R0r|kwuNGI}#y|is_ zPxzCn`@7k>QDni3u}Nr*|E>8gfctghPBjdGEEdya$`%=;dJ?6x5&H$vnJ~s)bQ%&%oXG$5%#fegJjUn^ zWvvpCF_BLl@b%?qd4PWScB>?5@sHfm6aJ@Yl18^PyiBz>tMvB8sG)G2eab#>$| zrC84W7zkJ9f0A67o5ltMGpQ`9p?_c8jv2aS?eDoqt6nw%pru9!z>;Mz>elz9bG9>7 zq)KZt(Mu_xJG!BhDeEjVaDQAbL1ByCI4caSLiAB_^21*ORcQhDooYPOHV094?Fi@L zo1YpDY9){#p!f}h10a^+|C@0`G5q9jf7c(d%LE3DOnZ=ei%7sIFgRwzFTDYNM@ zH-$@(zqbNl?{V};NqR8ATr;XpdGUiJ*A0nM8d0XF4ZvLMU2Az}(3)S%Ah0@!Q8DWC z)u5Om(Tr#5P+~eR|!N2HQh1X@|aAnWgjf;tiMXpMx;j$~S%&+q|(s;?!{Y=Yd-&_JARa{;^#0 z1>0o=)@I6E;`MF#$qF8Yw&RCDex(t!&16ycES_V{=TkoFLGZ=1A#XS6judC-&nD2o zw*u56+G z{`KsgwkPH67O6Gk&QaR0e+iyPqAy2Mw~sIzm#s&nwV@Q{Z0SMw7rEu!bM_>H^2Cwv zfH4bt);Od7bMEQ*gpz0kz|QO6Jc?@C-pq)Rf?eDrL;T&d3cjD75LG)KbdCyU8CY9&20EX2%KNCw% z$kOLRI+-l;5M8VY3A zgmx3yvX_KK`&)kztk`vCpxoR}SX})re2&=h7{8gK0=Kk%U!vBU3&;Db{!{kF*T&ET z<>K1W+6o z17aTvK5ffgF{<_k z+VTAWjcMPIG8_(<=&XBt?ExH}HTH8^xNlGHBknNWdkFVL?=MVxc?y@n#UC~qAD*aO zBM3BJ#1pUm@aEDdyv04KUpyq`%5u6Du%Vl#1A&985?{PyFha+G6f4(E;dZfDUHg!^ zV;+vc;$g8ShDl%Km*#K7&~G0l$njHJ!oOggO6nelH+ZO(Qx6!OKn~95w4wyOA+j>q zB`gZaD>@IOKBtg$i>;?$JnX_$O-o%4)71y~@GtTSMxQUci)!8!JppHqPdiVkvndP? zr7RWwY1C-OeGrC;kr}>zEY$G6xFat85Yo{-6zV&$um~0~u`a+p4Ae-O=a+jSY!0_9 z`DSbpL0Xij+~0`+@-yKEsN}}&!gG<*TnYxCG^~GYa;ptfxf@T;g_;v~7AXW1z%8%z z2KAAoF(cQt*G@c{`QhKa*UlJ6(K@ztL$a5UvCS>Pqjbx9>tNc4s}Mvn7qX9cy$`sV z-Od;-9tu}RjsBHW-K@olcR;g$A<^a6GJ<%lHQ=84Kk4W)_KHl7$?bB%pHAH(YM)Ww zlFHEr8bzvTJr_Di>jxRL$nW_Mam-MDx1mro4iN)52%+pXwD@afio729cp#4)8(uKn z@Qo$jtD|_c6WbP=5hzv-xa9#2wfQ>%q`Rj9$WSb5KoRi8RjsP6xn;_QT*My9x)iTcxejjd?qq;k_K?R zi!vv9_Wyi(hxgC>!@KV+S;5k55*;0AnU%)Xww@(wmLcVn?bg4Y_hg^~C;AT#)0V@% z#$33LUSZ{K1@~k8WG3oXB&9OV+*uT0-17f%vB{n0x9}Y;v=qV0Yrl>7toQ(6eya^l z{qb{DNmB+sMy)tb8>XTP~>K-B#7xrP^_Hr@kt*h zBl4Zix_vfU$5&9X?wfG;5}s2U@Nc6?YRDY&xl#URh=B^Tua5-``bD9Bx- zPdI&?o107^JwVpLXXZtasd_F9=w(jPP1e1h=GO$XKA#N(4-7@zEikpx#+Zf2VwPJ9Qa8EuI}>2N>N7i&N*=l5I!dI$CMHn^ADe#ikA!2H zYNK0CgR6UsYm23K+?bFM%=MUf`Dn&1Rme8)W<|VVV^c$NL-yE|W{OdYQy}B@Q(Wx9 z&QI@>nkh4)^L1AOudHVk9jKEv)yNN^$(_5|57qge3+scv@1Ycp#@)dL!zCwSU#ESI z>1(1=UR@|7P05NYE-}oO`d4OrSNEw!{t{k#@m#Av$Qec1#9O$2Akwnhz-PiIO22oU z#x@6?AaBI2Moqn3&-3B0$}UsVmL%DSx}K~U2TDIC+01m%LAZO}U* zx>wbX4u=BfltNb-T*4NQH4n==zGVP`2IB7iO_iXqBgYGe~h!(sz3tE}Y=ytNT1U;mGcno$gB z#u<_s&z_=aVl4Po#NCECPfIZzI3)Luqy`RIOsQj1qg0;WHu8Ogpg4!BgQ8tYj~(66 zTqkHJnm)zp#Mw-dCS_w2&^Y59ba1E`8{y#QN?^ebTXWMn$ZywGHmYUe#$Jt5m2sci zvhBc8cO=_vNs%7IMXrurjr*-#R{6Yey|wC{W5_QP$=a~i3{F{wz2JaOiiU)zMSH1( z+k9k&FPDrVsfAt?wq^Tm)9NT@5rN$nxIm0rI@cJY*LAP>DQSbBW@03vCNOqjCnPs5 zpKza*;v;IxN1J7wD}gNEcWf9jj-*^uRausvl-VLT5!_mU z@(vw`yC)NwJDgo|h^V*JlzO{sK^LU(*s?RkMZ&^g8%lu5q2A87Pu=g0xxRZ+xE#-5 z_O3;H%K8mV^L3Rhrx$byGAT_Fj=V^ulf_Lgw!t&IeaDzD7CAkWWT&db?c?bVJ`&~Q zG_LX}E|9`1l;fWoM)~OQdvNXK68^!puNTqOVQAEh6g2_goNn+3c@SE(&(}G9o)Cb0 z(3j4Yskb<=)XhW=3EuH#u{29ulnRDKpoZi#VSMs@Q%0fpJX{Lw`sv8fwk?2ppA|I6 zt^sF$c#P4!T)6a~vMOEz23Fz;L0c%5IGhc%qZ!-RdROv?-PeQea4H$(-4Qt)VQKXB z*j-_5ZiV`PH8e1gerFEksJh%2j+|k_4ou0JLuxmzNvbf#4Ih!aF!!bQ9V&|h3pT)( z>s0lX5PkLM%H<%qrKZ*3X5h(GbD+QA=EFd~w?!+wJ|{~V`eIq2mJX3*@$%QM5;csn zE2bz2RL1Jpg&Ok4(2UW=94%0E-2bd{f(5y>qqad|C58wO`OMnv&w8CBc7OSWl!u7L z_M4I#B7U1h!gh(sKYam z6$_Tvm>xK=qWyzLXd|Gn~T=TYOj^8gJ2~0d zo^p6VsC;m}(Gd9Cl3Tm}39FDHa=|&O;NS~cf{$19r$ksM*`4duYXZ3b`GX zzDRpFKH>jmIAMwpcM_~>weJH&)D1bchp^gcTREq|;rTC$p|NtzO!dbTr_8BJnlCn`F$+Lcc0KBp~0gt3p28! z#F%AORF;MW?CthwI?`_^T>@_oC6vy?T)mn< zIYBfk!W$S~C=BKnBFzPyxy^}dnfYP}8*R9*Wi^MQGvXJcJ;XoSr+UJ@Y;6pw$__*$ z9aOx(UKpo7yS7jD2WtHw@Cl4M4#BnFi}XetQhc7d&Fr zIm^t&(KL2Lc(yhSueet_;` z7K;4{li0Q4v%B`mD-uF6giDGCNfDO<60^hj!Sw{PW~`l)uCAnWm+F#2Nr^%oS7H;{ z(4}}c1n{XM*? zXhbBFU0`A!!LM*TB1EIQUnb(4JP7MzaQd+0!L6;1QQ5~=)23HZZqB9D#GJ=o{5?UI zEck$<4|}I7pk&c!^2#D%E~qx>PDCTcs%mqG|L0nD1%^oj?euP5Q?Mjno$PqfR(cf% zm#RisZgyI;yqsVL=`w}?z`R2y&8JA;OV?mrxgw}?RUXz z1(hmAe&i>oIe(i0|MR4#FtrPR)rO|}>_0u*A))po;>uBdw^UoU+Erz~I1a@b_l$ne z~v_DCfvF`GHK_QBh^rc zNuRiL^w2P*Yw+tsubl|o;Xcx0Ct@$su#Z8lGhyRDnKz5-H1l#uT*Oy+neQ~pAX9R3 z6&I?O`}k0#x5VPf@8IS2C2K2vNm1Jg-`7`n4+?2W^H_%+w)htwUM>bzGRIfhNO9au zC+uw?`IC=~-{lzf)RGha3#G*yL*h{F%OAxhuY@biTe%$xq3J)Gj4fi2%Yt;PW-Z4f zlXZb5>3l~wyjv(P=R)so?wqfACRR%*o%%=_uOf|=4LW|&cx0@a)JkFV4b-Lu)&QxD0^z}}0Uhf0NJ9E?e+8d>*Xb#oUoh%`5^N6XC#q z&P-@VJkL?qm7;l6er1b07vPAwBm(~7FlmLRtd`y3g;sGJX%LI$bRVk6*?j~r^O}=O zP;`O{5N`b4Da{$XU`PUD{t%@gIa^aQre5PqD^Kspu zw^P??p;kE>(Xdwni?1YH9fhV_j{L-c2emV-qt7G}W|`h+8Z)z8j!4QZ1T$l+KJ!AC>V z+eA?e^-R+#OStq16Ih7Bx1sK%%QL%}K(_!}AIVyyXwrgnJq!A+Cdf7s$B)G3l0rl8#SC%h)cVry)h?{=x(;JT(-{1U!T` z;9Cah2T;wWi!yvpsBKR+K`wuI=YjV=l|1Lc8{l@0EWRo3*JTJ~g=voNB=uIybTEOK z<9T)v3pl!ofEm+Y0uzn}9{r;y^Uf_95xO0@fbeW*0FZ+!WwKI+4b!|hncf?t+${d> zgG^x9b5;qf#595d^SUBvwJ`#>@`CFx7&=heIWke~k|zX(^|T=8G^s+ybvGPc(J&FV4xK z^xkUIf4v^BwZO?is658EYV1|(3X3WAoUeO)I^@J5DceUVXGO;dfH&(Br$pb@Q?rEr z*{5m>hw6tVA1y#Qy;Bhq`{X0D_pOz{*m(xtE-B};sXyRNlyee6JHOTnh+0@$@V;A- z6`f^#|4DC`RNZRL?4;4KCcW9j1LDVeV$>b& zW+3lQ#Q0OIc)v4kZ)c%Wn3#D+kpO@dhs5>LkrHQJb1Qe7#AWTfLcESsUHFgYu`Dl? zWmpg+hQn8v0;A86hC%~B_Hb2aQtpw*c?YOKH#d|SF#pRpz5jNl7LfV{5n(CnN|-&7 z^}+*k>xvP9tH@PLTjgBpQ^L%q*E7^;X>iZ1i@=69g;sW;$1vH}CG__H?;3OfIR8>; Y(JBI^mHO?y|BkMzq@`GL&ocD?0I0S*P5=M^ diff --git a/app/views/OnboardingView/index.js b/app/views/OnboardingView/index.js index 5be0446c1be..487bb70808e 100644 --- a/app/views/OnboardingView/index.js +++ b/app/views/OnboardingView/index.js @@ -89,7 +89,7 @@ class OnboardingView extends React.Component { return ( - + {I18n.t('Onboarding_title')} {I18n.t('Onboarding_subtitle')} {I18n.t('Onboarding_description')} diff --git a/app/views/OnboardingView/styles.js b/app/views/OnboardingView/styles.js index deca9b1bb71..809fcf36ede 100644 --- a/app/views/OnboardingView/styles.js +++ b/app/views/OnboardingView/styles.js @@ -11,8 +11,8 @@ export default StyleSheet.create({ marginBottom: verticalScale(50), maxHeight: verticalScale(150), resizeMode: 'contain', - width: 80, - height: 70 + width: 100, + height: 100 }, title: { ...sharedStyles.textBold, diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 0f49cef82c7..e8344d68cbf 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -220,14 +220,14 @@ class ServerDropdown extends Component { ? ( console.warn('error loading serverIcon')} /> ) : ( ) diff --git a/ios/RocketChatRN/Images.xcassets/logo.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/logo.imageset/Contents.json deleted file mode 100644 index add923b2afa..00000000000 --- a/ios/RocketChatRN/Images.xcassets/logo.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/RocketChatRN/Images.xcassets/logo.imageset/icon.png b/ios/RocketChatRN/Images.xcassets/logo.imageset/icon.png deleted file mode 100644 index b8b1ab2266dd85820fd0dbbf94f48bad1241bde1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2558 zcmVR$#mW#66I6-+;Fy_y&0emRDeT z1y&NkG3x0`RSPMS&`kH}50LmCz(_p}^Qoq~>Z|HDLI*wC#CH+V`2d+lEC8t&twg2=RrpIOLOlBB z*S$ly1K`=SQM59Z?s56FJWZB zkU!9O=ie`_!vWzS8E~1#u;aRJ`}= z{w@p<8285HSaBz)A`9=Jh>j(A60Nu$gCQD|-n@>m?WTc4#KSKtc-gCuP9*q`@0J%b z3J%~JP}iKXO7(>(W{`clLL9+UR=4K8El7z(f$)Q(1gYei8&GD^0X5t4O&zCPU!D1R~M%RGB%bCbJM06x^=!`xs zrzJ8CsIZVf4Q6I9iwXZ44B_c?lu;2}HUvk3*2R0J|5f0cAWvizsREO|)-Tzp=;i%i z_P3qmTm$+dnBdR=ydFiylosMrfN-7te9s!Sk6%tCxc71r6;&qMy7%+-S*tIsRqM=V zuSB~@jwSefetC^e*ZByvf)}h(CeW+5f!I#;L$pF#iHn!Jr^@pyvpLWy1Rtt!wPN)q zx`MQj3Of_FBbs%Z>sUaV>$dQz&KIPdlY^Rf?8{cWd%t!zHxA?qBqP78vt#=C_}UFy^rOIH?m~O@_nKC#_F&n~PvG_fyZf588ibdn`cKKjsmRv5 z3U{#ZET>g3YQZBF1lp-8iLL;5XhQ2?+rx_U!mT74g~VYi>nV&J;A4 zt(|luw=u_OkyAb9h%+GHIl6(}ggX}?^_V{d2or`>dvOmE_PIhCVzFDSAZZRZfyDJe z2pYs3z4R+vy+Rrf6G3_9$gwNX0~9DPO%-FTbJTONz_kE904bs3T}NIePtaTEyVLD7 z=0^(S-Xl*%4}rezdk$XwU`SAKogj#fzsZo-hf9FJL!TJL9C1)de#F-Tu3QIj#c2ntH@C(GLk`(?8VvZoIz2=zu<-cAZ#FZ;4 zx%4kSnq36FPa5Qt>2*R@SgWDNwmtDLc4!;TIbsQN&mj?zl^Oe(BM!Fg?-1ch(eL7e z6XQAMp&WICXsGhXv&6S6?NPR)hin7NmelZk!aqAlpy&FT!zx;R&JhEr;gNw7di0-F zr;qm@z#ZCf`gHl7t2;<4&B}g)$pLddDVU!`)Hlz&EST&rCmW_2Ly1~LW+FS?x zhkkb9v;^A~J8>`+CSlW{4}4?*K_;Uur z$r&)Nf?hrs>4RS4;&DMPl8z?~UE^8{6itF{Y1-W`G<(^-GI2Qj{`rnenXBU;>lL(V z5jqMsU6~KZkPBz?&nJrH^JmXr#cA8^u!&2XfPbaC(s$#F`0OvWVDYk#Yb=pemFb3V z)t@VB+Bg5-JM`%+l$DgL1!KFX*>;&qMa7d`=HqoYT_m;v`)qz$$a7bmYx>c3?z7K$MxK+bvKZ$%gbh}BL-dWUri$<#by{cddE zTCCu1)hr-q!y8L-A>49^ua)9wR_k|^O5CceaY=$vkaW3(ZtN;xTp`4MmD6jH(d$y? z^0!)nn_NL6!Q%?sgaWWes27-6NJngav(L0XTf}4cCd!E*SS(cv2d&3P_PY5`qJ^0^ zd)~TCBEeR*cOaKZfBcMOMQA9D2&Ac{BuyNHjHerfX6n^qwo)NiA_C>H^)e2)7UXoE}T zH@3_q*2-?+@V-9X9p<4RR|vj5!XQk(j4FuH75C7Z84=wytF523VvH(%9i5hjNop(F z2$o&;9O7&`uOi%Sq=-UlCZ`L5ffojJp_i1C=POhFaHGEcbmK53E`pUB=Kzh8&`va| zxLk}*{I>B^QB)#RU%2`p-Zvi@)Nx-4r{ur8v$Nd!X}5ytfxgl-6=pvN~{fRUh)&+nIDLJ*81l#+$V zs!;lDd)!?@CjtqwsmB&o7aGK}vQ@l|2PF*xfoyIzQLuvpBzaUp{B1xpOlzEqXLsHs z&8CSc8tEp-u_dhOqj9S;_k-A!pmFY_#G`?NhqA}F@m?eTR1lS?Yv+|ox6&m14MSB$ U8W?rt0000007*qoM6N<$f@OBf-2eap diff --git a/ios/RocketChatRN/Images.xcassets/logo.imageset/icon@2x.png b/ios/RocketChatRN/Images.xcassets/logo.imageset/icon@2x.png deleted file mode 100644 index dd29b4d50b17bf282d4d81d32a5132ada6d2c794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5636 zcmV+f7W?UmP)n$|A{5MFRn{ifAu_ECQ${OY$TLBFcaPPeenM17tCaNb&cu}a5xfz-M(P$;-5{k(9R;zbd0LPA`Br1h@h?%RDqx>qJHbi zgDN;2T{s|Mv9Mkc%>)pijR^hgR3{eG18#KeM>>(xmYh4K_vY4#`CYc(A#LDB!#QI=$!bEFoLjyUnxb6 zr>`$vy#|hvV<(aE`iCEfapXN6RZA>zB4lCWn}@f+F*58)B}?4{l6ndQn2ECo)waCg zoO3Bg1J(Y{$;W@Y%!j%wFw$TsE`_{U!7=o7tVUbAaP=l4-i6Vou8?l#5i@>W`8e$K z@e|d*uYtoVhn7>mdVh97DYyY6PBZcG;7+H{NrdJ&Y?d1(e;NqOQvZw?mp#C@O${`# ztA$uTv{47SV8f|&iQ5SSq0Sg-!W*-s43^;}k$wZ3l!M^p z62p$kwpK@}8K5Tt3;+NA?2M=25jaMK(GYXb0v0wd&OVje0&t8NQb&!8o65gGY#GW# z0ye2;P|v|JvT!_mNdw&f!8Z?moSD4Cyz7`DSy#>}?njQdwZZMI^?Z!SIn&SzsY1 z`WhT#3{Gu#fd8_e9pI@2+|a=yI2v^^WQDq)B z;TNIy{g9;l18JIXk7q~CaaNuI} z`M4A#DPR#T-@2Btp}!u-R(6_afBNUY2%|_<_{ex|aKub21oWZJJKx9%Slk1)v|spI zFS_{)yR?g$qaC*gz|B~V5I(h4t~vBR@V1L^$L-7L4$aNM+JET^9|Y%E%>69JB2@I* z#6LY;fQ)1kaK8%NTh{iZUR%KGl3S3NkO8sERw5Lc1iUU)Nd)sy5Kg%Ep^tvdhrjw< zpM;!Q#96A*Zm^g#-vWBU2{(WGC}b8fT~AxpmP)|umwq$@su#&>LLn7v+E;!^93IERte(sNkeRj1T5l}iu`!^P-|6Yp?>|M(Cl|L}M2Do?+Y<9@+Y$4dIkZeMhy1{H>;S|fPxFjwMG7ot?sH=KAK-H=e*@jv)o z7MXt@q&>_2PnatC`p~8A9W8M4;HEA1x;gQVI%0|I)!M02pxK?UZix>)&~>!H&4ZgQ zoOs6pvBc#{xXK5+4|6!!@e8BTG2(H+0^7E}oZo)e9oWW)9iLeH-&x+NLR%hN;eBc5 z0~Xk(^(CTPPQ2rV@ri%?_(}}$A=m{=TF)K$VEa49`f6=uv7sr0eEi@hIL4Bkk{t(p z;XM{Oh_)(r%s$m78*B667+WOS0i|HU^8CD0`yl%lQ&W;?~Ty2A6^7lhRPk#!{ z2}pK8_|x`xcLXdAnl|FT;ySp9gF`U>FnTfz;&ZUa^s5WAmDW4E7MRe2ze+XF(}ncO zIfjEATnToo;d1L8wfj*x3mH)e^UnG@_A~jLKoNm8E6gv3Yi)1an(x2|x5p2sz~Sh? z+8@uMYUpn*?NuSpFT5uq+NK32tUyM@`hvr82)3zqrSNnxTP)~_rqf1Z3sE&)UL#Jl5Cv8fN&}30w0jr0av-nq@><+*HA{yhq(jXa_N#;pbAG*d2q= zejR!5RNEci$Jc@0<@Twe<~kHqk&R8icDuDzto(%yZ#iGsn1*eqNh87U?g0J0$gQNukBV9C=Dz zVfQz4?Pe7U#?)*Cjpx0ISHO^Byt{E}_L0q7>gvV0Y16gRlX#ogAlZ)i+OXL5aYVdz7BA^<(~SC(-EKCnBN4w9$a*n52RVe_Q*44yLk1$E z7f>J;TKuQ8T0rAA@O5OH4@cKGKDe4G`&oZg3ro=Ws^8a<1c^p?fK@B?5eTOgAAYjj zQtL(5`#TrCv7uv%$L=rR_@#?(}EVH@1Y=? z7866TgyhrHSRK#PmTIPVuLDwGYPW5I1@6pfL}K+V=9%MGnUVPS5B+9b4O{4xo+eaUs+U=GW$WAGA(5IJUk1}vkFl@dQ@ z9s|bHyr5HY@@ zUrb1J?IkFREm(W34Uq*#%TF%VQpKW{r2Q(EXnsh5`Ub7pDb3DppzR2E&VWei~D`7n2Z0xQ$d_pC%w2+6n*S*%*B z7-m}dmcMAHyOr)_X+Ayq|D>^i7MIG1<&^7y6c$j19@@W-WFj_ed@Wu_&#e82l_p|A za}>$6)vsTeT}}Urz}n>Fzv)XmeRGFL_np47%8LN*Fgd z%XN6ZzTS@+9u_+?Rwo}n_>Go;A3@6METNx0ae}l(DHT`vesG3`6q*kbE%PBqVx`rh zuFYHr(hQ$aPWSUVWt>}uVUf*&j=_gM`Y}hjHs`?3@eBjAP(7Bg2kA>3}RD{zcE#&vkLF~zRKUx6)D^lZ<&?eEyCaI(MQ-Z7N?>wjYq zHLT3?XhMtovxf&F%3Avi7V1o=ZO;F43?H&5?)96E8(K)|-FuuQ*k zQHk-yxDFId5r9P_cF_6?9dmk?tgzH;E@T;<m3^3f;~D~U!kLbEmr%RA$U&2 zZvqdiYMaO)(ipxLs{+R;>5#=S?BdH|9MUp%h)}z zwSE9c9eV88?&<@#vvG0uspVTmee&^x#FH5v{ex!aU}Hniv&e2kF3@xKd*AEzs}nUR zWuAp_kaCt?6^>$&v&-vs{WM4Mir@QTlJ7_)VDU)^=!(_ZUWaHNCpzBkxqcy9l& z)`SRFS-j_yw)!V-50zddn}<3?`xDO{_7JPP?K&>xF%^CrLKS_QW==(_{$?{N5@K6P z4rhS}5b3OWeQEY~o>q4oVm?bd-YRv2zRVu56qyLYF;J{u`q7N6(3KXk9Ib8>jyPnQ zRp&zn{6H_nk)O32+4ay32y&qI5N@+ST7e?4Fsm+67_AfQ7iS4Fq8fVYM78)iU5+L@ z!i9o_yX`jEm=c=F0vlu?N|t4bj=ms1ZV+tEC{Wi#xS6d`k4Uru;`pCoyYi+n-b^*s!&gzIb_aR?Iv|bR+_&{uJb%hUS z622@LlcYFrd!(xc7s4IF1`!dh@9SwF=~_g3hV@#owcUk(?&4%){T4o6vX%gAkx9UI zD$260IB@K;V`-5t$FY_{dgWMloEC0vcd&L?JB&;Mmer(LpPV#XD$^i;++!tukDt(b zg!px&{N-UUtT%!!>58Jb!v5@80BsBk^~FWl53LZezxyQLVcJ<;hzevRM*ABl_alF3 z4$MC#lB^$sM=<9_nnQqBYlyha_qb|A@Ip3K7Pjm!A=^=dkfR1?rG6wvRRPi=7{6e! z_Ek#SnO%k>TY+qmNx&RCJe%3C%Gm<9#M?P#jUijBkl&b5Y_Up#hkH?yf;8~Bej6HGdP(*f?RIPd5G7s7s;r3if)~FT-=JnO_RV_D%Id|r>204k1cy}yO}H%* ztI*crjopXp#FGc-z!Fl!O0jnjU1rcKgDTt>i7l`#>ub|}SidxT8=A$}4r@@2Lt^&_ zRk$q@30SNzM%vCS2Mg|liShdS9*ft~=qtx=RN-M2hJZu@KBo0uvSQ^r4=YZB6k#iD z+;jeJb_U%|IEtPHEDNOhm$YK(lo#EBlr(D^qT57t(?UbZ*dn3@jPG+IW~rZx+OyJ= zfSayE!^$uVIlQH{zAdXugdsQ*(=J-Jw#&n2Z9CDEfVU5BAy^;+NNj!g_G~$;n}ltj zR?ZvMVYak~(NzuNI@ns9l{9qLhi1c}ha|g+@v|7b<+mEImPWzK9>tLs*v#?egPSd* z*NgR)YAh)E*PPL;gev13^=$d<(1dbuEvpSUYj3Og1ika<_TX zw}bNZ)aK^#`f=DSH-eyIYF$|3ABoc*E28pCjlUy@F8BIAP zm6QGs&C*P)ONR*m6-;@ie4LX9-<#6RnCd~Km-+dsJE0ye$1 z0!M$?X{l({(T=isC0#nvSU=~)J31H(JnBW@dHTDK{(@s5-m2&8>(1(qCce!y@gQNW zF3_Dkr@}b;kIz2uSr{>#)g2%F(Q+M37s2&WELw4NMgb20a6NGsIHPxmBMk34@s1Zh z#qk%M(!2}9iHw0-oX~6cUAlEVF=4b<@6RqM1zDH16h^Y+q>Bx|>M^mfIx9yNc zZDrEqeoVC*Ky{ppvmMDvTsAHidd)vMO{NwWrWKORuMNA`#x|oJ#Gx*1R)f8iwig*g e>cr|u%dY`~h;aF8j92mi0000&SpoJPbLEyK(ZEkfy z5CkhAOv#7(&$Vu)QdbbpD^%AAaNgY1HE@IxoQ^_hY0$3}sMkh}UR`~*-2_1pre(itSr>$hV8Jkd>>AN{ zF}L^k76^iHAwva%-3FNPZyWQyP5^Z%9MlH3FbE%sJ0b{Yb3!2Y7k^nbe*EoXio#jM zVsYeE?tlCHRvQFCI3^MZb|Ypkg%3c}DwLa+LfZUzRCyvX3qj}!#NpDf4~S?Tgb2=z zAkwZ_6++p;KYwT}dkP+da0av`u?nHAD3h|h4Z=C#szP{vxY&69=Tc)C1ffLW!Og~7 z$Z6^_4LDu;$@AC5^$^N{5^)$0&hX5H!Rv#?TMysYTA>po&U8osQ^+eP1cDosj=KIruftJDgvjNP0H%;jhR=ie@#mTj zz2|&!gOC`Aw0Y&}&Rr0MoN(qusYoOO|D{w~CQj?f^H(G;A>;vd))y}S{?E1sSOFnv z<|Qs6zfIl6ZuW5`$|NWn-Ef#uf;PM+h0CMWA1ZVAx@z z<-Plhzsw`3mmmlkLsl#%%f#Egr9MK)KJnJH5b?>^Pq%kL7@LU&g5gnXAg+dx1ETna zf+hm(%I37unMxqU)e!OvZHZ-ZF;fWyBUue0-^ix-^O#y7qO67=yp{qgA^%XD3)ViW z$_weXjhR{?7~^WJ8du{X2tr|yovchE0>SX^O5QpJf>0=8tK#z0ol*{UPD~))-)z)* z$t?&%A)z*++Wn-w-^%2EBqk7ySP?=wD9^NV1ql)o+y_A@JUp$u91ENiwICR=B82i$ zT#F)63xd%^Pe2e#MR6^P#4QM^ixA3ATub3UDuP9kxCOyA?y@mlC^MR1gD01NSh|(_ zHI|7BM2{v2LaD);CfqV^$7}9cf}E1Li_zy`>DSjKnyDxV7m&|DrY#Esw5C#4o(aNm z;ziDRb33dF1c;j<2&ahM4lV`AOSZ$Bi@_Y+Y`m3hh9C^3gNp7?x-`iZwguv``3}n< zH~`y3)G@!%HXwBf=pB*jP;U#C39a+;nrMoW9|Y}D{*PfrRn7n7Sm1ekSM;5Fu_eVD zya=mg9s&sbHHkTm3(wH}cq{+J~=YstfHg`)oOqIt4 zh-fg>HtEoXthgLj1%f$PY!C=NOq>A1CmOs~(JX_cVOQn7H&<6m*G;tJ29~P$@xL3q;8(Dvc;K zjmh-Fyll#pWP7mt8iuNFZll{pwl0hq?tVHlS&o$Uc!)qG0E>cA``ydk{YPRYxTlvn zSvJ{{pNg4QPcJSZ0x=;X3fZJD7R9qH(h&&}h%w-p0>!QD;y&bnz8ivo_X-lTFxQ`6 zaJiINvKS-Ki!0n0QOGZxMn#}iM9lk)hK>o;uDdF#vMLbKbg4@47IH}6T9^y=H^qf0 z4n?slj7Y4y5DBXSks{hdBvmT1kN>DiAzIi|6iT@eP%%gfJ-_%*;pDBl%*g z!~`PC;s6A@$`9^d{$08!g~>4%#fGsy??I+9BGIjUmsIaYVnb_yRPXotW+JZ-_e~*dXg}M^e+N zrWT09#l{_TGiGQqFSQA1#bv#^P)@R*?Lb9$r=6NTl|aOChafW}<-}?b(jXen%+^Hq zGIvvFHYOH`xX+^dG8-lq#~N@=Y8r&Ji07|*84S`-7qpx>NO@@{%!L0H&1LYy1rY}! zO*jZXySH;)>#S|IH$lsp?!=jwi7bdXK%*W)%0zVyd)t``jtW8+U5*f8Ws)JdV+%wU z>K(Y~3ADaD_piTifgog%47wbhqpp8_Tvuak7o!q%H_|;cwE<1wMZ`hKFzj-$>uX+S zC7V{gG!u+%^^YYGk!z7^N{6C1T~e4r9$=9$PwfR`@n)j$$NU`2e=aq~8tOZ;i;;fT zf?8L)2MdzI6!J)R%CyJJYK&|_%*+IL(h>*GRERhTd4|ihH9@LNaAL4F;|C)L_D8ZH z(kzH#^K91!RU`dQJh3Y~J!b{~4)aIB22tq-LEQyq>E=Rey&$S@Zu^!@7rp#{;%D~}b z<2j``cK;$P;#>>Dwe`Rik|GX5nfTQ8SEAy-l(^^~KT{ysdT_05sKPZ72cb-GJwjA* z$?XFv!1p-c>t}uaOo8AptiUcf^arm-IzuxcE#_m4t}goe&EKv2oa~=_#+5KCkXuw*8xj~_+KYJ z?!REu!i9T*1kFjN>k2~I;3`WEZmo#ZZpN`dcwSHk2ZWG?sXBs?4}!qobZtcpW;2cj zLLrSc%yJUgdXNP-f-pKMSP|%f{*V3##{%J^I0_YQfglKD5m^yVQT5|j{4Y*#+Aofh z%!MFKLNtMzz+v2uY9H!9*Z5T=5MDQ!2g?v;ZD*k%^!PcZ(lwGsG_{+QoZ+`GB0pS}D;VqvfPqCsR zo#ia}3IVO=eBX9}(qu1kBo2HL#wv|9NCaHvou+Z7$Sns;je9`e zV@&9RBEog!db}JqH^4T07GpJRCUq7Tn!}~W<224P4FvQA91&Jj)!YkYJA=`LoY21r zA#t!a6Lz1w6p2_ICUuX_W!_kv&t2YFw$8%at}j)B$B-j5swOys1HXy@t^T5o0yQBA zM3a5(+)zERHtM>wX^DpZSUn5OUz%}q7K=g`!Lf|PrCSdmCse#{6WoBD6=Dmb1{Mj4 zUO~p;Cwm-ounS*|#)sShi||=YX2p7>o1eaif4w#Gmgq@{EH1l37s0O6pGytvtp-UD zx$BO4Gt52lZ%QFv1B(osl$$l;A-z}w7a-iT>1wz<3u(M()75ZgaWNjzgS^BeOdQ6| zJ%#YCGQk>~Z%XFHA$sCYoc@~(6OXX+giqlt)fqpqVnw)L++^ZJmd=tip$0crIpH;h z%3=%x=?!EYKL}RAIk;@&Y2|iZK@WsGHqN3Th5Zni&Q6MPF~Na0I0385u^vdYd*&pHr5~oFyWio)$pQWI7s_Xjma*w!3idd0Tv<5wgus$i}g%M-GBs1^TI|* z)^ag|lipdB%ecp67>lh9j<6~aStrd45fV->8+Wb-sgZ0P%XaGhToM-Uykk`$+?hi8 zq(77+2~6NB#S~q#H?-~4yD&PXwjcySI3H!RD$B$mY9O4+ zs#Qw%EGoUTXoSr74uzp|7H?8E1Bu)X1{ua>PT^B;BzacD-Fl3356; zdNPRI2n1_`vgz-s-T=`oqX`~C3M4(mmnT*^YvMV@$D>N3Vi%nyl{q5R&cn<~m$5x% z)!#$-7P1bye`44g;+w|Gcpj-|W1L=~Q(2SHgdE_?GG}*7Sq*OGpy-637_OgI=m%?H zfi%vdywHj$ef_d*mdzQR z8nnBivc_VudKN+}LOKjy?39<;sRU31`%uMGFIA-ySoK@&55=7xzAy;L!PCS3Q;G-l z5Rn6sp!V#u?G3O9TSVG{t6{{UIrnU56LNy97J+W4-znRwnTPH;hA$9p(TC^GRwE7z zE}l|+7P1jQ` zb2_!g$Y_WK0;vfW!F0xlO$FZwbMaGa0mi7VI~Imu|N2$SLA+7nvlyW=f~VKU6FqGA z&ytlO9tSQbI}5b3c9wB*IBARb9yj>~_CI5J=U-=bZ#(-%Q|CbSBdKdN z@Ln0eu#JGNysVo4@Z-<5Zr7hbeU_+E38}+pG3nA5d01J%X9+`9H!qEE{<-dE@GRI3 zo+Q~hn-=>wZ*4i6T24n@|1Z6Y)|kV^#&etI3qOhTyn0;_(!|A*?LJ0apI>>l{h$2$ zxSLax-KC&;bTb4YD^w~+&hDQO;Q#usj|C#>=AqLVQ{{HvHYp22R&cRSvBz=zfjJh4 zC^~I-fJ!wln~MY?OSoNWaI&NI#K0IG+I2H*ZDA6GB4dK!tKg32;0Nl|Phz|ES*!>_ z7z5Y)RyE;&4}N??AR^Pk_MAqsA_QS%-0oZba$wFEGbyzu+Y^?=iV%bm;MjxXZSBp| zpZG!`g21<5WhPdHAY6z-dI%07pf6hMzYqvV^8l-tX1cD@HiD2l_7{Iyb-awZHLP-W z=-7J~vki%GJ#S51g5ZKEFzK%DA;MTILp_I~0uco&9E@ON6G~hSK{!bqn8X@5gW8v$ z?hK7Rp1C+jgNv!cSQA%65I)1Mh2y{^&ulp}F>$6qM8Qf2R)n}3f)JC2Yr!Z#*gErT zXMKT#m2Rwvo~vQr91w&OGZS_nI}S|3MN`(#-OcIBiili|FmRgE5riypu+%V?13Dk@ ze9@Hka|Obs6~VJ84wr5{06{1jhl`Cn<_6dR*Nm{&~`K#VXV zwnx&P!ibVy$iqxTL70R{9K!B%_d!X9q9Mkk{LKq3h(3-tM^_QlbIEK7MI@RpnVLA5 zdl_-$)r=zxgsVM?14M74h=foi;^DLDi36uKzka$s^4yn^1%e4ef5Y7tYzAv05<*cJ z5QmiZ)sDYBdMtt9fTeLY94|VJMPh&Pms~6X7KC9$F^5X`WqRT;dSG&pk%N?j9Nug^ zCii3Pd1KXz?A8$SM!EsXKD1>5lVd;J$Fd;$dC)wiT#P>Ne`stf1$Q6? z5MlSzk-x@b1%i+JlR@5xEy4uecB5DfQBkO_o93dq)QAx$`i*>kh)uZtKF zBD$MYA5$U%!I&RtOS|pYh%g7Z0fLYMY&BGZAR{hC4|5OBJ=;l4tfmf9o+gFNMrU?! z`&$qMN3hkv6VNgx3=qZSew*9dPP9%aae-j=Z#K4!>F;bZuj&TZFE^+6w*=ulI3WJj zOmHXEu%5;Yhw~tU=G?R7GkQK)pd0w>GnIf%erb) zlg1w)o&4zHGfdZ zFQ4NK!MgG5Gkjh3EQdXN;=owFd$~~KV6g$VL7;Cy5T;;I7)-jpn!Px~Aa>n~L0mlE z+aNB0kWo0sPzjILfr8uF7lt@n!2wAZ;=tG!2tmjooR#np?ok-jqflJNg@G~R@W`Yx zSHU475JG9_by{+L&N2rc335bKA-TN)juC+n3J+TghMk?bO#_m{d&zmbry`7N&p9ojTS#a z%;n!In`p2Ya5t`kkVWB!u?*(T+rsZrVFlqc)aLy%S+**zz5VeG61)c6AU&CVx|6B7 zlnJd`Ynhv)9cp+*%DmRl$*XX1AhA+8s<9Ao=dF))O~*SbOWUR&TMhdgu1cmS#hL|C z36JU)yUC9s4Nb@p3GQK>H$kg;#Y1`daoV#sj$IVwU8VYsdFs9n5Zg~V3&QxD%P!mtq-?ksEDq6+Mt@r!S}Ff2oW7mzZ2ageE2LLV-8ibl}q%$*oU;sU{bc-&)e zALAdVs?1TBAO(*_9E3hmb|T1rc4AZ#7l=yG-Efnfu#68pK&N{mY)0^vCJ0G<~(>zC&h?>Y!Jq{g9q zaC|{4`0eYx?cCNeOiLmH;WGBX#ZfNIyU3-O3GZ>dq1YXT!XVMm7SxZ3)UM3#NI)R| z{Gq`EJe*k%sAvl;)8FJwgf$RKL1Zl;KDrvb-z}RPaUN3(gs13%yK%wPzWj8@TJ~bl zYRKUTWMNEtDasdRj4h1HR06^E048Es14k&dS9>57;ndw#gk7s6;)gjO{c3v-Ga#OL9C5e0FLK8qo>G~pZGt*Rhw&2|slVi{zM zk#3=QAZzdv9HWp{PZvh@cP#WbFKJYD7aPRw5xGzcqgY8)U#{-^b36{e>Z^FXJd(QB z6A%`UTG}EKxdVtDGUvj0ef_&=G(X@w5rO=1p+LA8<$e|+;F=Hg4GRH}TqoYMkZUnG z3Fqf$gZ-7HZy2_ycu$3i=*KJTdTt>Oymvg#9(&{LFZ?-AjmkgXrmo3|LA;NHKNMG> zc$_N`@%Z}gOBv;!JVqQI%{|**1wqI#=gy{|@q>pV4i?}ADk2U-4mdMN*$YZ8gOC_e za8B#HbN~AL76?KP80up5#9;%31Q|UTDF|8N3xSBox#JcH$w9DtCD>n+=)I6PP6))o z(%+VWyvHCU1`*wzd$!|jM4lid$+1Al3b~|-Y5-Q!T<#+X(-LJdL>!WZCm>(x9(*U_ zAmklPvk!I-DMGn>FF(Py)NP)6bavmgX0FQqCstw^;who zhC&hXrM-AEK5tt(kcr4bVM%m(Z&~0bE6)$sr07W~IzEr?5-VafKCgNgcS0x!zPaF^ zAc#PmhX{jERxoPm_Jh|TH4tAyu&Yg+L4-jlD^VpSk2ph8&qXB4z3N>MPIFvp{o%)- zYdZ8wSuoXKv?6YVAe`ijZcg4&i9oC7OFtF8^qOM}vVBPq&gR^abA7QeLh*eOEDKr5 zCJ5s(@?dz5Q}85d6SP~-(+GB1$tDPsGx6q#zF?Reuuk!~_0&_P{S8b;#9o;Xn<5B; zFdd1mmSLBKcQ)8u_|o6IU|zHc^_yttf`&J;pHUE!$Jy>F-qjHJevM!E_cZX%i;&>k nVSj(v?uD=5V@E_l5Zv+qGlKf{tCKeR00000NkvXXu0mjf@p!l? From 7f0abe17131bfeff0e9dd9293837da3a7886a98a Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 13 Jan 2021 11:16:00 -0300 Subject: [PATCH 004/177] [FIX] Rooms list not being updated on some cases (#2765) * Request subscriptions on RoomsListView.constructor * Removes opened rooms from last message persisting * Change server reducer * Prevent undefined ids causing query error --- app/actions/server.js | 5 ++- app/reducers/server.js | 12 +++-- app/sagas/rooms.js | 8 +++- app/views/RoomsListView/ServerDropdown.js | 2 +- app/views/RoomsListView/index.js | 54 +++++++++++------------ 5 files changed, 45 insertions(+), 36 deletions(-) diff --git a/app/actions/server.js b/app/actions/server.js index a81e20f4dbb..fea2394500b 100644 --- a/app/actions/server.js +++ b/app/actions/server.js @@ -1,11 +1,12 @@ import { SERVER } from './actionsTypes'; -export function selectServerRequest(server, version, fetchVersion = true) { +export function selectServerRequest(server, version, fetchVersion = true, changeServer = false) { return { type: SERVER.SELECT_REQUEST, server, version, - fetchVersion + fetchVersion, + changeServer }; } diff --git a/app/reducers/server.js b/app/reducers/server.js index 96b8d400c90..2c5b98199d6 100644 --- a/app/reducers/server.js +++ b/app/reducers/server.js @@ -8,7 +8,8 @@ const initialState = { version: null, loading: true, adding: false, - previousServer: null + previousServer: null, + changingServer: false }; @@ -34,7 +35,8 @@ export default function server(state = initialState, action) { version: action.version, connecting: true, connected: false, - loading: true + loading: true, + changingServer: action.changeServer }; case SERVER.SELECT_SUCCESS: return { @@ -43,14 +45,16 @@ export default function server(state = initialState, action) { version: action.version, connecting: false, connected: true, - loading: false + loading: false, + changingServer: false }; case SERVER.SELECT_FAILURE: return { ...state, connecting: false, connected: false, - loading: false + loading: false, + changingServer: false }; case SERVER.INIT_ADD: return { diff --git a/app/sagas/rooms.js b/app/sagas/rooms.js index 3f240f729d2..94670ea1f04 100644 --- a/app/sagas/rooms.js +++ b/app/sagas/rooms.js @@ -61,10 +61,16 @@ const handleRoomsRequest = function* handleRoomsRequest({ params }) { const subsToCreate = subscriptions.filter(i1 => !existingSubs.find(i2 => i1._id === i2._id)); const subsToDelete = existingSubs.filter(i1 => !subscriptions.find(i2 => i1._id === i2._id)); + const openedRooms = yield select(state => state.room.rooms); const lastMessages = subscriptions + /** Checks for opened rooms and filter them out. + * It prevents this process to try persisting the same last message on the room messages fetch. + * This race condition is easy to reproduce on push notification tap. + */ + .filter(sub => !openedRooms.includes(sub.rid)) .map(sub => sub.lastMessage && buildMessage(sub.lastMessage)) .filter(lm => lm); - const lastMessagesIds = lastMessages.map(lm => lm._id); + const lastMessagesIds = lastMessages.map(lm => lm._id).filter(lm => lm); const existingMessages = yield messagesCollection.query(Q.where('id', Q.oneOf(lastMessagesIds))).fetch(); const messagesToUpdate = existingMessages.filter(i1 => lastMessages.find(i2 => i1.id === i2._id)); const messagesToCreate = lastMessages.filter(i1 => !existingMessages.find(i2 => i1._id === i2.id)); diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index e8344d68cbf..66ac731cb1c 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -313,7 +313,7 @@ const mapStateToProps = state => ({ const mapDispatchToProps = dispatch => ({ toggleServerDropdown: () => dispatch(toggleServerDropdownAction()), - selectServerRequest: server => dispatch(selectServerRequestAction(server)), + selectServerRequest: server => dispatch(selectServerRequestAction(server, null, null, true)), appStart: params => dispatch(appStartAction(params)), initAdd: previousServer => dispatch(serverInitAddAction(previousServer)) }); diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index ed42268728b..8d39995dfa0 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -117,6 +117,7 @@ class RoomsListView extends React.Component { }), server: PropTypes.string, searchText: PropTypes.string, + changingServer: PropTypes.bool, loadingServer: PropTypes.bool, showServerDropdown: PropTypes.bool, showSortDropdown: PropTypes.bool, @@ -150,8 +151,8 @@ class RoomsListView extends React.Component { console.time(`${ this.constructor.name } init`); console.time(`${ this.constructor.name } mount`); - this.gotSubscriptions = false; this.animated = false; + this.mounted = false; this.count = 0; this.state = { searching: false, @@ -162,24 +163,14 @@ class RoomsListView extends React.Component { item: {} }; this.setHeader(); + this.getSubscriptions(); } componentDidMount() { const { - navigation, closeServerDropdown, appState + navigation, closeServerDropdown } = this.props; - - /** - * - When didMount is triggered and appState is foreground, - * it means the user is logging in and selectServer has ran, so we can getSubscriptions - * - * - When didMount is triggered and appState is background, - * it means the user has resumed the app, so selectServer needs to be triggered, - * which is going to change server and getSubscriptions will be triggered by componentWillReceiveProps - */ - if (appState === 'foreground') { - this.getSubscriptions(); - } + this.mounted = true; if (isTablet) { EventEmitter.addEventListener(KEY_COMMAND, this.handleCommands); @@ -206,17 +197,17 @@ class RoomsListView extends React.Component { } UNSAFE_componentWillReceiveProps(nextProps) { - const { loadingServer, searchText, server } = this.props; + const { + loadingServer, searchText, server, changingServer + } = this.props; - if (nextProps.server && loadingServer !== nextProps.loadingServer) { - if (nextProps.loadingServer) { - this.setState({ loading: true }); - } else { - this.getSubscriptions(); - } + // when the server is changed + if (server !== nextProps.server && loadingServer !== nextProps.loadingServer && nextProps.loadingServer) { + this.setState({ loading: true }); } - if (server && server !== nextProps.server) { - this.gotSubscriptions = false; + // when the server is changing and stopped loading + if (changingServer && loadingServer !== nextProps.loadingServer && !nextProps.loadingServer) { + this.getSubscriptions(); } if (searchText !== nextProps.searchText) { this.search(nextProps.searchText); @@ -508,11 +499,17 @@ class RoomsListView extends React.Component { tempChats = chats; } - this.internalSetState({ - chats: tempChats, - chatsUpdate, - loading: false - }); + if (this.mounted) { + this.internalSetState({ + chats: tempChats, + chatsUpdate, + loading: false + }); + } else { + this.state.chats = tempChats; + this.state.chatsUpdate = chatsUpdate; + this.state.loading = false; + } }); } @@ -1023,6 +1020,7 @@ const mapStateToProps = state => ({ user: getUserSelector(state), isMasterDetail: state.app.isMasterDetail, server: state.server.server, + changingServer: state.server.changingServer, connected: state.server.connected, searchText: state.rooms.searchText, loadingServer: state.server.loading, From 32b1b36e4841a1dfef43c6fc72ea64c0465b9f60 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 13 Jan 2021 17:22:44 -0300 Subject: [PATCH 005/177] [FIX] Share Extension hitting memory limit on iOS (#2788) * [FIX] Disallow swipe to dismiss on share extension * Limit query to 20 and clean up props * Remove rn-extension-share branch pointer * Test new branch * Remove branch --- app/views/ShareListView/index.js | 4 +--- ios/Podfile.lock | 4 ++-- ios/Pods/Local Podspecs/rn-extensions-share.podspec.json | 2 +- ios/Pods/Manifest.lock | 4 ++-- package.json | 2 +- yarn.lock | 7 +++---- 6 files changed, 10 insertions(+), 13 deletions(-) diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index f2b1d25ca5a..8d5f7b0eb5c 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -195,7 +195,7 @@ class ShareListView extends React.Component { Q.where('archived', false), Q.where('open', true), Q.experimentalSkip(0), - Q.experimentalTake(50), + Q.experimentalTake(20), Q.experimentalSortBy('room_updated_at', Q.desc) ]; if (text) { @@ -451,11 +451,9 @@ class ShareListView extends React.Component { ListFooterComponent={!searching && this.renderBorderBottom} ListHeaderComponentStyle={!searching ? { ...styles.borderBottom, borderColor: themes[theme].separatorColor } : {}} ListEmptyComponent={searching && searchText ? this.renderEmptyComponent : null} - enableEmptySections removeClippedSubviews keyboardShouldPersistTaps='always' initialNumToRender={12} - windowSize={20} /> ); } diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4d25556b424..709857fb59c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -461,7 +461,7 @@ PODS: - React - ReactNativeUiLib (3.0.4): - React - - rn-extensions-share (2.4.0): + - rn-extensions-share (2.4.1): - React - rn-fetch-blob (0.12.0): - React-Core @@ -964,7 +964,7 @@ SPEC CHECKSUMS: ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab ReactNativeUiLib: cde7263a7d308b60161cd286f95c9433e79f2f7d - rn-extensions-share: 8db79372089567cbc5aefe8444869bbc808578d3 + rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5 rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNBootSplash: b3836aa90c5bec690c6cd3c9ab355fcf98d0fe1d RNCAsyncStorage: d059c3ee71738c39834a627476322a5a8cd5bf36 diff --git a/ios/Pods/Local Podspecs/rn-extensions-share.podspec.json b/ios/Pods/Local Podspecs/rn-extensions-share.podspec.json index 9d084a5ea7f..dc0c56a99b1 100644 --- a/ios/Pods/Local Podspecs/rn-extensions-share.podspec.json +++ b/ios/Pods/Local Podspecs/rn-extensions-share.podspec.json @@ -1,6 +1,6 @@ { "name": "rn-extensions-share", - "version": "2.4.0", + "version": "2.4.1", "summary": "Share-Extension using react-native for both ios and android", "license": "MIT", "authors": { diff --git a/ios/Pods/Manifest.lock b/ios/Pods/Manifest.lock index 4d25556b424..709857fb59c 100644 --- a/ios/Pods/Manifest.lock +++ b/ios/Pods/Manifest.lock @@ -461,7 +461,7 @@ PODS: - React - ReactNativeUiLib (3.0.4): - React - - rn-extensions-share (2.4.0): + - rn-extensions-share (2.4.1): - React - rn-fetch-blob (0.12.0): - React-Core @@ -964,7 +964,7 @@ SPEC CHECKSUMS: ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab ReactNativeUiLib: cde7263a7d308b60161cd286f95c9433e79f2f7d - rn-extensions-share: 8db79372089567cbc5aefe8444869bbc808578d3 + rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5 rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNBootSplash: b3836aa90c5bec690c6cd3c9ab355fcf98d0fe1d RNCAsyncStorage: d059c3ee71738c39834a627476322a5a8cd5bf36 diff --git a/package.json b/package.json index 6b941d5a306..b41a54c50f7 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "redux-saga": "1.1.3", "remove-markdown": "^0.3.0", "reselect": "4.0.0", - "rn-extensions-share": "^2.4.0", + "rn-extensions-share": "RocketChat/rn-extensions-share", "rn-fetch-blob": "0.12.0", "rn-root-view": "^1.0.3", "semver": "7.3.2", diff --git a/yarn.lock b/yarn.lock index 12386a08bdc..1dcea128a56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13829,10 +13829,9 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rn-extensions-share@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-2.4.0.tgz#a614f6bf6cdd3948fbd7e0f2519592d4bb5f551f" - integrity sha512-zX3HcOhib805fVHR7TMYfFXrVBJWYgcrLYNB89RxbKqmSjaqUyWlHYuF61SKOs/dXXeic91e/L8d1YJa6TdzGA== +rn-extensions-share@RocketChat/rn-extensions-share: + version "2.4.1" + resolved "https://codeload.github.com/RocketChat/rn-extensions-share/tar.gz/4d7c0e4c2f300e4fb116af7b7cc0dbbc8169150c" rn-fetch-blob@0.12.0: version "0.12.0" From 4d13689503e8bfef3898b5aad3d5cd3fed3ee974 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 14 Jan 2021 14:06:19 -0300 Subject: [PATCH 006/177] [IMPROVEMENT] Threads layout tweaks (#2686) * improvement: Thread Details * fix: re-render Thread Messages Item * fix: update snapshots * improve: thread details component * fix: cast replies length * improvement: format date of threads * improvement: thread details styles * fix: wrap text * tests: update snapshot * improvement: use same date format for all dates * Icon size 24 * Remove date * Remove prop drill * Badge position * Badge container tweak * Fix inline style * Move ThreadDetails to containers * Update stories * Fix lint * Remove wrong prop Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 6885 +++++++++-------- app/containers/ThreadDetails.js | 103 + app/containers/message/Thread.js | 35 +- app/containers/message/styles.js | 4 + app/views/ThreadMessagesView/Item.js | 82 +- app/views/ThreadMessagesView/index.js | 12 + storybook/stories/Message.js | 5 - 7 files changed, 3719 insertions(+), 3407 deletions(-) create mode 100644 app/containers/ThreadDetails.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index d2bba5818b1..6d1aa6a6001 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -33112,33 +33112,6 @@ exports[`Storyshots Message list message 1`] = ` } testID="message-thread-button-How are you?" > - -  - - 1 reply + Reply - - November 10, 2017 - - - + + +  + + + 1 + + + + +  + + + 0 + + + + -  - + + + +  + + + @@ -33270,52 +33356,149 @@ exports[`Storyshots Message list message 1`] = ` - - + - + How are you? + + + +  + + + + + + + - - - - diego.mello - - - - 10:00 AM - - - - How are you? - + I'm fine! - - - -  - - - +999 replies - - - - November 10, 2017 - - - - -  - - - @@ -33662,7 +33602,7 @@ exports[`Storyshots Message list message 1`] = ` "marginTop": 6, } } - testID="message-thread-replied-on-How are you?" + testID="message-thread-replied-on-Thread with emoji :) :joy:" > - How are you? + Thread with emoji🙂 😂 - Thread with emoji🙂 😂 + Markdown: link block code - Markdown: link block code + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + How are you? - I'm fine! + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. @@ -34622,7 +34562,7 @@ exports[`Storyshots Message list message 1`] = ` "marginTop": 6, } } - testID="message-thread-replied-on-How are you?" + testID="message-thread-replied-on-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." > - How are you? + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Thread with attachment - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Sent an attachment @@ -35063,6 +35001,27 @@ exports[`Storyshots Message list message 1`] = ` + + Sequential thread messages following thread button + - -  - - + + + + + + - Thread with attachment - - - -  - - - - - - + > + diego.mello + - - - - - Sent an attachment + 10:00 AM - - - - - - - Sequential thread messages following thread button - - - - - - - - + - - - - - - - - - diego.mello - - - - 10:00 AM - - - - - -  - - 1 reply + Reply - - November 10, 2017 - - - -  - - - - - - - - - - - - - + +  + + + 1 + + + + +  + + + 0 + + + + + + + +  + + + + + + + + + + + + + + + - - - - - - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Message content - @@ -61384,30 +61111,29 @@ exports[`Storyshots Thread Messages.Item badge 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  - - - 1 - - - - -  + Message content - - November 10, 2020 - + /> - - - - - - - - - - - - - - - - - rocket.cat - - - November 10, 2020 - - - + + +  + + + 1 + + + + +  + + + 1 + + + + + + +  + + + + + + + + + + + - Message content - + + + + @@ -61715,30 +61476,29 @@ exports[`Storyshots Thread Messages.Item badge 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  + Message content - - 1 - + /> - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + - - - - - - - - - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Message content - @@ -62046,30 +61841,29 @@ exports[`Storyshots Thread Messages.Item badge 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  + Message content - - 1 - + /> - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + - - - - - - - - + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "opacity": 1, + } + } + testID="thread-messages-view-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + > - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - @@ -62364,30 +62193,29 @@ exports[`Storyshots Thread Messages.Item badge 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - - 1 - + /> - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + - - - - - - - - - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Message content - @@ -62715,80 +62578,29 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, - } - } - > - -  - - - 1 - - - -  + rocket.cat - 1 + November 10, 2020 -  + Message content - + + + + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + @@ -62873,148 +62836,89 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` Object { "backgroundColor": "#cbcbcc", }, - ] - } - /> - - - - - - + ] + } + /> + - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - @@ -63023,30 +62927,29 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  - - - 1 + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - + + +  + + + 1 + + + + +  + + + 1 + + + + -  - - - November 10, 2020 - + "opacity": 1, + } + } + > + +  + + + @@ -63185,144 +63189,85 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` } /> - - - - - - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Message content - @@ -63331,80 +63276,29 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, - } - } - > - -  - - - 1000 - - - -  + rocket.cat - 1000 + November 10, 2020 -  + Message content - + + + + +  + + + +999 + + + + +  + + + +999 + + + + - November 10, 2020 - + + +  + + + @@ -63493,144 +63538,85 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` } /> - - - - - - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Attachment title - @@ -63639,30 +63625,29 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  - - - 1 + Attachment title - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + @@ -63801,144 +63887,85 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` } /> - - - - - - - Rocket Cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Message content - @@ -63947,30 +63974,29 @@ exports[`Storyshots Thread Messages.Item content 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + Rocket Cat - 1 + November 10, 2020 -  - - - 1 + Message content - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + @@ -64129,144 +64256,85 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` } /> - - - - - - - rocket.cat - - - November 10, 2020 - - - - Message content - + + + + @@ -64275,30 +64343,29 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  + Message content - - 1 - + /> - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + - - - - - - - - - - rocket.cat - - - November 10, 2020 - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + - - Message content - @@ -64593,30 +64695,29 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  + Message content - - 1 - + /> - + + +  + + + 1 + + + -  - - + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + - - - - - - - - - - rocket.cat - - - November 10, 2020 - - - - Message content - + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + + @@ -64911,30 +65047,29 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` Object { "alignItems": "center", "flexDirection": "row", - "justifyContent": "center", - "marginRight": 8, + "marginBottom": 2, } } > -  + rocket.cat - 1 + November 10, 2020 -  + Message content - - 1 - + /> - -  - - + +  + + + 1 + + + + +  + + + 1 + + + + - November 10, 2020 - + + +  + + + - - - { + let { tcount } = item; + if (tcount >= 1000) { + tcount = '+999'; + } else if (tcount >= 100) { + tcount = '+99'; + } + + let replies = item?.replies?.length ?? 0; + if (replies >= 1000) { + replies = '+999'; + } else if (replies >= 100) { + replies = '+99'; + } + + const isFollowing = item.replies?.find(u => u === user?.id); + + return ( + + + + + {tcount} + + + + + {replies} + + + + + {badgeColor ? : null } + toggleFollowThread?.(isFollowing, item.id)}> + + + + + ); +}; +ThreadDetails.propTypes = { + item: PropTypes.object, + user: PropTypes.object, + badgeColor: PropTypes.string, + toggleFollowThread: PropTypes.func, + style: PropTypes.object, + theme: PropTypes.string +}; + +export default withTheme(ThreadDetails); diff --git a/app/containers/message/Thread.js b/app/containers/message/Thread.js index 320bb3cc312..47d9c8692bc 100644 --- a/app/containers/message/Thread.js +++ b/app/containers/message/Thread.js @@ -1,15 +1,12 @@ import React, { useContext } from 'react'; import { View, Text } from 'react-native'; import PropTypes from 'prop-types'; -import Touchable from 'react-native-platform-touchable'; -import { formatMessageCount } from './utils'; import styles from './styles'; -import { CustomIcon } from '../../lib/Icons'; -import { THREAD } from './constants'; import { themes } from '../../constants/colors'; -import { formatDateThreads } from '../../utils/room'; import MessageContext from './Context'; +import ThreadDetails from '../ThreadDetails'; +import I18n from '../../i18n'; const Thread = React.memo(({ msg, tcount, tlm, isThreadRoom, theme, id @@ -21,28 +18,26 @@ const Thread = React.memo(({ const { threadBadgeColor, toggleFollowThread, user, replies } = useContext(MessageContext); - const time = formatDateThreads(tlm); - const buttonText = formatMessageCount(tcount, THREAD); - const isFollowing = replies?.find(u => u === user.id); return ( - - {buttonText} + {I18n.t('Reply')} - {time} - {threadBadgeColor ? : null} - toggleFollowThread(isFollowing, id)}> - - + ); }, (prevProps, nextProps) => { diff --git a/app/containers/message/styles.js b/app/containers/message/styles.js index 74e2b000102..dd0dff627d8 100644 --- a/app/containers/message/styles.js +++ b/app/containers/message/styles.js @@ -176,5 +176,9 @@ export default StyleSheet.create({ }, encrypted: { justifyContent: 'center' + }, + threadDetails: { + flex: 1, + marginLeft: 12 } }); diff --git a/app/views/ThreadMessagesView/Item.js b/app/views/ThreadMessagesView/Item.js index 168ff93c291..89ae95cc628 100644 --- a/app/views/ThreadMessagesView/Item.js +++ b/app/views/ThreadMessagesView/Item.js @@ -1,15 +1,15 @@ import React from 'react'; import PropTypes from 'prop-types'; import { View, Text, StyleSheet } from 'react-native'; +import Touchable from 'react-native-platform-touchable'; import { withTheme } from '../../theme'; import Avatar from '../../containers/Avatar'; -import Touch from '../../utils/touch'; import sharedStyles from '../Styles'; import { themes } from '../../constants/colors'; import Markdown from '../../containers/markdown'; -import { CustomIcon } from '../../lib/Icons'; import { formatDateThreads, makeThreadName } from '../../utils/room'; +import ThreadDetails from '../../containers/ThreadDetails'; const styles = StyleSheet.create({ container: { @@ -38,34 +38,26 @@ const styles = StyleSheet.create({ avatar: { marginRight: 8 }, - detailsContainer: { - marginTop: 8, - flexDirection: 'row' - }, - detailContainer: { - marginRight: 8, - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center' + threadDetails: { + marginTop: 8 }, - detailText: { - fontSize: 10, - marginLeft: 2, - ...sharedStyles.textSemibold + badge: { + width: 8, + height: 8, + borderRadius: 4, + marginHorizontal: 8, + alignSelf: 'center' }, - badgeContainer: { - marginLeft: 8, - justifyContent: 'center' + messageContainer: { + flexDirection: 'row' }, - badge: { - width: 12, - height: 12, - borderRadius: 6 + markdown: { + flex: 1 } }); const Item = ({ - item, baseUrl, theme, useRealName, user, badgeColor, onPress + item, baseUrl, theme, useRealName, user, badgeColor, onPress, toggleFollowThread }) => { const username = (useRealName && item?.u?.name) || item?.u?.username; let time; @@ -73,13 +65,8 @@ const Item = ({ time = formatDateThreads(item.ts); } - let tlm; - if (item?.tlm) { - tlm = formatDateThreads(item.tlm); - } - return ( - onPress(item)} testID={`thread-messages-view-${ item.msg }`} style={{ backgroundColor: themes[theme].backgroundColor }}> + onPress(item)} testID={`thread-messages-view-${ item.msg }`} style={{ backgroundColor: themes[theme].backgroundColor }}> {username} {time} - - - - - {item?.tcount} - - - - - {item?.replies?.length} - - - - - {tlm} - + + + {badgeColor ? : null } + - {badgeColor - ? ( - - - - ) - : null} - + ); }; @@ -133,7 +106,8 @@ Item.propTypes = { useRealName: PropTypes.bool, user: PropTypes.object, badgeColor: PropTypes.string, - onPress: PropTypes.func + onPress: PropTypes.func, + toggleFollowThread: PropTypes.func }; export default withTheme(Item); diff --git a/app/views/ThreadMessagesView/index.js b/app/views/ThreadMessagesView/index.js index ba824605cf0..d75328a9923 100644 --- a/app/views/ThreadMessagesView/index.js +++ b/app/views/ThreadMessagesView/index.js @@ -33,6 +33,8 @@ import { isIOS } from '../../utils/deviceInfo'; import { getBadgeColor, makeThreadName } from '../../utils/room'; import { getHeaderTitlePosition } from '../../containers/Header'; import SearchHeader from './SearchHeader'; +import EventEmitter from '../../utils/events'; +import { LISTENER } from '../../containers/Toast'; const API_FETCH_COUNT = 50; @@ -410,6 +412,15 @@ class ThreadMessagesView extends React.Component { this.setState({ currentFilter: filter, displayingThreads }); } + toggleFollowThread = async(isFollowingThread, tmid) => { + try { + await RocketChat.toggleFollowMessage(tmid, !isFollowingThread); + EventEmitter.emit(LISTENER, { message: isFollowingThread ? I18n.t('Unfollowed_thread') : I18n.t('Following_thread') }); + } catch (e) { + log(e); + } + } + renderItem = ({ item }) => { const { user, navigation, baseUrl, useRealName @@ -426,6 +437,7 @@ class ThreadMessagesView extends React.Component { badgeColor }} onPress={this.onThreadPress} + toggleFollowThread={this.toggleFollowThread} /> ); } diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index a5e11440811..e2f67a469a3 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -469,11 +469,6 @@ export default ({ theme }) => { tcount={1} tlm={date} /> - Date: Thu, 14 Jan 2021 14:06:38 -0300 Subject: [PATCH 007/177] [CHORE] Remove some migrations (#2792) * Remove force rooms refresh * Remove MMKV migration --- .../chat/rocket/reactnative/MainActivity.java | 56 ------------------- app/lib/encryption/constants.js | 1 - app/lib/userPreferences.js | 21 ------- app/sagas/login.js | 30 +--------- ios/RocketChatRN/AppDelegate.m | 21 ------- 5 files changed, 2 insertions(+), 127 deletions(-) diff --git a/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java b/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java index 5eefab57aa3..e65fc28b350 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java @@ -14,7 +14,6 @@ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; import com.zoontek.rnbootsplash.RNBootSplash; -import com.tencent.mmkv.MMKV; import com.google.gson.Gson; class ThemePreferences { @@ -36,61 +35,6 @@ protected void onCreate(Bundle savedInstanceState) { // https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704067 super.onCreate(null); RNBootSplash.init(R.drawable.launch_screen, MainActivity.this); - - MMKV.initialize(MainActivity.this); - - // Start the MMKV container - MMKV defaultMMKV = MMKV.defaultMMKV(); - boolean alreadyMigrated = defaultMMKV.decodeBool("alreadyMigrated"); - - if (!alreadyMigrated) { - // MMKV Instance that will be used by JS - MMKV mmkv = MMKV.mmkvWithID("default"); - - // SharedPreferences -> MMKV (Migration) - SharedPreferences sharedPreferences = getSharedPreferences("react-native", Context.MODE_PRIVATE); - mmkv.importFromSharedPreferences(sharedPreferences); - - // SharedPreferences only save strings, so we saved this value as a String and now we'll need to cast into a MMKV object - - // Theme preferences object - String THEME_PREFERENCES_KEY = "RC_THEME_PREFERENCES_KEY"; - String themeJson = sharedPreferences.getString(THEME_PREFERENCES_KEY, ""); - if (!themeJson.isEmpty()) { - ThemePreferences themePreferences = new Gson().fromJson(themeJson, ThemePreferences.class); - WritableMap themeMap = new Arguments().createMap(); - themeMap.putString("currentTheme", themePreferences.currentTheme); - themeMap.putString("darkLevel", themePreferences.darkLevel); - Bundle bundle = Arguments.toBundle(themeMap); - mmkv.encode(THEME_PREFERENCES_KEY, bundle); - } - - // Sort preferences object - String SORT_PREFS_KEY = "RC_SORT_PREFS_KEY"; - String sortJson = sharedPreferences.getString(SORT_PREFS_KEY, ""); - if (!sortJson.isEmpty()) { - SortPreferences sortPreferences = new Gson().fromJson(sortJson, SortPreferences.class); - WritableMap sortMap = new Arguments().createMap(); - sortMap.putString("sortBy", sortPreferences.sortBy); - if (sortPreferences.groupByType != null) { - sortMap.putBoolean("groupByType", sortPreferences.groupByType); - } - if (sortPreferences.showFavorites != null) { - sortMap.putBoolean("showFavorites", sortPreferences.showFavorites); - } - if (sortPreferences.showUnread != null) { - sortMap.putBoolean("showUnread", sortPreferences.showUnread); - } - Bundle bundle = Arguments.toBundle(sortMap); - mmkv.encode(SORT_PREFS_KEY, bundle); - } - - // Remove all our keys of SharedPreferences - sharedPreferences.edit().clear().commit(); - - // Mark migration complete - defaultMMKV.encode("alreadyMigrated", true); - } } /** diff --git a/app/lib/encryption/constants.js b/app/lib/encryption/constants.js index 216746a7b16..d10539eda88 100644 --- a/app/lib/encryption/constants.js +++ b/app/lib/encryption/constants.js @@ -2,7 +2,6 @@ export const E2E_MESSAGE_TYPE = 'e2e'; export const E2E_PUBLIC_KEY = 'RC_E2E_PUBLIC_KEY'; export const E2E_PRIVATE_KEY = 'RC_E2E_PRIVATE_KEY'; export const E2E_RANDOM_PASSWORD_KEY = 'RC_E2E_RANDOM_PASSWORD_KEY'; -export const E2E_REFRESH_MESSAGES_KEY = 'E2E_REFRESH_MESSAGES_KEY'; export const E2E_STATUS = { PENDING: 'pending', DONE: 'done' diff --git a/app/lib/userPreferences.js b/app/lib/userPreferences.js index 633a5198d8c..3377856d630 100644 --- a/app/lib/userPreferences.js +++ b/app/lib/userPreferences.js @@ -1,7 +1,5 @@ import MMKVStorage from 'react-native-mmkv-storage'; -import log from '../utils/log'; - const MMKV = new MMKVStorage.Loader() // MODES.MULTI_PROCESS = ACCESSIBLE BY APP GROUP (iOS) .setProcessingMode(MMKVStorage.MODES.MULTI_PROCESS) @@ -11,25 +9,6 @@ const MMKV = new MMKVStorage.Loader() class UserPreferences { constructor() { this.mmkv = MMKV; - - this.encryptMigratedData(); - } - - // It should run only once - async encryptMigratedData() { - try { - const encryptMigration = await this.getBoolAsync('encryptMigration'); - - if (!encryptMigration) { - // Encrypt the migrated data - await this.mmkv.encryption.encrypt(); - - // Mark as completed - await this.setBoolAsync('encryptMigration', true); - } - } catch (e) { - log(e); - } } async getStringAsync(key) { diff --git a/app/sagas/login.js b/app/sagas/login.js index 8b883a62680..cf487eed421 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -31,7 +31,6 @@ import UserPreferences from '../lib/userPreferences'; import { inquiryRequest, inquiryReset } from '../ee/omnichannel/actions/inquiry'; import { isOmnichannelStatusAvailable } from '../ee/omnichannel/lib'; -import { E2E_REFRESH_MESSAGES_KEY } from '../lib/encryption/constants'; import Navigation from '../lib/Navigation'; const getServer = state => state.server.server; @@ -120,32 +119,7 @@ const fetchEnterpriseModules = function* fetchEnterpriseModules({ user }) { } }; -const fetchRooms = function* fetchRooms({ server }) { - try { - // Read the flag to check if refresh was already done - const refreshed = yield UserPreferences.getBoolAsync(E2E_REFRESH_MESSAGES_KEY); - if (!refreshed) { - const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); - - const serverRecord = yield serversCollection.find(server); - - // We need to reset roomsUpdatedAt to request all rooms again - // and save their respective E2EKeys to decrypt all pending messages and lastMessage - // that are already inserted on local database by other app version - yield serversDB.action(async() => { - await serverRecord.update((s) => { - s.roomsUpdatedAt = null; - }); - }); - - // Set the flag to indicate that already refreshed - yield UserPreferences.setBoolAsync(E2E_REFRESH_MESSAGES_KEY, true); - } - } catch (e) { - log(e); - } - +const fetchRooms = function* fetchRooms() { yield put(roomsRequest()); }; @@ -157,7 +131,7 @@ const handleLoginSuccess = function* handleLoginSuccess({ user }) { RocketChat.getUserPresence(user.id); const server = yield select(getServer); - yield fork(fetchRooms, { server }); + yield fork(fetchRooms); yield fork(fetchPermissions); yield fork(fetchCustomEmojis); yield fork(fetchRoles); diff --git a/ios/RocketChatRN/AppDelegate.m b/ios/RocketChatRN/AppDelegate.m index a7e8be77787..28fde17f0a4 100644 --- a/ios/RocketChatRN/AppDelegate.m +++ b/ios/RocketChatRN/AppDelegate.m @@ -69,27 +69,6 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( // AppGroup MMKV NSString *groupDir = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroup"]].path; [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogNone]; - - // Start the MMKV container - MMKV *defaultMMKV = [MMKV mmkvWithID:@"migration" mode:MMKVMultiProcess]; - BOOL alreadyMigrated = [defaultMMKV getBoolForKey:@"alreadyMigrated"]; - - if (!alreadyMigrated) { - // MMKV Instance that will be used by JS - MMKV *mmkv = [MMKV mmkvWithID:@"default" mode:MMKVMultiProcess]; - - // NSUserDefaults -> MMKV (Migration) - NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroup"]]; - [mmkv migrateFromUserDefaults:userDefaults]; - - // Remove our own keys of NSUserDefaults - for (NSString *key in [userDefaults dictionaryRepresentation].keyEnumerator) { - [userDefaults removeObjectForKey:key]; - } - - // Mark migration complete - [defaultMMKV setBool:YES forKey:@"alreadyMigrated"]; - } return YES; } From 03302198a6fae517758cc3b42fe85722b220c989 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Thu, 14 Jan 2021 14:09:15 -0300 Subject: [PATCH 008/177] Bump version to 4.14.0 (#2797) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index e4a4f5260d7..a706b998409 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.13.1" + versionName "4.14.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index b7176d5ee3f..15b7d343a15 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1717,7 +1717,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.13.1; + MARKETING_VERSION = 4.14.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1754,7 +1754,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.13.1; + MARKETING_VERSION = 4.14.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index c4bce792e45..59c55defeb2 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 4.13.1 + 4.14.0 CFBundleSignature ???? CFBundleURLTypes diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 8bb70ebe487..50ee5163d6f 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 4.13.1 + 4.14.0 CFBundleVersion 1 KeychainGroup From b77603c729aaa3616a21d2fa3d9c4d83505bc717 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 15 Jan 2021 11:14:25 -0300 Subject: [PATCH 009/177] [FIX] Messagebox tracking lost on pop gesture navigation (#2799) * Use setTimeout instead of InteractionManager * Update tracking lib --- app/containers/MessageBox/index.js | 10 +++++++--- package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index f398390591d..39f44279a76 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { - View, Alert, Keyboard, NativeModules, Text, InteractionManager + View, Alert, Keyboard, NativeModules, Text } from 'react-native'; import { connect } from 'react-redux'; import { KeyboardAccessoryView } from 'react-native-ui-lib/keyboard'; @@ -224,12 +224,12 @@ class MessageBox extends Component { this.unsubscribeFocus = navigation.addListener('focus', () => { // didFocus // We should wait pushed views be dismissed - InteractionManager.runAfterInteractions(() => { + this.trackingTimeout = setTimeout(() => { if (this.tracking && this.tracking.resetTracking) { // Reset messageBox keyboard tracking this.tracking.resetTracking(); } - }); + }, 500); }); this.unsubscribeBlur = navigation.addListener('blur', () => { this.component?.blur(); @@ -258,6 +258,10 @@ class MessageBox extends Component { } else if (!nextProps.message) { this.clearInput(); } + if (this.trackingTimeout) { + clearTimeout(this.trackingTimeout); + this.trackingTimeout = false; + } } shouldComponentUpdate(nextProps, nextState) { diff --git a/package.json b/package.json index b41a54c50f7..26768e8eafa 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "react-native-scrollable-tab-view": "^1.0.0", "react-native-simple-crypto": "RocketChat/react-native-simple-crypto", "react-native-slowlog": "^1.0.2", - "react-native-ui-lib": "RocketChat/react-native-ui-lib", + "react-native-ui-lib": "RocketChat/react-native-ui-lib#minor-improvements", "react-native-unimodules": "0.10.1", "react-native-vector-icons": "7.0.0", "react-native-webview": "10.3.2", diff --git a/yarn.lock b/yarn.lock index 1dcea128a56..36c5c405c89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13109,9 +13109,9 @@ react-native-text-size@4.0.0-rc.1: resolved "https://registry.yarnpkg.com/react-native-text-size/-/react-native-text-size-4.0.0-rc.1.tgz#1e048d345dd6a5a8e1269e0585c1a5948c478da5" integrity sha512-CysqjU2jK6Yc+a+kEI222pUyTY2ywcU2HqbFqf1KHymW6OPTdvBBHqbEJKL0QiLhQaFYDbqicM+h990s9TP00g== -react-native-ui-lib@RocketChat/react-native-ui-lib: - version "4.2.0" - resolved "https://codeload.github.com/RocketChat/react-native-ui-lib/tar.gz/48478a9567c1d5d6ade8def7297578efb04554ca" +react-native-ui-lib@RocketChat/react-native-ui-lib#minor-improvements: + version "4.2.1" + resolved "https://codeload.github.com/RocketChat/react-native-ui-lib/tar.gz/a80f38aaa947849736ce8643253991cdcb639414" dependencies: babel-plugin-transform-inline-environment-variables "^0.0.2" color "^3.1.0" From a51a98513d09f2742bd76a31506bcec93e0e19d6 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 15 Jan 2021 14:49:00 -0300 Subject: [PATCH 010/177] [FIX] Back button closing activity when on root stack screen (#2804) * Make hardware back button to behave as home button on root screens * Remove unnecessary code * Remove handleBackPress from OnboardingView * Fix lint --- android/app/src/main/AndroidManifest.xml | 2 +- .../chat/rocket/reactnative/MainActivity.java | 5 +++ app/AppContainer.js | 4 +- app/actions/app.js | 1 - app/views/OnboardingView/index.js | 38 +------------------ app/views/RoomsListView/index.js | 4 -- 6 files changed, 10 insertions(+), 44 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8c3ab8d1833..440766f1892 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -29,7 +29,7 @@ android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:exported="true" android:label="@string/app_name" - android:launchMode="singleTask" + android:launchMode="singleTop" android:windowSoftInputMode="adjustResize"> diff --git a/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java b/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java index e65fc28b350..e93eb3f9684 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java @@ -37,6 +37,11 @@ protected void onCreate(Bundle savedInstanceState) { RNBootSplash.init(R.drawable.launch_screen, MainActivity.this); } + @Override + public void invokeDefaultOnBackPressed() { + moveTaskToBack(true); + } + /** * Returns the name of the main component registered from JavaScript. This is used to schedule * rendering of the component. diff --git a/app/AppContainer.js b/app/AppContainer.js index 4023635f737..9ec17ad433c 100644 --- a/app/AppContainer.js +++ b/app/AppContainer.js @@ -7,7 +7,7 @@ import { connect } from 'react-redux'; import Navigation from './lib/Navigation'; import { defaultHeader, getActiveRouteName, navigationTheme } from './utils/navigation'; import { - ROOT_LOADING, ROOT_OUTSIDE, ROOT_NEW_SERVER, ROOT_INSIDE, ROOT_SET_USERNAME, ROOT_BACKGROUND + ROOT_LOADING, ROOT_OUTSIDE, ROOT_NEW_SERVER, ROOT_INSIDE, ROOT_SET_USERNAME } from './actions/app'; // Stacks @@ -65,7 +65,7 @@ const App = React.memo(({ root, isMasterDetail }) => { > <> - {root === ROOT_LOADING || root === ROOT_BACKGROUND ? ( + {root === ROOT_LOADING ? ( { - this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress); - }); - this.unsubscribeBlur = navigation.addListener('blur', () => { - if (this.backHandler && this.backHandler.remove) { - this.backHandler.remove(); - } - }); - } - shouldComponentUpdate(nextProps) { const { theme } = this.props; if (theme !== nextProps.theme) { @@ -54,21 +39,6 @@ class OnboardingView extends React.Component { return false; } - componentWillUnmount() { - if (this.unsubscribeFocus) { - this.unsubscribeFocus(); - } - if (this.unsubscribeBlur) { - this.unsubscribeBlur(); - } - } - - handleBackPress = () => { - const { appStart } = this.props; - appStart({ root: ROOT_BACKGROUND }); - return false; - } - connectServer = () => { logEvent(events.ONBOARD_JOIN_A_WORKSPACE); const { navigation } = this.props; @@ -116,8 +86,4 @@ class OnboardingView extends React.Component { } } -const mapDispatchToProps = dispatch => ({ - appStart: params => dispatch(appStartAction(params)) -}); - -export default connect(null, mapDispatchToProps)(withTheme(OnboardingView)); +export default withTheme(OnboardingView); diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 8d39995dfa0..6ec23f29c98 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -29,7 +29,6 @@ import { roomsRequest as roomsRequestAction, closeServerDropdown as closeServerDropdownAction } from '../../actions/rooms'; -import { appStart as appStartAction, ROOT_BACKGROUND } from '../../actions/app'; import debounce from '../../utils/debounce'; import { isIOS, isTablet } from '../../utils/deviceInfo'; import RoomsListHeaderView from './Header'; @@ -549,12 +548,10 @@ class RoomsListView extends React.Component { handleBackPress = () => { const { searching } = this.state; - const { appStart } = this.props; if (searching) { this.cancelSearch(); return true; } - appStart({ root: ROOT_BACKGROUND }); return false; }; @@ -1044,7 +1041,6 @@ const mapDispatchToProps = dispatch => ({ toggleSortDropdown: () => dispatch(toggleSortDropdownAction()), openSearchHeader: () => dispatch(openSearchHeaderAction()), closeSearchHeader: () => dispatch(closeSearchHeaderAction()), - appStart: params => dispatch(appStartAction(params)), roomsRequest: params => dispatch(roomsRequestAction(params)), selectServerRequest: server => dispatch(selectServerRequestAction(server)), closeServerDropdown: () => dispatch(closeServerDropdownAction()) From a1bd97f658c8fb20f76e92250f04266a65108a98 Mon Sep 17 00:00:00 2001 From: phriedrich Date: Tue, 19 Jan 2021 17:15:13 +0100 Subject: [PATCH 011/177] [i18n] Add missing German strings (#2715) Co-authored-by: Diego Mello --- app/i18n/locales/de.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/app/i18n/locales/de.js b/app/i18n/locales/de.js index 2413ee66c24..7832d47a1a6 100644 --- a/app/i18n/locales/de.js +++ b/app/i18n/locales/de.js @@ -280,6 +280,8 @@ export default { Invite_Link: 'Einladungs-Link', Invite_users: 'Benutzer einladen', Join: 'Beitreten', + Join_Code: 'Beitrittscode', + Insert_Join_Code: 'Beitrittscode eingeben', Join_our_open_workspace: 'Tritt unserem offenen Arbeitsbereich bei', Join_your_workspace: 'Tritt deinem Arbeitsbereich bei', Just_invited_people_can_access_this_channel: 'Nur eingeladene Personen können auf diesen Kanal zugreifen', @@ -318,7 +320,7 @@ export default { Message_Reported: 'Nachricht gemeldet', Microphone_Permission_Message: 'Rocket.Chat benötigt Zugriff auf das Mikrofon, damit du eine Audionachricht senden kannst.', Microphone_Permission: 'Mikrofonberechtigung', - Mute: 'Stumm', + Mute: 'Diesem Benutzer das Chatten verbieten', muted: 'stummgeschaltet', My_servers: 'Meine Server', N_people_reacted: '{{n}} Leute haben reagiert', @@ -680,5 +682,27 @@ export default { No_threads: 'Es gibt keine Threads', No_threads_following: 'Du folgst keinen Threads', No_threads_unread: 'Es gibt keine ungelesenen Threads', - Messagebox_Send_to_channel: 'an Kanal senden' + Messagebox_Send_to_channel: 'an Kanal senden', + Set_as_leader: 'Zum Diskussionsleiter ernennen', + Set_as_moderator: 'Zum Moderator ernennen', + Set_as_owner: 'Zum Besitzer machen', + Remove_as_leader: 'Als Diskussionsleiter entfernen', + Remove_as_moderator: 'Moderatorenrechte entfernen', + Remove_as_owner: 'Als Eigentümer entfernen', + Remove_from_room: 'Aus dem Raum entfernen', + Ignore: 'Ignorieren', + Unignore: 'Nicht mehr ignorieren', + User_has_been_ignored: 'Benutzer wurde stumm geschaltet', + User_has_been_unignored: 'Benutzer nicht mehr stumm geschaltet', + User_has_been_removed_from_s: 'Benutzer wurde aus {{s}} entfernt', + User__username__is_now_a_leader_of__room_name_: 'Benutzer {{username}} ist nun Diskussionsleiter von {{room_name}}', + User__username__is_now_a_moderator_of__room_name_: 'Benutzer {{username}} ist nun Moderator von {{room_name}}', + User__username__is_now_a_owner_of__room_name_: 'Benutzer {{username}} ist nun Eigentümer von {{room_name}}', + User__username__removed_from__room_name__leaders: 'Benutzer {{username}} als Diskussionsleiter von {{room_name}} entfernt', + User__username__removed_from__room_name__moderators: 'Benutzer {{username}} als Moderator von {{room_name}} entfernt', + User__username__removed_from__room_name__owners: 'Benutzer {{username}} als Eigentümer von {{room_name}} entfernt', + The_user_will_be_removed_from_s: 'Der Benutzer wird aus {{s}} entfernt', + Yes_remove_user: 'Ja, Benutzer entfernen!', + Direct_message: 'Direktnachricht', + Message_Ignored: 'Nachricht ignoriert. Antippen um sie zu zeigen.' }; From db5074ab70b6a62f2c9352340929991bbadfb554 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 20 Jan 2021 14:34:01 -0300 Subject: [PATCH 012/177] [NEW] Encrypted Discussions (#2813) * I18n key fix * Add encrypted switch * Remove unused i18n keys * Add enabled to encryption reducer * Show encrypted option on CreateDiscussionView only when e2e encryption is properly set * Add localSearch and use it on search * Use encrypted from parent channel * Fix method calls as rest api with 2fa enabled * Fix logout after reset keys * Use encryption reducer instead of lib directly to check render * Check for room type logic to display encryption option on create discussion * Check toggle-room-e2e-encryption permission on RoomActionsView * Check for encryption status instead of setting on server * Fix * Disable switch instead of hide it * Fix spotlight for DMs * Fix server test --- app/actions/actionsTypes.js | 2 +- app/actions/encryption.js | 8 +++ app/i18n/locales/ar.js | 2 - app/i18n/locales/de.js | 2 - app/i18n/locales/en.js | 4 +- app/i18n/locales/fr.js | 2 - app/i18n/locales/it.js | 2 - app/i18n/locales/pt-BR.js | 2 - app/i18n/locales/ru.js | 2 - app/i18n/locales/zh-CN.js | 2 - app/i18n/locales/zh-TW.js | 2 - app/lib/encryption/encryption.js | 4 -- app/lib/rocketchat.js | 68 ++++++++++++------- app/reducers/encryption.js | 7 ++ app/sagas/encryption.js | 13 ++-- app/utils/log/events.js | 1 + app/views/CreateChannelView.js | 12 ++-- .../CreateDiscussionView/SelectChannel.js | 4 +- app/views/CreateDiscussionView/index.js | 51 ++++++++------ app/views/E2EEncryptionSecurityView.js | 23 ++++--- app/views/RoomActionsView/index.js | 46 +++++++++---- app/views/RoomInfoEditView/index.js | 8 +-- 22 files changed, 160 insertions(+), 107 deletions(-) diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index e27a3d11ef4..0d18c9445a1 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -69,4 +69,4 @@ export const INVITE_LINKS = createRequestTypes('INVITE_LINKS', [ export const SETTINGS = createRequestTypes('SETTINGS', ['CLEAR', 'ADD']); export const APP_STATE = createRequestTypes('APP_STATE', ['FOREGROUND', 'BACKGROUND']); export const ENTERPRISE_MODULES = createRequestTypes('ENTERPRISE_MODULES', ['CLEAR', 'SET']); -export const ENCRYPTION = createRequestTypes('ENCRYPTION', ['INIT', 'STOP', 'DECODE_KEY', 'SET_BANNER']); +export const ENCRYPTION = createRequestTypes('ENCRYPTION', ['INIT', 'STOP', 'DECODE_KEY', 'SET', 'SET_BANNER']); diff --git a/app/actions/encryption.js b/app/actions/encryption.js index 15eb7df20c2..390dfe9034b 100644 --- a/app/actions/encryption.js +++ b/app/actions/encryption.js @@ -12,6 +12,14 @@ export function encryptionStop() { }; } +export function encryptionSet(enabled = false, banner = null) { + return { + type: types.ENCRYPTION.SET, + enabled, + banner + }; +} + export function encryptionSetBanner(banner) { return { type: types.ENCRYPTION.SET_BANNER, diff --git a/app/i18n/locales/ar.js b/app/i18n/locales/ar.js index 6cb0ff979e4..814210beefd 100644 --- a/app/i18n/locales/ar.js +++ b/app/i18n/locales/ar.js @@ -562,7 +562,6 @@ export default { Username: 'اسم المستخدم', Username_or_email: 'اسم المستخدم أو البريد الالكتروني', Uses_server_configuration: 'يستخدم إعداد الخادم', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'عادةً، النقاش يبدأ بسؤال، على سبيل المثال: كيف أرفع صورة؟', Validating: 'يتم التحقق', Registration_Succeeded: 'تم التسجيل بنجاح', Verify: 'تحقق', @@ -597,7 +596,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'تحتاج إلى الوصول إلى خادم Rocket.Chat واحد على الأقل لمشاركة شيء ما', You_need_to_verifiy_your_email_address_to_get_notications: 'يجب تأكيد البريد الإلكتروني حتى تصلك الإشعارات', Your_certificate: 'شهادتك', - Your_message: 'رسالتك', Your_invite_link_will_expire_after__usesLeft__uses: 'سوف تنتهي صلاحية رابط الدعوة الخاص بك بعد {{usesLeft}} استخدامات', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}} أو بعد {{usesLeft}} استخدامات', Your_invite_link_will_expire_on__date__: 'ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}}', diff --git a/app/i18n/locales/de.js b/app/i18n/locales/de.js index 7832d47a1a6..2f618131530 100644 --- a/app/i18n/locales/de.js +++ b/app/i18n/locales/de.js @@ -565,7 +565,6 @@ export default { Username: 'Benutzername', Username_or_email: 'Benutzername oder E-Mail-Adresse', Uses_server_configuration: 'Nutzt Servereinstellungen', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Üblicherweise beginnt eine Diskussion mit einer Frage, beispielsweise: "Wie lade ich ein Bild hoch?"', Validating: 'Validierung', Registration_Succeeded: 'Registrierung erfolgreich!', Verify: 'Überprüfen', @@ -600,7 +599,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Du benötigst Zugang zu mindestens einem Rocket.Chat-Server um etwas zu teilen.', You_need_to_verifiy_your_email_address_to_get_notications: 'Du musst deine Email-Adresse bestätigen um Benachrichtigungen zu erhalten.', Your_certificate: 'Dein Zertifikat', - Your_message: 'Deine Nachricht', Your_invite_link_will_expire_after__usesLeft__uses: 'Dein Einladungs-Link wird nach {{usesLeft}} Benutzungen ablaufen.', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Dein Einladungs-Link wird am {{date}} oder nach {{usesLeft}} Benutzungen ablaufen.', Your_invite_link_will_expire_on__date__: 'Dein Einladungs-Link wird am {{date}} ablaufen.', diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index cbc22609867..b34fc69f000 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -223,7 +223,7 @@ export default { Enter_Your_Encryption_Password_desc1: 'This will allow you to access your encrypted private groups and direct messages.', Enter_Your_Encryption_Password_desc2: 'You need to enter the password to encode/decode messages every place you use the chat.', Encryption_error_title: 'Your encryption password seems wrong', - Encryption_error_desc: 'Wasn\'t possible to decode your encryption key to be imported.', + Encryption_error_desc: 'It wasn\'t possible to decode your encryption key to be imported.', Everyone_can_access_this_channel: 'Everyone can access this channel', Error_uploading: 'Error uploading', Expiration_Days: 'Expiration (Days)', @@ -565,7 +565,6 @@ export default { Username: 'Username', Username_or_email: 'Username or email', Uses_server_configuration: 'Uses server configuration', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Usually, a discussion starts with a question, like "How do I upload a picture?"', Validating: 'Validating', Registration_Succeeded: 'Registration Succeeded!', Verify: 'Verify', @@ -600,7 +599,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'You need to access at least one Rocket.Chat server to share something.', You_need_to_verifiy_your_email_address_to_get_notications: 'You need to verify your email address to get notifications', Your_certificate: 'Your Certificate', - Your_message: 'Your message', Your_invite_link_will_expire_after__usesLeft__uses: 'Your invite link will expire after {{usesLeft}} uses.', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Your invite link will expire on {{date}} or after {{usesLeft}} uses.', Your_invite_link_will_expire_on__date__: 'Your invite link will expire on {{date}}.', diff --git a/app/i18n/locales/fr.js b/app/i18n/locales/fr.js index 31a0e280d8b..71051fb90f6 100644 --- a/app/i18n/locales/fr.js +++ b/app/i18n/locales/fr.js @@ -531,7 +531,6 @@ export default { Username: 'Nom d\'utilisateur', Username_or_email: 'Nom d\'utilisateur ou address e-mail', Uses_server_configuration: 'Utilise la configuration du serveur', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Habituellement, une discussion commence par une question, comme "Comment télécharger une image?"', Validating: 'Validation', Registration_Succeeded: 'Inscription réussie!', Verify: 'Vérifier', @@ -565,7 +564,6 @@ export default { Logged_out_by_server: 'Vous avez été déconnecté par le serveur. Veuillez vous reconnecter.', You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Vous devez accéder à au moins un serveur Rocket.Chat pour partager quelque chose.', Your_certificate: 'Votre Certificat', - Your_message: 'Votre message', Your_invite_link_will_expire_after__usesLeft__uses: 'Votre lien d\'invitation expirera après {{usesLeft}} utilisations.', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Votre lien d\'invitation expirera le {{date}} ou après {{usesLeft}} utilisations.', Your_invite_link_will_expire_on__date__: 'Votre lien d\'invitation expirera le {{date}}.', diff --git a/app/i18n/locales/it.js b/app/i18n/locales/it.js index f5fdcdb5454..35bd581c5d6 100644 --- a/app/i18n/locales/it.js +++ b/app/i18n/locales/it.js @@ -560,7 +560,6 @@ export default { Username: 'Username', Username_or_email: 'Username o email', Uses_server_configuration: 'Usa la configurazione del server', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Una discussione inizia solitamente con una domanda, ad esempio: "Come posso caricare una foto?"', Validating: 'Validazione', Registration_Succeeded: 'Registrazione completata!', Verify: 'Verifica', @@ -595,7 +594,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Devi accedere ad almeno un server Rocket.Chat prima di condividere qualcosa.', You_need_to_verifiy_your_email_address_to_get_notications: 'Devi verificare il tuo indirizzo e-mail per ricevere le notifiche', Your_certificate: 'Il tuo certificato', - Your_message: 'Il tuo messaggio', Your_invite_link_will_expire_after__usesLeft__uses: 'Il tuo link di invito scadrà dopo {{usesLeft}} utilizzi.', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Il tuo link di invito scadrà il {{date}} oppure dopo {{usesLeft}} utilizzi.', Your_invite_link_will_expire_on__date__: 'Il tuo link di invito scadrà il {{date}}.', diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index e9625e9643c..dfc416dd577 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -522,7 +522,6 @@ export default { Username: 'Usuário', Username_or_email: 'Usuário ou email', Uses_server_configuration: 'Usar configuração do servidor', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Normalmente, uma discussão começa com uma pergunta como: Como faço para enviar uma foto?', Verify: 'Verificar', Verify_email_title: 'Registrado com sucesso!', Verify_email_desc: 'Nós lhe enviamos um e-mail para confirmar o seu registro. Se você não receber um e-mail em breve, por favor retorne e tente novamente.', @@ -541,7 +540,6 @@ export default { You_are_in_preview_mode: 'Está é uma prévia do canal', You_are_offline: 'Você está offline', You_can_search_using_RegExp_eg: 'Você pode usar expressões regulares, por exemplo `/^text$/i`', - Your_message: 'Sua mensagem', You_need_to_verifiy_your_email_address_to_get_notications: 'Você precisa confirmar seu endereço de e-mail para obter notificações', You_colon: 'Você: ', you_were_mentioned: 'você foi mencionado', diff --git a/app/i18n/locales/ru.js b/app/i18n/locales/ru.js index 6b82d196876..4d37232bf42 100644 --- a/app/i18n/locales/ru.js +++ b/app/i18n/locales/ru.js @@ -563,7 +563,6 @@ export default { Username: 'Имя пользователя', Username_or_email: 'Имя пользователя или email', Uses_server_configuration: 'Используется конфигурация сервера', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Обычно Обсуждение начинается с какого-либо вопроса, например, "Как мне загрузить эту картинку?"', Validating: 'Проверка', Registration_Succeeded: 'Регистрация Успешна!', Verify: 'Проверить', @@ -598,7 +597,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Вам нужно получить доступ как минимум к одному серверу Rocket.Chat, чтобы поделиться чем-то.', You_need_to_verifiy_your_email_address_to_get_notications: 'Вам необходимо проверить ваш email адрес, чтобы получать уведомления', Your_certificate: 'Ваш сертификат', - Your_message: 'Ваше сообщение', Your_invite_link_will_expire_after__usesLeft__uses: 'Ваша ссылка-приглашение станет не действительной после {{usesLeft}} ее использований.', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Ваша ссылка-приглашение станет не действительной {{date}} или после {{usesLeft}} ее использований.', Your_invite_link_will_expire_on__date__: 'Срок действия вашей ссылки-приглашения будет окончен {{date}}.', diff --git a/app/i18n/locales/zh-CN.js b/app/i18n/locales/zh-CN.js index 11f555ee70f..62ee3da5359 100644 --- a/app/i18n/locales/zh-CN.js +++ b/app/i18n/locales/zh-CN.js @@ -563,7 +563,6 @@ export default { Username: '用户名', Username_or_email: '用户名或邮箱', Uses_server_configuration: '使用服务器设置', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: '通常, 一个讨论会由一个问题开始, 例如 \\"如何上传图片?\\"', Validating: '正在验证', Registration_Succeeded: '注册成功', Verify: '验证', @@ -598,7 +597,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: '您需要访问至少一台Rocket.Chat服务器才能共享某些内容。', You_need_to_verifiy_your_email_address_to_get_notications: '您需要先验证您的邮箱以启用通知', Your_certificate: '你的证书', - Your_message: '你的信息', Your_invite_link_will_expire_after__usesLeft__uses: '您的邀请链接将在{{usesLeft}}使用后到期。', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: '您的邀请链接将于{{date}}或{{usesLeft}}使用后到期。', Your_invite_link_will_expire_on__date__: '您的邀请链接将于{{date}}到期。', diff --git a/app/i18n/locales/zh-TW.js b/app/i18n/locales/zh-TW.js index 366e7c7f1be..7bfcc3b9db4 100644 --- a/app/i18n/locales/zh-TW.js +++ b/app/i18n/locales/zh-TW.js @@ -563,7 +563,6 @@ export default { Username: '使用者名稱', Username_or_email: '使用者名稱或電子郵件', Uses_server_configuration: '使用伺服器設定', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: '通常,討論會由一個問題開始,像是 \\\'如何上傳一個圖片?\\\'', Validating: '正在驗證', Registration_Succeeded: '註冊成功', Verify: '驗證', @@ -598,7 +597,6 @@ export default { You_need_to_access_at_least_one_RocketChat_server_to_share_something: '您需要至少連接一個 Rocket.Chat 伺服器才能共享某些内容。', You_need_to_verifiy_your_email_address_to_get_notications: '您需要先驗證您的電子郵件以啟用通知', Your_certificate: '你的證書', - Your_message: '你的訊息', Your_invite_link_will_expire_after__usesLeft__uses: '您的邀請連結將在{{usesLeft}}使用後到期。', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: '您的邀請連結將於{{date}}或{{usesLeft}}使用後到期。', Your_invite_link_will_expire_on__date__: '您的邀請連結將於{{date}}到期。', diff --git a/app/lib/encryption/encryption.js b/app/lib/encryption/encryption.js index 90cbe5310e5..972f2c5889c 100644 --- a/app/lib/encryption/encryption.js +++ b/app/lib/encryption/encryption.js @@ -68,10 +68,6 @@ class Encryption { return this.readyPromise; } - get hasPrivateKey() { - return !!this.privateKey; - } - // Stop Encryption client stop = () => { this.userId = null; diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 5020ee4add4..58aa40ed455 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -596,25 +596,19 @@ const RocketChat = { readMessages, resendMessage, - async search({ text, filterUsers = true, filterRooms = true }) { + async localSearch({ text, filterUsers = true, filterRooms = true }) { const searchText = text.trim(); - - if (this.oldPromise) { - this.oldPromise('cancel'); - } - if (searchText === '') { - delete this.oldPromise; return []; } - const db = database.active; const likeString = sanitizeLikeString(searchText); let data = await db.collections.get('subscriptions').query( Q.or( Q.where('name', Q.like(`%${ likeString }%`)), Q.where('fname', Q.like(`%${ likeString }%`)) - ) + ), + Q.experimentalSortBy('room_updated_at', Q.desc) ).fetch(); if (filterUsers && !filterRooms) { @@ -627,18 +621,35 @@ const RocketChat = { data = data.map((sub) => { if (sub.t !== 'd') { - return ({ + return { rid: sub.rid, name: sub.name, fname: sub.fname, avatarETag: sub.avatarETag, t: sub.t, + encrypted: sub.encrypted, search: true - }); + }; } return sub; }); + return data; + }, + + async search({ text, filterUsers = true, filterRooms = true }) { + const searchText = text.trim(); + + if (this.oldPromise) { + this.oldPromise('cancel'); + } + + if (searchText === '') { + return []; + } + + let data = await this.localSearch({ text, filterUsers, filterRooms }); + const usernames = data.map(sub => sub.name); try { if (data.length < 7) { @@ -697,11 +708,11 @@ const RocketChat = { }, createDiscussion({ - prid, pmid, t_name, reply, users + prid, pmid, t_name, reply, users, encrypted }) { // RC 1.0.0 return this.post('rooms.createDiscussion', { - prid, pmid, t_name, reply, users + prid, pmid, t_name, reply, users, encrypted }); }, @@ -865,14 +876,7 @@ const RocketChat = { methodCallWrapper(method, ...params) { const { API_Use_REST_For_DDP_Calls } = reduxStore.getState().settings; if (API_Use_REST_For_DDP_Calls) { - return new Promise(async(resolve, reject) => { - const data = await this.post(`method.call/${ method }`, { message: JSON.stringify({ method, params }) }); - const response = JSON.parse(data.message); - if (response?.error) { - return reject(response.error); - } - return resolve(response.result); - }); + return this.post(`method.call/${ method }`, { message: JSON.stringify({ method, params }) }); } return this.methodCall(method, ...params); }, @@ -1067,14 +1071,30 @@ const RocketChat = { }, post(...args) { return new Promise(async(resolve, reject) => { + const isMethodCall = args[0]?.startsWith('method.call/'); try { const result = await this.sdk.post(...args); + + /** + * if API_Use_REST_For_DDP_Calls is enabled and it's a method call, + * responses have a different object structure + */ + if (isMethodCall) { + const response = JSON.parse(result.message); + if (response?.error) { + throw response.error; + } + return resolve(response.result); + } return resolve(result); } catch (e) { - if (e.data && (e.data.errorType === 'totp-required' || e.data.errorType === 'totp-invalid')) { - const { details } = e.data; + const errorType = isMethodCall ? e?.error : e?.data?.errorType; + const totpInvalid = 'totp-invalid'; + const totpRequired = 'totp-required'; + if ([totpInvalid, totpRequired].includes(errorType)) { + const { details } = isMethodCall ? e : e?.data; try { - await twoFactor({ method: details?.method, invalid: e.data.errorType === 'totp-invalid' }); + await twoFactor({ method: details?.method, invalid: errorType === totpInvalid }); return resolve(this.post(...args)); } catch { // twoFactor was canceled diff --git a/app/reducers/encryption.js b/app/reducers/encryption.js index 729c8be4156..0145ae2d136 100644 --- a/app/reducers/encryption.js +++ b/app/reducers/encryption.js @@ -1,11 +1,18 @@ import { ENCRYPTION } from '../actions/actionsTypes'; const initialState = { + enabled: false, banner: null }; export default function encryption(state = initialState, action) { switch (action.type) { + case ENCRYPTION.SET: + return { + ...state, + enabled: action.enabled, + banner: action.banner + }; case ENCRYPTION.SET_BANNER: return { ...state, diff --git a/app/sagas/encryption.js b/app/sagas/encryption.js index 3aaed531c65..f28c7783419 100644 --- a/app/sagas/encryption.js +++ b/app/sagas/encryption.js @@ -2,7 +2,7 @@ import EJSON from 'ejson'; import { takeLatest, select, put } from 'redux-saga/effects'; import { ENCRYPTION } from '../actions/actionsTypes'; -import { encryptionSetBanner } from '../actions/encryption'; +import { encryptionSet } from '../actions/encryption'; import { Encryption } from '../lib/encryption'; import Navigation from '../lib/Navigation'; import { @@ -52,14 +52,14 @@ const handleEncryptionInit = function* handleEncryptionInit() { // A private key was received from the server, but it's not saved locally yet // Show the banner asking for the password if (!storedPrivateKey && keys?.privateKey) { - yield put(encryptionSetBanner(E2E_BANNER_TYPE.REQUEST_PASSWORD)); + yield put(encryptionSet(false, E2E_BANNER_TYPE.REQUEST_PASSWORD)); return; } // If the user has a private key stored, but never entered the password const storedRandomPassword = yield UserPreferences.getStringAsync(`${ server }-${ E2E_RANDOM_PASSWORD_KEY }`); if (storedRandomPassword) { - yield put(encryptionSetBanner(E2E_BANNER_TYPE.SAVE_PASSWORD)); + yield put(encryptionSet(true, E2E_BANNER_TYPE.SAVE_PASSWORD)); } // Fetch stored public e2e key for this server @@ -72,10 +72,11 @@ const handleEncryptionInit = function* handleEncryptionInit() { if (storedPublicKey && storedPrivateKey) { // Persist these keys yield Encryption.persistKeys(server, storedPublicKey, storedPrivateKey); + yield put(encryptionSet(true)); } else { // Create new keys since the user doesn't have any yield Encryption.createKeys(user.id, server); - yield put(encryptionSetBanner(E2E_BANNER_TYPE.SAVE_PASSWORD)); + yield put(encryptionSet(true, E2E_BANNER_TYPE.SAVE_PASSWORD)); } // Decrypt all pending messages/subscriptions @@ -87,7 +88,7 @@ const handleEncryptionInit = function* handleEncryptionInit() { const handleEncryptionStop = function* handleEncryptionStop() { // Hide encryption banner - yield put(encryptionSetBanner()); + yield put(encryptionSet()); // Stop Encryption client Encryption.stop(); }; @@ -112,7 +113,7 @@ const handleEncryptionDecodeKey = function* handleEncryptionDecodeKey({ password Encryption.initialize(user.id); // Hide encryption banner - yield put(encryptionSetBanner()); + yield put(encryptionSet(true)); Navigation.back(); } catch { diff --git a/app/utils/log/events.js b/app/utils/log/events.js index 52ef738380a..4895ad8f273 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -112,6 +112,7 @@ export default { CREATE_DISCUSSION_CREATE_F: 'create_discussion_create_f', CREATE_DISCUSSION_SELECT_CHANNEL: 'create_discussion_select_channel', CREATE_DISCUSSION_SELECT_USERS: 'create_discussion_select_users', + CREATE_DISCUSSION_TOGGLE_ENCRY: 'create_discussion_toggle_encry', // PROFILE VIEW PROFILE_PICK_AVATAR: 'profile_pick_avatar', diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 9afbc4e59b1..70982094de8 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -85,7 +85,7 @@ class CreateChannelView extends React.Component { error: PropTypes.object, failure: PropTypes.bool, isFetching: PropTypes.bool, - e2eEnabled: PropTypes.bool, + encryptionEnabled: PropTypes.bool, users: PropTypes.array.isRequired, user: PropTypes.shape({ id: PropTypes.string, @@ -107,7 +107,7 @@ class CreateChannelView extends React.Component { channelName, type, readOnly, broadcast, encrypted } = this.state; const { - users, isFetching, e2eEnabled, theme + users, isFetching, encryptionEnabled, theme } = this.props; if (nextProps.theme !== theme) { return true; @@ -130,7 +130,7 @@ class CreateChannelView extends React.Component { if (nextProps.isFetching !== isFetching) { return true; } - if (nextProps.e2eEnabled !== e2eEnabled) { + if (nextProps.encryptionEnabled !== encryptionEnabled) { return true; } if (!equal(nextProps.users, users)) { @@ -230,9 +230,9 @@ class CreateChannelView extends React.Component { renderEncrypted() { const { type, encrypted } = this.state; - const { e2eEnabled } = this.props; + const { encryptionEnabled } = this.props; - if (!e2eEnabled) { + if (!encryptionEnabled) { return null; } @@ -366,7 +366,7 @@ class CreateChannelView extends React.Component { const mapStateToProps = state => ({ baseUrl: state.server.server, isFetching: state.createChannel.isFetching, - e2eEnabled: state.settings.E2E_Enable, + encryptionEnabled: state.encryption.enabled, users: state.selectedUsers.users, user: getUserSelector(state) }); diff --git a/app/views/CreateDiscussionView/SelectChannel.js b/app/views/CreateDiscussionView/SelectChannel.js index fff60982d33..c7b6acbfb76 100644 --- a/app/views/CreateDiscussionView/SelectChannel.js +++ b/app/views/CreateDiscussionView/SelectChannel.js @@ -18,7 +18,7 @@ const SelectChannel = ({ const getChannels = debounce(async(keyword = '') => { try { - const res = await RocketChat.search({ text: keyword, filterUsers: false }); + const res = await RocketChat.localSearch({ text: keyword }); setChannels(res); } catch { // do nothing @@ -47,7 +47,7 @@ const SelectChannel = ({ value={initial && [initial]} disabled={initial} options={channels.map(channel => ({ - value: channel.rid, + value: channel, text: { text: RocketChat.getRoomTitle(channel) }, imageUrl: getAvatar(channel) }))} diff --git a/app/views/CreateDiscussionView/index.js b/app/views/CreateDiscussionView/index.js index afadb5e6b18..43329f1020f 100644 --- a/app/views/CreateDiscussionView/index.js +++ b/app/views/CreateDiscussionView/index.js @@ -1,7 +1,7 @@ import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import { ScrollView, Text } from 'react-native'; +import { ScrollView, Text, Switch } from 'react-native'; import isEqual from 'lodash/isEqual'; import Loading from '../../containers/Loading'; @@ -10,7 +10,7 @@ import scrollPersistTaps from '../../utils/scrollPersistTaps'; import I18n from '../../i18n'; import * as HeaderButton from '../../containers/HeaderButton'; import StatusBar from '../../containers/StatusBar'; -import { themes } from '../../constants/colors'; +import { SWITCH_TRACK_COLOR, themes } from '../../constants/colors'; import { withTheme } from '../../theme'; import { getUserSelector } from '../../selectors/login'; import TextInput from '../../containers/TextInput'; @@ -26,6 +26,7 @@ import styles from './styles'; import SafeAreaView from '../../containers/SafeAreaView'; import { goRoom } from '../../utils/goRoom'; import { logEvent, events } from '../../utils/log'; +import { E2E_ROOM_TYPES } from '../../lib/encryption/constants'; class CreateChannelView extends React.Component { propTypes = { @@ -41,7 +42,8 @@ class CreateChannelView extends React.Component { theme: PropTypes.string, isMasterDetail: PropTypes.bool, blockUnauthenticatedAccess: PropTypes.bool, - serverVersion: PropTypes.string + serverVersion: PropTypes.string, + encryptionEnabled: PropTypes.bool } constructor(props) { @@ -54,7 +56,8 @@ class CreateChannelView extends React.Component { message, name: message?.msg || '', users: [], - reply: '' + reply: '', + encrypted: props.encryptionEnabled }; this.setHeader(); } @@ -109,13 +112,13 @@ class CreateChannelView extends React.Component { submit = () => { const { - name: t_name, channel: { prid, rid }, message: { id: pmid }, reply, users + name: t_name, channel: { prid, rid }, message: { id: pmid }, reply, users, encrypted } = this.state; const { create } = this.props; // create discussion create({ - prid: prid || rid, pmid, t_name, reply, users + prid: prid || rid, pmid, t_name, reply, users, encrypted }); }; @@ -134,7 +137,7 @@ class CreateChannelView extends React.Component { selectChannel = ({ value }) => { logEvent(events.CREATE_DISCUSSION_SELECT_CHANNEL); - this.setState({ channel: { rid: value } }); + this.setState({ channel: value, encrypted: value?.encrypted }); } selectUsers = ({ value }) => { @@ -142,10 +145,17 @@ class CreateChannelView extends React.Component { this.setState({ users: value }); } + onEncryptedChange = (value) => { + logEvent(events.CREATE_DISCUSSION_TOGGLE_ENCRY); + this.setState({ encrypted: value }); + } + render() { - const { name, users } = this.state; const { - server, user, loading, blockUnauthenticatedAccess, theme, serverVersion + name, users, encrypted, channel + } = this.state; + const { + server, user, loading, blockUnauthenticatedAccess, theme, serverVersion, encryptionEnabled } = this.props; return ( - this.setState({ reply: text })} - /> + {encryptionEnabled && E2E_ROOM_TYPES[channel?.t] + ? ( + <> + {I18n.t('Encrypted')} + + + ) : null} @@ -211,7 +223,8 @@ const mapStateToProps = state => ({ result: state.createDiscussion.result, blockUnauthenticatedAccess: state.settings.Accounts_AvatarBlockUnauthenticatedAccess ?? true, serverVersion: state.share.server.version || state.server.version, - isMasterDetail: state.app.isMasterDetail + isMasterDetail: state.app.isMasterDetail, + encryptionEnabled: state.encryption.enabled }); const mapDispatchToProps = dispatch => ({ diff --git a/app/views/E2EEncryptionSecurityView.js b/app/views/E2EEncryptionSecurityView.js index 8d246b5a088..661d6e84da6 100644 --- a/app/views/E2EEncryptionSecurityView.js +++ b/app/views/E2EEncryptionSecurityView.js @@ -80,12 +80,18 @@ class E2EEncryptionSecurityView extends React.Component { title: I18n.t('Are_you_sure_question_mark'), message: I18n.t('E2E_encryption_reset_message'), confirmationText: I18n.t('E2E_encryption_reset_confirmation'), - onPress: () => { + onPress: async() => { logEvent(events.E2E_SEC_RESET_OWN_KEY); try { - RocketChat.e2eResetOwnKey(); - const { logout } = this.props; - logout(); + const res = await RocketChat.e2eResetOwnKey(); + /** + * It might return an empty object when TOTP is enabled, + * that's why we're using strict equality to boolean + */ + if (res === true) { + const { logout } = this.props; + logout(); + } } catch (e) { log(e); showErrorAlert(I18n.t('E2E_encryption_reset_error')); @@ -96,9 +102,8 @@ class E2EEncryptionSecurityView extends React.Component { renderChangePassword = () => { const { newPassword } = this.state; - const { theme } = this.props; - const { hasPrivateKey } = Encryption; - if (!hasPrivateKey) { + const { theme, encryptionEnabled } = this.props; + if (!encryptionEnabled) { return null; } return ( @@ -161,7 +166,8 @@ class E2EEncryptionSecurityView extends React.Component { const mapStateToProps = state => ({ server: state.server.server, - user: getUserSelector(state) + user: getUserSelector(state), + encryptionEnabled: state.encryption.enabled }); const mapDispatchToProps = dispatch => ({ @@ -179,6 +185,7 @@ E2EEncryptionSecurityView.propTypes = { id: PropTypes.string }), server: PropTypes.string, + encryptionEnabled: PropTypes.bool, logout: PropTypes.func }; diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 9d8278bc5f6..a3e2233361c 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -5,6 +5,7 @@ import { } from 'react-native'; import { connect } from 'react-redux'; import _ from 'lodash'; +import semver from 'semver'; import Touch from '../../utils/touch'; import { setLoading as setLoadingAction } from '../../actions/selectedUsers'; @@ -46,11 +47,12 @@ class RoomActionsView extends React.Component { route: PropTypes.object, leaveRoom: PropTypes.func, jitsiEnabled: PropTypes.bool, - e2eEnabled: PropTypes.bool, + encryptionEnabled: PropTypes.bool, setLoadingInvite: PropTypes.func, closeRoom: PropTypes.func, theme: PropTypes.string, - fontScale: PropTypes.number + fontScale: PropTypes.number, + serverVersion: PropTypes.string } constructor(props) { @@ -71,7 +73,8 @@ class RoomActionsView extends React.Component { canInviteUser: false, canForwardGuest: false, canReturnQueue: false, - canEdit: false + canEdit: false, + canToggleEncryption: false }; if (room && room.observe && room.rid) { this.roomObservable = room.observe(); @@ -120,6 +123,7 @@ class RoomActionsView extends React.Component { this.canAddUser(); this.canInviteUser(); this.canEdit(); + this.canToggleEncryption(); // livechat permissions if (room.t === 'l') { @@ -152,7 +156,6 @@ class RoomActionsView extends React.Component { } } - // eslint-disable-next-line react/sort-comp canAddUser = async() => { const { room, joined } = this.state; const { rid, t } = room; @@ -193,6 +196,15 @@ class RoomActionsView extends React.Component { this.setState({ canEdit }); } + canToggleEncryption = async() => { + const { room } = this.state; + const { rid } = room; + const permissions = await RocketChat.hasPermission(['toggle-room-e2e-encryption'], rid); + + const canToggleEncryption = permissions && permissions['toggle-room-e2e-encryption']; + this.setState({ canToggleEncryption }); + } + canViewMembers = async() => { const { room } = this.state; const { rid, t, broadcast } = room; @@ -235,13 +247,21 @@ class RoomActionsView extends React.Component { } renderEncryptedSwitch = () => { - const { room } = this.state; + const { room, canToggleEncryption, canEdit } = this.state; const { encrypted } = room; + const { serverVersion } = this.props; + let hasPermission = false; + if (serverVersion && semver.lt(semver.coerce(serverVersion), '3.11.0')) { + hasPermission = canEdit; + } else { + hasPermission = canToggleEncryption; + } return ( ); } @@ -480,15 +500,12 @@ class RoomActionsView extends React.Component { } renderE2EEncryption = () => { - const { - room, canEdit - } = this.state; - const { e2eEnabled } = this.props; + const { room } = this.state; + const { encryptionEnabled } = this.props; - // If can edit this room - // If this room type can be Encrypted - // If e2e is enabled for this server - if (canEdit && E2E_ROOM_TYPES[room?.t] && e2eEnabled) { + // If this room type can be encrypted + // If e2e is enabled + if (E2E_ROOM_TYPES[room?.t] && encryptionEnabled) { return ( @@ -847,7 +864,8 @@ class RoomActionsView extends React.Component { const mapStateToProps = state => ({ jitsiEnabled: state.settings.Jitsi_Enabled || false, - e2eEnabled: state.settings.E2E_Enable || false + encryptionEnabled: state.encryption.enabled, + serverVersion: state.server.version }); const mapDispatchToProps = dispatch => ({ diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index b42c83ecedf..ff56a139990 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -60,7 +60,7 @@ class RoomInfoEditView extends React.Component { route: PropTypes.object, deleteRoom: PropTypes.func, serverVersion: PropTypes.string, - e2eEnabled: PropTypes.bool, + encryptionEnabled: PropTypes.bool, theme: PropTypes.string }; @@ -414,7 +414,7 @@ class RoomInfoEditView extends React.Component { const { name, nameError, description, topic, announcement, t, ro, reactWhenReadOnly, room, joinCode, saving, permissions, archived, enableSysMes, encrypted, avatar } = this.state; - const { serverVersion, e2eEnabled, theme } = this.props; + const { serverVersion, encryptionEnabled, theme } = this.props; const { dangerColor } = themes[theme]; return ( @@ -561,7 +561,7 @@ class RoomInfoEditView extends React.Component { {this.renderSystemMessages()} ) : null} - {e2eEnabled ? ( + {encryptionEnabled ? ( ({ serverVersion: state.share.server.version || state.server.version, - e2eEnabled: state.settings.E2E_Enable || false + encryptionEnabled: state.encryption.enabled }); const mapDispatchToProps = dispatch => ({ From 4b96d308a72c1488ff9f20edaa746f7f77cc02a0 Mon Sep 17 00:00:00 2001 From: yash-rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Wed, 20 Jan 2021 23:17:50 +0530 Subject: [PATCH 013/177] [FIX] Messagebox missing style for text color (#2786) * Changing auxilaryTintColor * Changed Placeholder color to BodyText color * added color prop * eslint changes * used array for styles Co-authored-by: Diego Mello --- app/containers/MessageBox/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index 39f44279a76..12fad3f1524 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -936,7 +936,7 @@ class MessageBox extends Component { /> this.component = component} - style={styles.textBoxInput} + style={[styles.textBoxInput, { color: themes[theme].bodyText }]} returnKeyType='default' keyboardType='twitter' blurOnSubmit={false} From 54f3fb935e53781deaabf654ba02090474181eb4 Mon Sep 17 00:00:00 2001 From: Fazil Boudjelal Date: Wed, 20 Jan 2021 18:49:26 +0100 Subject: [PATCH 014/177] [I18N] Update arabic (#2696) * Update ar.js * Update ar.js Co-authored-by: Diego Mello --- app/i18n/locales/ar.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/i18n/locales/ar.js b/app/i18n/locales/ar.js index 814210beefd..a80b52485dd 100644 --- a/app/i18n/locales/ar.js +++ b/app/i18n/locales/ar.js @@ -102,7 +102,7 @@ export default { Apply_Your_Certificate: 'طبق شهادتك', Applying_a_theme_will_change_how_the_app_looks: 'سيؤدي تطبيق السمة إلى تغيير شكل التطبيق', ARCHIVE: 'أرشفة', - archive: 'أرشيف', + archive: 'أرشفة', are_typing: 'يكتب', Are_you_sure_question_mark: 'هل أنت متأكد؟', Are_you_sure_you_want_to_leave_the_room: 'متأكد من مغادرة الغرفة {{room}}؟', @@ -129,8 +129,8 @@ export default { creating_invite: 'إنشاء دعوة', Channel_Name: 'اسم القناة', Channels: 'قنوات', - Chats: 'محادثات', - Call_already_ended: 'انتهت المكالمة بالفعل!', + Chats: 'الرسائل', + Call_already_ended: 'تم انهاء المكالمة بالفعل !', Clear_cookies_alert: 'هل تريد حذف جميع ملفات تعريف الإرتباط؟', Clear_cookies_desc: 'هذا الإجراء سيحذف ملفات تعريف الإرتباط الخاصة بتسجيل الدخول مما يسمح بتسجيل الدخول لحسابات أخرى', Clear_cookies_yes: 'نعم، مسح ملفات الإرتباط', @@ -478,8 +478,8 @@ export default { Send_to: 'إرسال إلى...', Sending_to: 'يتم الإرسال إلى', Sent_an_attachment: 'تم إرسال المرفق', - Server: 'خادم', - Servers: 'خوادم', + Server: 'سرفر', + Servers: 'سرفرات', Server_version: 'نسخة الخادم: {{version}}', Set_username_subtitle: 'يتم استخدام اسم المستخدم للسماح للآخرين بذكرك في الرسائل', Set_custom_status: 'حدد حالة خاصة', From 61bc2a421371a9c6a803cee58f89bfbb835d8118 Mon Sep 17 00:00:00 2001 From: Sumukha Hegde Date: Wed, 20 Jan 2021 23:26:10 +0530 Subject: [PATCH 015/177] [FIX] Workspace input without i18n (#2689) * [FIX] Translation of strings in Login page * Strings are added for translation. fixes: #2620 * Add pt-BR Co-authored-by: Diego Mello --- app/i18n/locales/en.js | 4 +++- app/i18n/locales/pt-BR.js | 4 +++- app/views/NewServerView/ServerInput/index.js | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index b34fc69f000..c35da810b4f 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -702,5 +702,7 @@ export default { The_user_will_be_removed_from_s: 'The user will be removed from {{s}}', Yes_remove_user: 'Yes, remove user!', Direct_message: 'Direct message', - Message_Ignored: 'Message ignored. Tap to display it.' + Message_Ignored: 'Message ignored. Tap to display it.', + Enter_workspace_URL: 'Enter workspace URL', + Workspace_URL_Example: 'Ex. your-company.rocket.chat' }; diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index dfc416dd577..3819a3b3b8b 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -649,5 +649,7 @@ export default { The_user_will_be_removed_from_s: 'O usuário será removido de {{s}}', Yes_remove_user: 'Sim, remover usuário!', Direct_message: 'Mensagem direta', - Message_Ignored: 'Mensagem ignorada. Toque para mostrar.' + Message_Ignored: 'Mensagem ignorada. Toque para mostrar.', + Enter_workspace_URL: 'Digite a URL da sua workspace', + Workspace_URL_Example: 'Ex. sua-empresa.rocket.chat' }; diff --git a/app/views/NewServerView/ServerInput/index.js b/app/views/NewServerView/ServerInput/index.js index 4f13f88946f..6088e4ef640 100644 --- a/app/views/NewServerView/ServerInput/index.js +++ b/app/views/NewServerView/ServerInput/index.js @@ -6,6 +6,7 @@ import TextInput from '../../../containers/TextInput'; import * as List from '../../../containers/List'; import { themes } from '../../../constants/colors'; import Item from './Item'; +import I18n from '../../../i18n'; const styles = StyleSheet.create({ container: { @@ -42,8 +43,8 @@ const ServerInput = ({ return ( Date: Wed, 20 Jan 2021 15:53:12 -0400 Subject: [PATCH 016/177] [FIX] Spotlight returning duplicated entries (#2805) * Update rocketchat.js * Updated search function * Minor improvements * Remove atIndex * Add remove logic to remove duplicate data from response Co-authored-by: Diego Mello --- app/lib/rocketchat.js | 24 +++++++++++-------- e2e/tests/assorted/05-joinpublicroom.spec.js | 4 ++-- .../assorted/08-joinprotectedroom.spec.js | 4 ++-- e2e/tests/onboarding/06-roomslist.spec.js | 2 +- e2e/tests/room/01-createroom.spec.js | 4 ++-- e2e/tests/room/03-roomactions.spec.js | 4 ++-- e2e/tests/room/04-roominfo.spec.js | 4 ++-- package.json | 6 +++-- 8 files changed, 29 insertions(+), 23 deletions(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 58aa40ed455..72122275483 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -627,8 +627,7 @@ const RocketChat = { fname: sub.fname, avatarETag: sub.avatarETag, t: sub.t, - encrypted: sub.encrypted, - search: true + encrypted: sub.encrypted }; } return sub; @@ -648,7 +647,7 @@ const RocketChat = { return []; } - let data = await this.localSearch({ text, filterUsers, filterRooms }); + const data = await this.localSearch({ text, filterUsers, filterRooms }); const usernames = data.map(sub => sub.name); try { @@ -658,13 +657,18 @@ const RocketChat = { new Promise((resolve, reject) => this.oldPromise = reject) ]); if (filterUsers) { - data = data.concat(users.map(user => ({ - ...user, - rid: user.username, - name: user.username, - t: 'd', - search: true - }))); + users + .filter((item1, index) => users.findIndex(item2 => item2._id === item1._id) === index) // Remove duplicated data from response + .filter(user => !data.some(sub => user.username === sub.name)) // Make sure to remove users already on local database + .forEach((user) => { + data.push({ + ...user, + rid: user.username, + name: user.username, + t: 'd', + search: true + }); + }); } if (filterRooms) { rooms.forEach((room) => { diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 1c946f0c21b..90707f9f959 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -9,8 +9,8 @@ const room = data.channels.detoxpublic.name; async function navigateToRoom() { await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0)).toBeVisible().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0).tap(); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/assorted/08-joinprotectedroom.spec.js b/e2e/tests/assorted/08-joinprotectedroom.spec.js index d6e5605f7d5..32b23e9b3c0 100644 --- a/e2e/tests/assorted/08-joinprotectedroom.spec.js +++ b/e2e/tests/assorted/08-joinprotectedroom.spec.js @@ -10,8 +10,8 @@ const joinCode = data.channels.detoxpublicprotected.joinCode async function navigateToRoom() { await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0)).toBeVisible().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0).tap(); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/onboarding/06-roomslist.spec.js b/e2e/tests/onboarding/06-roomslist.spec.js index bbe0b886bea..e213b7f2c74 100644 --- a/e2e/tests/onboarding/06-roomslist.spec.js +++ b/e2e/tests/onboarding/06-roomslist.spec.js @@ -18,7 +18,7 @@ describe('Rooms list screen', () => { }); it('should have room item', async() => { - await expect(element(by.id('rooms-list-view-item-general')).atIndex(0)).toExist(); + await expect(element(by.id('rooms-list-view-item-general'))).toExist(); }); // Render - Header diff --git a/e2e/tests/room/01-createroom.spec.js b/e2e/tests/room/01-createroom.spec.js index 5a726a967ed..07ecd803076 100644 --- a/e2e/tests/room/01-createroom.spec.js +++ b/e2e/tests/room/01-createroom.spec.js @@ -67,12 +67,12 @@ describe('Create room screen', () => { it('should select/unselect user', async() => { // Spotlight issues - await element(by.id('select-users-view-item-rocket.cat')).atIndex(0).tap(); + await element(by.id('select-users-view-item-rocket.cat')).tap(); await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); await element(by.id('selected-user-rocket.cat')).tap(); await waitFor(element(by.id('selected-user-rocket.cat'))).toBeNotVisible().withTimeout(10000); // Spotlight issues - await element(by.id('select-users-view-item-rocket.cat')).atIndex(0).tap(); + await element(by.id('select-users-view-item-rocket.cat')).tap(); await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); }); diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index 4cdbbff71e1..74b3114b2c5 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -13,8 +13,8 @@ async function navigateToRoomActions(type) { room = data.groups.private.name; } await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0)).toExist().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0).tap(); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); await element(by.id('room-view-header-actions')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); diff --git a/e2e/tests/room/04-roominfo.spec.js b/e2e/tests/room/04-roominfo.spec.js index d8f079b508b..9fd9aebbf69 100644 --- a/e2e/tests/room/04-roominfo.spec.js +++ b/e2e/tests/room/04-roominfo.spec.js @@ -14,8 +14,8 @@ async function navigateToRoomInfo(type) { room = privateRoomName; } await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0)).toExist().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0).tap(); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); await element(by.id('room-view-header-actions')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); diff --git a/package.json b/package.json index 26768e8eafa..a8b85b5e750 100644 --- a/package.json +++ b/package.json @@ -193,7 +193,8 @@ "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { - "type": "iPhone 11 Pro" + "type": "iPhone 11 Pro", + "os": "13.7" } }, "ios.sim.release": { @@ -201,7 +202,8 @@ "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { - "type": "iPhone 11 Pro" + "type": "iPhone 11 Pro", + "os": "13.7" }, "artifacts": { "plugins": { From 8d1dd272717e6db064f2e4e64bffb76a2dfa8a86 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Wed, 20 Jan 2021 16:43:59 -0400 Subject: [PATCH 017/177] [CHORE] Refactor ServerItem (#2778) * Updated ServerDropdown and ServerItem * Added ServerItem stories * Update ServerDropdown.js * Updated ServerItem stories * Updated ServerItem stories and ServerItem component * Updated SelectServerView, ServerItem and ServerItem stories * Updated ServerItem stories * Updated ServerItem stories * Update tests Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 1151 +++++++++++++++++ app/presentation/ServerItem/index.js | 40 +- app/presentation/ServerItem/styles.js | 14 +- app/views/RoomsListView/ServerDropdown.js | 46 +- app/views/SelectServerView.js | 3 +- storybook/stories/ServerItem.js | 73 ++ storybook/stories/index.js | 1 + 7 files changed, 1265 insertions(+), 63 deletions(-) create mode 100644 storybook/stories/ServerItem.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 6d1aa6a6001..9d9a30e357f 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -61007,6 +61007,1157 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` `; +exports[`Storyshots ServerItem content 1`] = ` +Array [ + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + +  + + + , + + + + + + + + Super Long Server Name in Rocket.Chat + + + https://superlongservername.tologintoasuperlongservername/ + + + + , + + + + + + + + https://stable.rocket.chat/ + + + https://stable.rocket.chat/ + + + + , +] +`; + +exports[`Storyshots ServerItem themes 1`] = ` +Array [ + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + +  + + + , + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + +  + + + , + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + +  + + + , +] +`; + +exports[`Storyshots ServerItem touchable 1`] = ` +Array [ + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + + , + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + + , + + + + + + + + Rocket.Chat + + + https://open.rocket.chat/ + + + + , +] +`; + exports[`Storyshots Thread Messages.Item badge 1`] = ` diff --git a/app/presentation/ServerItem/index.js b/app/presentation/ServerItem/index.js index d71b16e7d7a..ab69020f28c 100644 --- a/app/presentation/ServerItem/index.js +++ b/app/presentation/ServerItem/index.js @@ -1,23 +1,33 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { View, Text } from 'react-native'; +import { View, Text, Pressable } from 'react-native'; import FastImage from '@rocket.chat/react-native-fast-image'; -import Touch from '../../utils/touch'; import Check from '../../containers/Check'; import styles, { ROW_HEIGHT } from './styles'; import { themes } from '../../constants/colors'; +import { isIOS } from '../../utils/deviceInfo'; +import { withTheme } from '../../theme'; export { ROW_HEIGHT }; +const defaultLogo = require('../../static/images/logo.png'); + const ServerItem = React.memo(({ - server, item, onPress, hasCheck, theme + item, onPress, onLongPress, hasCheck, theme }) => ( - onLongPress?.()} testID={`rooms-list-header-server-${ item.id }`} - theme={theme} + android_ripple={{ + color: themes[theme].bannerBackground + }} + style={({ pressed }) => ({ + backgroundColor: isIOS && pressed + ? themes[theme].bannerBackground + : themes[theme].backgroundColor + })} > {item.iconURL @@ -27,33 +37,33 @@ const ServerItem = React.memo(({ uri: item.iconURL, priority: FastImage.priority.high }} - defaultSource={require('../../static/images/logo.png')} + defaultSource={defaultLogo} style={styles.serverIcon} onError={() => console.log('err_loading_server_icon')} /> ) : ( ) } - {item.name || item.id} - {item.id} + {item.name || item.id} + {item.id} - {item.id === server && hasCheck ? : null} + {hasCheck ? : null} - + )); ServerItem.propTypes = { - onPress: PropTypes.func.isRequired, item: PropTypes.object.isRequired, + onPress: PropTypes.func.isRequired, + onLongPress: PropTypes.func, hasCheck: PropTypes.bool, - server: PropTypes.string, theme: PropTypes.string }; -export default ServerItem; +export default withTheme(ServerItem); diff --git a/app/presentation/ServerItem/styles.js b/app/presentation/ServerItem/styles.js index 34ed0c15857..ece4105dff1 100644 --- a/app/presentation/ServerItem/styles.js +++ b/app/presentation/ServerItem/styles.js @@ -5,10 +5,6 @@ import sharedStyles from '../../views/Styles'; export const ROW_HEIGHT = 56; export default StyleSheet.create({ - serverItem: { - height: ROW_HEIGHT, - justifyContent: 'center' - }, serverItemContainer: { flexDirection: 'row', alignItems: 'center' @@ -16,20 +12,22 @@ export default StyleSheet.create({ serverIcon: { width: 44, height: 44, - marginHorizontal: 15, - borderRadius: 4 + margin: 12, + borderRadius: 4, + resizeMode: 'contain' }, serverTextContainer: { flex: 1, flexDirection: 'column', - justifyContent: 'center' + justifyContent: 'center', + paddingRight: 18 }, serverName: { fontSize: 18, ...sharedStyles.textSemibold }, serverUrl: { - fontSize: 15, + fontSize: 16, ...sharedStyles.textRegular } }); diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 66ac731cb1c..95d6603bda9 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import { - View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList, Image, Pressable + View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList } from 'react-native'; import PropTypes from 'prop-types'; import { connect, batch } from 'react-redux'; @@ -14,12 +14,12 @@ import styles from './styles'; import RocketChat from '../../lib/rocketchat'; import I18n from '../../i18n'; import EventEmitter from '../../utils/events'; -import Check from '../../containers/Check'; +import ServerItem from '../../presentation/ServerItem'; import database from '../../lib/database'; import { themes } from '../../constants/colors'; import { withTheme } from '../../theme'; import { KEY_COMMAND, handleCommandSelectServer } from '../../commands'; -import { isTablet, isIOS } from '../../utils/deviceInfo'; +import { isTablet } from '../../utils/deviceInfo'; import { localAuthenticate } from '../../utils/localAuthentication'; import { showConfirmationAlert } from '../../utils/info'; import { logEvent, events } from '../../utils/log'; @@ -202,43 +202,13 @@ class ServerDropdown extends Component { const { server, theme } = this.props; return ( - this.select(item.id)} onLongPress={() => (item.id === server || this.remove(item.id))} - testID={`rooms-list-header-server-${ item.id }`} - android_ripple={{ - color: themes[theme].bannerBackground - }} - style={({ pressed }) => ({ - backgroundColor: isIOS && pressed - ? themes[theme].bannerBackground - : 'transparent' - })} - > - - {item.iconURL - ? ( - console.warn('error loading serverIcon')} - /> - ) - : ( - - ) - } - - {item.name || item.id} - {item.id} - - {item.id === server ? : null} - - + hasCheck={item.id === server} + theme={theme} + /> ); } diff --git a/app/views/SelectServerView.js b/app/views/SelectServerView.js index f956feba5af..72a6b939f58 100644 --- a/app/views/SelectServerView.js +++ b/app/views/SelectServerView.js @@ -65,10 +65,9 @@ class SelectServerView extends React.Component { const { server, theme } = this.props; return ( this.select(item.id)} item={item} - hasCheck + hasCheck={item.id === server} theme={theme} /> ); diff --git a/storybook/stories/ServerItem.js b/storybook/stories/ServerItem.js new file mode 100644 index 00000000000..d1c53ee01c4 --- /dev/null +++ b/storybook/stories/ServerItem.js @@ -0,0 +1,73 @@ +/* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions, react/prop-types */ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; + +import ServerItemComponent from '../../app/presentation/ServerItem'; +import { ThemeContext } from '../../app/theme'; + +const stories = storiesOf('ServerItem', module); + +const themes = { + light: 'light', + dark: 'dark', + black: 'black' +}; + +const item = { + name: 'Rocket.Chat', + id: 'https://open.rocket.chat/', + iconURL: 'https://open.rocket.chat/images/logo/android-chrome-512x512.png' +}; + +const ServerItem = props => ( + +); + +stories.add('content', () => ( + <> + + + + +)); + +stories.add('touchable', () => ( + <> + alert('Long Press')} onPress={() => alert('Press')} /> + alert('Press')} /> + alert('Long Press')} /> + +)); + +const ThemeStory = ({ theme }) => ( + + + +); + +stories.add('themes', () => ( + <> + + + + +)); diff --git a/storybook/stories/index.js b/storybook/stories/index.js index 693e921b1b7..8edb159ba6b 100644 --- a/storybook/stories/index.js +++ b/storybook/stories/index.js @@ -6,6 +6,7 @@ import { storiesOf } from '@storybook/react-native'; import RoomItem from './RoomItem'; import './List'; +import './ServerItem'; import Message from './Message'; import UiKitMessage from './UiKitMessage'; import UiKitModal from './UiKitModal'; From af34e5a700461bc32cdc51fba588cdb70d43d107 Mon Sep 17 00:00:00 2001 From: yash-rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Thu, 21 Jan 2021 02:18:01 +0530 Subject: [PATCH 018/177] [DOCS] Updated Quick Start docs link in e2e/readme (#2802) Co-authored-by: Diego Mello --- e2e/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/README.md b/e2e/README.md index 995bd3f905b..f2ae5651bdf 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -13,7 +13,7 @@ Either -* Install Rocket.Chat meteor app by following this [guide](https://rocket.chat/docs/developer-guides/quick-start). +* Install Rocket.Chat meteor app by following this [guide](https://docs.rocket.chat/guides/developer/quick-start). Or From 8abc3a83e77987d00c54d571c8c611c0d96b1855 Mon Sep 17 00:00:00 2001 From: Hakan YILMAZ Date: Thu, 21 Jan 2021 00:07:45 +0300 Subject: [PATCH 019/177] [I18N] Add Turkish (#2793) * Turkish language support added * Update tr.js Co-authored-by: Diego Mello --- app/i18n/index.js | 4 + app/i18n/locales/tr.js | 710 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 714 insertions(+) create mode 100644 app/i18n/locales/tr.js diff --git a/app/i18n/index.js b/app/i18n/index.js index 5217e48da60..b7436640be9 100644 --- a/app/i18n/index.js +++ b/app/i18n/index.js @@ -57,6 +57,10 @@ export const LANGUAGES = [ label: 'العربية', value: 'ar', file: require('./locales/ar').default + }, { + label: 'Türkçe', + value: 'tr', + file: require('./locales/tr').default } ]; diff --git a/app/i18n/locales/tr.js b/app/i18n/locales/tr.js new file mode 100644 index 00000000000..5bc1616e0b8 --- /dev/null +++ b/app/i18n/locales/tr.js @@ -0,0 +1,710 @@ +export default { + '1_person_reacted': '1 kişi tepki verdi.', + '1_user': '1 kullanıcı', + 'error-action-not-allowed': '{{action}}\'a izin verilmiyor!', + 'error-application-not-found': 'Uygulama bulunamadı!', + 'error-archived-duplicate-name': '{{room_name}} adında arşivlenmiş bir kanal var!', + 'error-avatar-invalid-url': 'Geçersiz avatar URL\'si: {{url}}', + 'error-avatar-url-handling': '{{username}} için bir URL\'den ({{url}}) avatar ayarı işlenirken hata oluştu!', + 'error-cant-invite-for-direct-room': 'Kullanıcı özel odalara davet edilemedi!', + 'error-could-not-change-email': 'E-posta değiştirilemedi!', + 'error-could-not-change-name': 'İsim değiştirilemedi!', + 'error-could-not-change-username': 'Kullanıcı adı değiştirilemedi!', + 'error-could-not-change-status': 'Durum değiştirilemedi!', + 'error-delete-protected-role': 'Korunan bir rol silinemez!', + 'error-department-not-found': 'Bölüm bulunamadı!', + 'error-direct-message-file-upload-not-allowed': 'Özel iletilerde dosya paylaşımına izin verilmiyor!', + 'error-duplicate-channel-name': '{{channel_name}} adında bir kanal var!', + 'error-email-domain-blacklisted': 'E-posta alan adı kara listeye alındı!', + 'error-email-send-failed': 'E-posta göndermeye çalışırken hata oluştu: {{message}}', + 'error-save-image': 'Görüntüyü kaydederken hata oluştu!', + 'error-save-video': 'Videoyu kaydederken hata oluştu!', + 'error-field-unavailable': '{{field}} zaten kullanılıyor! :(', + 'error-file-too-large': 'Dosya çok büyük!', + 'error-importer-not-defined': 'İçe aktarıcı doğru tanımlanmadı, "Import" sınıfı eksik!', + 'error-input-is-not-a-valid-field': '{{input}} geçerli bir {{field}} değil!', + 'error-invalid-actionlink': 'Geçersiz işlem bağlantısı!', + 'error-invalid-arguments': 'Geçersiz parametreler!', + 'error-invalid-asset': 'Geçersiz veri!', + 'error-invalid-channel': 'Geçersiz kanal.', + 'error-invalid-channel-start-with-chars': 'Geçersiz kanal! @ veya # ile başlayın.', + 'error-invalid-custom-field': 'Geçersiz özelleştirilmiş alan', + 'error-invalid-custom-field-name': 'Geçersiz özelleştirilmiş alan adı! Yalnızca harf, rakam, kısa çizgi ve alt çizgi kullanın.', + 'error-invalid-date': 'Geçersiz tarih!', + 'error-invalid-description': 'Geçersiz açıklama!', + 'error-invalid-domain': 'Geçersiz alan adı!', + 'error-invalid-email': 'Geçersiz e-posta {{email}}!', + 'error-invalid-email-address': 'Geçersiz e-posta adresi!', + 'error-invalid-file-height': 'Geçersiz fotoğraf yüksekliği!', + 'error-invalid-file-type': 'Geçersiz dosya türü!', + 'error-invalid-file-width': 'Geçersiz fotoğraf genişliği!', + 'error-invalid-from-address': 'Geçersiz bir KİMDEN adresi bildirdiniz!', + 'error-invalid-integration': 'Geçersiz entegrasyon', + 'error-invalid-message': 'Geçersiz ileti!', + 'error-invalid-method': 'Geçersiz metot!', + 'error-invalid-name': 'Geçersiz isim!', + 'error-invalid-password': 'Geçersiz şifre!', + 'error-invalid-redirectUri': 'Geçersiz yönlendirme bağlantısı!', + 'error-invalid-role': 'Geçersiz rol!', + 'error-invalid-room': 'Geçersiz oda!', + 'error-invalid-room-name': '{{room_name}}, geçerli bir oda adı değil!', + 'error-invalid-room-type': '{{type}}, geçerli bir oda türü değil!', + 'error-invalid-settings': 'Geçersiz ayar!', + 'error-invalid-subscription': 'Geçersiz başvuru!', + 'error-invalid-token': 'Geçersiz belirteç!', + 'error-invalid-triggerWords': 'Geçersiz tetikleyici parametreleri!', + 'error-invalid-urls': 'Geçersiz URL\'ler!', + 'error-invalid-user': 'Geçersiz kullanıcı!', + 'error-invalid-username': 'Geçersiz kullanıcı adı!', + 'error-invalid-webhook-response': 'İstek URL\'si 200\'den farklı bir durumla yanıt verdi!', + 'error-message-deleting-blocked': 'İleti silme engellendi!', + 'error-message-editing-blocked': 'İleti düzenleme engellendi', + 'error-message-size-exceeded': 'İleti boyutu, Message_MaxAllowedSize değerini aşıyor', + 'error-missing-unsubscribe-link': '[unsubscribe] bağlantısını belirtmelisiniz.', + 'error-no-tokens-for-this-user': 'Bu kullanıcı için belirteç (token) yok', + 'error-not-allowed': 'İzin verilmedi', + 'error-not-authorized': 'Yetkili değil', + 'error-push-disabled': 'Push devre dışı', + 'error-remove-last-owner': 'Lütfen bunu kaldırmadan önce yeni bir sahip belirleyin.', + 'error-role-in-use': 'Rol kullanımda olduğu için silinemiyor', + 'error-role-name-required': 'Rol adı gerekli', + 'error-the-field-is-required': '{{field}} alanı gereklidir.', + 'error-too-many-requests': 'Hata, çok fazla istek. Lütfen yavaşla. Tekrar denemeden önce {{seconds}} saniye beklemelisiniz.', + 'error-user-is-not-activated': 'Kullanıcı etkinleştirilmedi!', + 'error-user-has-no-roles': 'Kullanıcıya tanımlı rol yok!', + 'error-user-limit-exceeded': '#channel_name kanalına davet etmeye çalıştığınız kullanıcıların sayısı, yönetici tarafından belirlenen sınırı aşıyor!', + 'error-user-not-in-room': 'Kullanıcı bu odada değil!', + 'error-user-registration-custom-field': 'error-user-registration-custom-field', + 'error-user-registration-disabled': 'Kullanıcı kaydı devre dışı bırakıldı!', + 'error-user-registration-secret': 'Kullanıcı kaydına yalnızca Gizli URL aracılığıyla izin verilir!', + 'error-you-are-last-owner': 'Son sahibi sizsiniz. Lütfen odadan ayrılmadan önce yeni bir sahip belirleyin.', + Actions: 'İşlemler', + activity: 'etkinlik', + Activity: 'Etkinlik', + Add_Reaction: 'Tepki ekle', + Add_Server: 'Sunucu ekle', + Add_users: 'Kullanıcı ekle', + Admin_Panel: 'Yönetim Paneli', + Agent: 'Temsilci', + Alert: 'Uyarı', + alert: 'uyarı', + alerts: 'uyarılar', + All_users_in_the_channel_can_write_new_messages: 'Kanaldaki tüm kullanıcılar yeni ileti yazabilir!', + A_meaningful_name_for_the_discussion_room: 'Tartışma odası için anlamlı bir isim', + All: 'Tümü', + All_Messages: 'Tüm İletiler', + Allow_Reactions: 'Tüm Tepkiler', + Alphabetical: 'Alfabetik', + and_more: 've daha', + and: 've', + announcement: 'duyuru', + Announcement: 'Duyuru', + Apply_Your_Certificate: 'Sertifikanızı Onaylayın', + ARCHIVE: 'ARŞİVLE', + archive: 'arşivle', + are_typing: 'yazıyor', + Are_you_sure_question_mark: 'Emin misiniz?', + Are_you_sure_you_want_to_leave_the_room: '{{room}} odasından ayrılmak istediğinizden emin misiniz?', + Audio: 'Ses', + Authenticating: 'Doğrulanıyor', + Automatic: 'Otomatik', + Auto_Translate: 'Otomatik Çevir', + Avatar_changed_successfully: 'Profil fotoğrafı başarıyla değiştirildi!', + Avatar_Url: 'Profil fotoğrafı URL\'si', + Away: 'Uzakta', + Back: 'Geri', + Black: 'Koyu', + Block_user: 'Kullanıcıyı engelle', + Browser: 'Tarayıcı', + Broadcast_channel_Description: 'Yalnızca yetkili kullanıcılar yeni ileti yazabilir, ancak diğer kullanıcılar yanıt verebilir', + Broadcast_Channel: 'Kanala Yayınla', + Busy: 'Meşgul', + By_proceeding_you_are_agreeing: 'Devam ederek kabul ediyorsunuz: ', + Cancel_editing: 'Düzenlemeyi iptal et', + Cancel_recording: 'Kaydı iptal et', + Cancel: 'İptal et', + changing_avatar: 'profil fotoğrafı değiştirme', + creating_channel: 'kanal açılıyor', + creating_invite: 'davet üretiliyor', + Channel_Name: 'Kanal Adı', + Channels: 'Kanallar', + Chats: 'Sohbetler', + Call_already_ended: 'Çağrı sona erdi!', + Clear_cookies_alert: 'Tüm çerezleri temizlemek istiyor musunuz?', + Clear_cookies_desc: 'Bu işlem, tüm oturum açma çerezlerini temizleyerek diğer hesaplara giriş yapmanıza olanak tanır.', + Clear_cookies_yes: 'Evet, çerezleri temizle', + Clear_cookies_no: 'Hayır, çerezleri koru', + Click_to_join: 'Katılmak için tıklayın!', + Close: 'Kapat', + Close_emoji_selector: 'Emoji seçiciyi kapat', + Closing_chat: 'Sohbet kapatılıyor', + Change_language_loading: 'Dil değiştiriliyor', + Chat_closed_by_agent: 'Sohbet temsilci tarafından kapatıldı', + Choose: 'Seç', + Choose_from_library: 'Kütüphaneden seç', + Choose_file: 'Dosya seç', + Choose_where_you_want_links_be_opened: 'Bağlantıların açılmasını istediğiniz yeri seçin', + Code: 'Kod', + Code_or_password_invalid: 'Kod veya şifre geçersiz', + Collaborative: 'İşbirlikçi', + Confirm: 'Onayla', + Connect: 'Bağlan', + Connected: 'Bağlandı', + connecting_server: 'sunucuya bağlanıyor', + Connecting: 'Bağlanıyor...', + Contact_us: 'Bize ulaşın', + Contact_your_server_admin: 'Sunucu yöneticisiyle iletişime geçin.', + Continue_with: 'Devam et:', + Copied_to_clipboard: 'Panoya kopyalandı!', + Copy: 'Kopyala', + Conversation: 'Sohbet', + Permalink: 'Kalıcı bağlantı', + Certificate_password: 'Sertifika Şifresi', + Clear_cache: 'Yerel sunucu önbelleğini temizleyin', + Clear_cache_loading: 'Önbellek temizleniyor.', + Whats_the_password_for_your_certificate: 'Sertifikanızın şifresi nedir?', + Create_account: 'Hesap oluştur', + Create_Channel: 'Kanal Oluştur', + Create_Direct_Messages: 'Özel İleti Oluştur', + Create_Discussion: 'Tartışma Oluştur', + Created_snippet: 'kalıp oluşturdu', + Create_a_new_workspace: 'Çalışma alanı oluştur', + Create: 'Oluştur', + Custom_Status: 'Özelleştirilmiş durum', + Dark: 'Karanlık', + Dark_level: 'Karanlık Seviyesi', + Default: 'Varsayılan', + Default_browser: 'Varsayılan tarayıcı', + Delete_Room_Warning: 'Bir odanın silinmesi, oda içinde yayınlanan tüm iletileri silecektir. Bu geri alınamaz.', + Department: 'Bölüm', + delete: 'sil', + Delete: 'Sil', + DELETE: 'SİL', + deleting_room: 'oda siliniyor', + description: 'açıklama', + Description: 'Açıklama', + Desktop_Options: 'Masaüstü Seçenekleri', + Desktop_Notifications: 'Masaüstü Bildirimleri', + Desktop_Alert_info: 'Bu bildirimler masaüstünde teslim edilir', + Directory: 'Dizin', + Direct_Messages: 'Özel İletiler', + Disable_notifications: 'Bildirimleri devre dışı bırak', + Discussions: 'Tartışmalar', + Discussion_Desc: 'Neler olup bittiğini gözden geçirmeye yardımcı olun! Bir tartışma oluşturarak, seçtiğinizin bir alt kanalı oluşturulur ve her ikisi de bağlanır.', + Discussion_name: 'Tartışma adı', + Done: 'Tamamlandı', + Dont_Have_An_Account: 'Hesabın yok mu?', + Do_you_have_an_account: 'Hesabın var mı?', + Do_you_have_a_certificate: 'Sertifikanız var mı?', + Do_you_really_want_to_key_this_room_question_mark: 'Bu odayı gerçekten {{key}} istiyor musun?', + E2E_Encryption: 'Uçtan Uca Şifreleme (E2E)', + E2E_How_It_Works_info1: 'Artık şifrelenmiş özel gruplar ve doğrudan iletiler oluşturabilirsiniz. Mevcut özel grupları veya özel iletileri şifreli olarak da değiştirebilirsiniz.', + E2E_How_It_Works_info2: 'Bu, *Uçtan Uca Şifreleme\'dir (E2E)*, böylece iletilerinizi şifrelemek / çözmek için anahtar ve bunlar sunucuya kaydedilmez. Bu nedenle *bu şifreyi daha sonra ihtiyaç duyduğunuzda erişebileceğiniz güvenli bir yerde* saklamanız gerekir.', + E2E_How_It_Works_info3: 'Devam ederseniz, otomatik olarak bir Uçtan Uca Şifreleme (E2E) şifresi oluşturulacaktır.', + E2E_How_It_Works_info4: 'Mevcut Uçtan Uca Şifreleme (E2E) şifresini, herhangi bir tarayıcıdan istediğiniz zaman girdiğiniz şifreleme anahtarınız için yeni bir şifre de ayarlayabilirsiniz.', + edit: 'düzenle', + edited: 'düzenlendi', + Edit: 'Düzenle', + Edit_Status: 'Durumu Düzenle', + Edit_Invite: 'Daveti Düzenle', + End_to_end_encrypted_room: 'Uçtan uca şifreli oda', + end_to_end_encryption: 'uçtan uca şifreleme', + Email_Notification_Mode_All: 'Tüm Bahsetmeler/Özel İletiler', + Email_Notification_Mode_Disabled: 'Devre Dışı', + Email_or_password_field_is_empty: 'E-posta veya şifre alanı boş', + Email: 'E-posta', + email: 'e-posta', + Empty_title: 'Boş başlık', + Enable_Auto_Translate: 'Otomatik Çeviriyi Etkinleştir', + Enable_notifications: 'Bildirimleri etkinleştir', + Encrypted: 'Şifreli', + Encrypted_message: 'Şifreli ileti', + Enter_Your_E2E_Password: 'Uçtan Uca Şifreleme (E2E) Şifrenizi Girin', + Enter_Your_Encryption_Password_desc1: 'Bu, şifrelenmiş özel gruplarınıza ve doğrudan iletilerinize erişmenize izin verecektir.', + Enter_Your_Encryption_Password_desc2: 'Sohbeti kullandığınız her yerde iletileri şifrelemek / çözmek için şifre girmeniz gerekir.', + Encryption_error_title: 'Şifreleme şifreniz yanlış görünüyor', + Encryption_error_desc: 'İçe aktarılacak şifreleme anahtarınızın kodu çözülemedi.', + Everyone_can_access_this_channel: 'Bu kanala herkes erişebilir', + Error_uploading: 'Yükleme hatası', + Expiration_Days: 'Geçerlilik Süresi (Gün)', + Favorite: 'Favori', + Favorites: 'Favoriler', + Files: 'Dosyalar', + File_description: 'Dosya açıklaması', + File_name: 'Dosya adı', + Finish_recording: 'Kaydı bitir', + Following_thread: 'Konu takip ediliyor', + For_your_security_you_must_enter_your_current_password_to_continue: 'Güvenliğiniz için, devam etmek için mevcut şifrenizi girmelisiniz', + Forgot_password_If_this_email_is_registered: 'Bu e-posta kayıtlıysa, şifrenizi nasıl sıfırlayacağınıza dair talimatlar göndereceğiz. Kısa süre içinde bir e-posta almazsanız, lütfen geri gelin ve tekrar deneyin.', + Forgot_password: 'Parolanızı mı unuttunuz?', + Forgot_Password: 'Parolamı Unuttum', + Forward: 'İlet', + Forward_Chat: 'Sohbete İlet', + Forward_to_department: 'Bölüme İlet', + Forward_to_user: 'Kullanıcıya İlet', + Full_table: 'Tam tabloyu görmek için tıklayın', + Generate_New_Link: 'Yeni Bağlantı Oluştur', + Group_by_favorites: 'Favorilere göre grupla', + Group_by_type: 'Türe göre grupla', + Hide: 'Gizle', + Has_joined_the_channel: 'kanala katıldı', + Has_joined_the_conversation: 'sohbete katıldı', + Has_left_the_channel: 'kanaldan ayrıldı', + Hide_System_Messages: 'Sistem İletilerını Gizle', + Hide_type_messages: '"{{type}}" iletilerini gizle', + How_It_Works: 'Nasıl Çalışır', + Message_HideType_uj: 'Kullanıcı Katıldı', + Message_HideType_ul: 'Kullanıcı Ayrıldı', + Message_HideType_ru: 'Kullanıcı Kaldırıldı', + Message_HideType_au: 'Kullanıcı Eklendi', + Message_HideType_mute_unmute: 'Kullanıcı Sesi Kapatıldı / Sesi Açıldı', + Message_HideType_r: 'Oda Adı Değiştirildi', + Message_HideType_ut: 'Kullanıcı Sohbete Katıldı', + Message_HideType_wm: 'Hoşgeldiniz', + Message_HideType_rm: 'İleti Kaldırıldı', + Message_HideType_subscription_role_added: 'Rol Belirlendi', + Message_HideType_subscription_role_removed: 'Artık Kullanılmayan Rol', + Message_HideType_room_archived: 'Oda Arşivlendi', + Message_HideType_room_unarchived: 'Oda Arşivden Çıkarıldı', + I_Saved_My_E2E_Password: 'Uçtan Uca Şifreleme (E2E) Şifremi Kaydettim', + IP: 'IP', + In_app: 'Uygulama İçi', + In_App_And_Desktop: 'Uygulama İçi ve Masaüstü', + In_App_and_Desktop_Alert_info: 'Uygulama açıkken ekranın üst kısmında bir başlık görüntüler ve masaüstünde bir bildirim görüntüler', + Invisible: 'Görünmez', + Invite: 'Davet Et', + is_a_valid_RocketChat_instance: 'geçerli bir Rocket.Chat örneği', + is_not_a_valid_RocketChat_instance: 'geçerli bir Rocket.Chat örneği değil', + is_typing: 'yazıyor', + Invalid_or_expired_invite_token: 'Geçersiz veya süresi dolmuş davet belirteci (token)', + Invalid_server_version: 'Bağlanmaya çalıştığınız sunucu artık uygulama tarafından desteklenmeyen bir sürüm kullanıyor: {{currentVersion}}.\n\n{{minVersion}} sürümüne ihtiyacımız var', + Invite_Link: 'Davet Bağlantısı', + Invite_users: 'Kullanıcıları davet et', + Join: 'Katıl', + Join_Code: 'Katılım Kodu', + Insert_Join_Code: 'Katılım Kodu Girin', + Join_our_open_workspace: 'Açık çalışma alanımıza katılın', + Join_your_workspace: 'Çalışma alanınıza katılın', + Just_invited_people_can_access_this_channel: 'Yalnızca davet edilen kişiler bu kanala erişebilir', + Language: 'Dil', + last_message: 'son ileti', + Leave_channel: 'Kanaldan ayrıl', + leaving_room: 'odadan ayrılıyor', + leave: 'ayrıl', + Legal: 'Yasal', + Light: 'Açık', + License: 'Lisans', + Livechat: 'Canlı Sohbet', + Livechat_edit: 'Canlı sohbeti düzenle', + Login: 'Oturum aç', + Login_error: 'Kimlik bilgileriniz reddedildi! Lütfen tekrar deneyin.', + Login_with: 'ile giriş', + Logging_out: 'Çıkış Yapılıyor', + Logout: 'Çıkış Yap', + Max_number_of_uses: 'Maksimum kullanım sayısı', + Max_number_of_users_allowed_is_number: 'İzin verilen maksimum kullanıcı sayısı {{maxUsers}}', + members: 'üyeler', + Members: 'Üyeler', + Mentioned_Messages: 'Bahsedilen İletiler', + mentioned: 'bahsedildi', + Mentions: 'Bahsetmeler', + Message_accessibility: '{{user}} tarafından {{time}} itibarıyla ileti: {{message}}', + Message_actions: 'İleti işlemleri', + Message_pinned: 'İleti sabitlendi', + Message_removed: 'İleti kaldırıldı', + Message_starred: 'İletia yıldız eklendi', + Message_unstarred: 'İletiın yıldızı kaldırıldı', + message: 'ileti', + messages: 'iletiler', + Message: 'İleti', + Messages: 'İletiler', + Message_Reported: 'İleti bildirildi', + Microphone_Permission_Message: 'Rocket.Chat\'in mikrofonunuza erişmesi gerekiyor, böylece sesli ileti gönderebilirsiniz.', + Microphone_Permission: 'Mikrofon İzni', + Mute: 'Sessize Al', + muted: 'sessize alındı', + My_servers: 'Sunucularım', + N_people_reacted: '{{n}} kişi tepki verdi', + N_users: '{{n}} kullanıcı', + name: 'isim', + Name: 'İsim', + Navigation_history: 'Gezinti geçmişi', + Never: 'Asla', + New_Message: 'Yeni İleti', + New_Password: 'Yeni Şifre', + New_Server: 'Yeni Sunucu', + Next: 'Sonraki', + No_files: 'Dosya yok', + No_limit: 'Limit yok', + No_mentioned_messages: 'Belirtilen ileti yok', + No_pinned_messages: 'Sabitlenmiş ileti yok', + No_results_found: 'Sonuç bulunamadı', + No_starred_messages: 'Yıldızlı ileti yok', + No_thread_messages: 'Konu iletisi yok', + No_label_provided: 'Hiç {{label}} sağlanmadı.', + No_Message: 'İleti Yok', + No_messages_yet: 'Şu ana kadar ileti yok', + No_Reactions: 'Tepki Yok', + No_Read_Receipts: 'Okundu Bilgisi Yok', + Not_logged: 'Kayıtlı değil', + Not_RC_Server: 'Bu bir Rocket.Chat sunucusu değil.\n{{contact}}', + Nothing: 'Hiçbir Şey', + Nothing_to_save: 'Kaydedilecek bir şey yok!', + Notify_active_in_this_room: 'Bu odadaki çevrimiçi kullanıcıları bilgilendir', + Notify_all_in_this_room: 'Bu odadaki herkesi bilgilendir', + Notifications: 'Bildirimler', + Notification_Duration: 'Bildirim Süresi', + Notification_Preferences: 'Bildirim Tercihleri', + No_available_agents_to_transfer: 'Aktarılacak yemsilci yok', + Offline: 'Çevrimdışı', + Oops: 'Ahh!', + Omnichannel: 'Çoklu Kanal', + Open_Livechats: 'Devam Eden Sohbetler', + Omnichannel_enable_alert: 'Çoklu Kanal\'da mevcut değilsiniz. Erişilebilir olmak ister misiniz?', + Onboarding_description: 'Çalışma alanı, ekibinizin veya kuruluşunuzun işbirliği alanıdır. Çalışma alanı yöneticisinden bir ekibe katılmak veya bir ekip oluşturmak için yardım isteyin.', + Onboarding_join_workspace: 'Bir çalışma alanına katılın', + Onboarding_subtitle: 'Ekip İşbirliğinin Ötesinde', + Onboarding_title: 'Rocket.Chat\'e hoş geldiniz', + Onboarding_join_open_description: 'Rocket.Chat ekibi ve topluluğu ile sohbet etmek için açık çalışma alanımıza katılın.', + Onboarding_agree_terms: 'Devam ederek Rocket.Chat\'i kabul etmiş olursunuz', + Onboarding_less_options: 'Daha az seçenek', + Onboarding_more_options: 'Daha çok seçenek', + Online: 'Çevrimiçi', + Only_authorized_users_can_write_new_messages: 'Yalnızca yetkili kullanıcılar yeni ileti yazabilir', + Open_emoji_selector: 'Emoji seçiciyi aç', + Open_Source_Communication: 'Açık Kaynak İletişim', + Open_your_authentication_app_and_enter_the_code: 'Kimlik doğrulama uygulamanızı açın ve kodu girin.', + OR: 'OR', + OS: 'OS', + Overwrites_the_server_configuration_and_use_room_config: 'Sunucu yapılandırmasının üzerine yazar ve oda yapılandırmasını kullanır', + Password: 'Şifre', + Parent_channel_or_group: 'Üst kanal veya grup', + Permalink_copied_to_clipboard: 'Kalıcı bağlantı panoya kopyalandı!', + Phone: 'Telefon', + Pin: 'Sabitle', + Pinned_Messages: 'Sabitlenen İletiler', + pinned: 'sabitlendi', + Pinned: 'Sabitlendi', + Please_add_a_comment: 'Lütfen bir yorum ekleyin', + Please_enter_your_password: 'Lütfen şifrenizi giriniz', + Please_wait: 'Lütfen bekle.', + Preferences: 'Tercihler', + Preferences_saved: 'Tercihler kaydedildi!', + Privacy_Policy: ' Privacy Policy', + Private_Channel: 'Özel Kanal', + Private_Groups: 'Özel Gruplar', + Private: 'Özel', + Processing: 'İşleniyor...', + Profile_saved_successfully: 'Profil başarıyla kaydedildi!', + Profile: 'Profil', + Public_Channel: 'Herkese Açık Kanal', + Public: 'Herkese Açık', + Push_Notifications: 'Anlık Bildirimler', + Push_Notifications_Alert_Info: 'Bu bildirimler, uygulama açık olmadığında size teslim edilir', + Quote: 'Alıntı', + Reactions_are_disabled: 'Tepkiler devre dışı bırakıldı', + Reactions_are_enabled: 'Tepkiler etkinleştirildi', + Reactions: 'Tepkiler', + Read: 'Oku', + Read_External_Permission_Message: 'Rocket.Chat\'in cihazınızdaki fotoğraflara, medyaya ve dosyalara erişmesi gerekiyor', + Read_External_Permission: 'Medya Okuma İzni ', + Read_Only_Channel: 'Yazma Kısıtlı Kanal', + Read_Only: 'Yazma Kısıtlı', + Read_Receipt: 'Okundu Bilgisi', + Receive_Group_Mentions: 'Grup Bahsetmelerini Al', + Receive_Group_Mentions_Info: 'Grup bahsetmelerini al', + Register: 'Kayıt Ol', + Repeat_Password: 'Şifre Tekrarı', + Replied_on: 'Yanıtlandı:', + replies: 'yanıtlar', + reply: 'yanıtla', + Reply: 'Yanıtla', + Report: 'Bildir', + Receive_Notification: 'Bildirim Al', + Receive_notifications_from: '{{name}} bildirimlerini alın', + Resend: 'Yeniden yolla', + Reset_password: 'Şifre sıfırla', + resetting_password: 'şifre sıfırlanıyor', + RESET: 'SIFIRLA', + Return: 'Geri dön', + Review_app_title: 'Uygulama hoşunuza gitti mi?', + Review_app_desc: '{{store}} üzerinde bize 5 yıldız verin', + Review_app_yes: 'Elbette!', + Review_app_no: 'Hayır', + Review_app_later: 'Belki daha sonra', + Review_app_unable_store: '{{store}} açılamıyor!', + Review_this_app: 'Bu uygulamayı değerlendirin', + Remove: 'Kaldır', + Roles: 'Roller', + Room_actions: 'Oda işlemleri', + Room_changed_announcement: 'Oda duyurusu, {{userBy}} tarafından {{announcement}} olarak değiştirildi', + Room_changed_avatar: 'Oda profil fotoğrafı {{userBy}} tarafından değiştirildi', + Room_changed_description: 'Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi', + Room_changed_privacy: 'Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi', + Room_changed_topic: 'Oda konusu, {{userBy}} tarafından {{topic}} olarak değiştirildi', + Room_Files: 'Oda Dosyaları', + Room_Info_Edit: 'Oda Bilgilerini Düzenle', + Room_Info: 'Oda Bilgisi', + Room_Members: 'Oda Üyeleri', + Room_name_changed: 'Oda adı, {{userBy}} tarafından {{name}} olarak değiştirildi', + SAVE: 'KAYDET', + Save_Changes: 'Değişiklikleri Kaydet', + Save: 'Kaydet', + Saved: 'Kaydedildi', + saving_preferences: 'tercihler kaydediliyor', + saving_profile: 'profil kaydediliyor', + saving_settings: 'ayarlar kaydediliyor', + saved_to_gallery: 'Galeriye kaydedildi', + Save_Your_E2E_Password: '(E2E) Şifrenizi Kaydedin', + Save_Your_Encryption_Password: 'Şifreleme Parolanızı Kaydedin', + Save_Your_Encryption_Password_warning: 'Bu parola hiçbir yerde saklanmadığından başka bir yere dikkatlice kaydedin.', + Save_Your_Encryption_Password_info: 'Parolanızı kaybettiğinizde, kurtarmanın bir yolu olmadığını ve iletilerinize erişiminizi kaybedeceğinizi unutmayın.', + Search_Messages: 'İleti ara', + Search: 'Ara', + Search_by: 'Ara', + Search_global_users: 'Global kullanıcıları ara', + Search_global_users_description: 'Açarsanız, diğer şirketlerden veya sunuculardan herhangi bir kullanıcıyı arayabilirsiniz.', + Seconds: '{{second}} saniye', + Security_and_privacy: 'Güvenlik ve gizlilik', + Select_Avatar: 'Profil resmi seç', + Select_Server: 'Sunucu seç', + Select_Users: 'Kullanıcıları seç', + Select_a_Channel: 'Kanal Seç', + Select_a_Department: 'Bölüm Seç', + Select_an_option: 'Bir seçenek seçin', + Select_a_User: 'Kullanıcı Seç', + Send: 'Yolla', + Send_audio_message: 'Sesli ileti gönder', + Send_crash_report: 'Çökme raporu gönder', + Send_message: 'İleti gönder', + Send_me_the_code_again: 'Kodu tekrar gönder', + Send_to: 'Gönderiliyor...', + Sending_to: 'Gönderiliyor:', + Sent_an_attachment: 'Bir ek gönderildi', + Server: 'Sunucu', + Servers: 'Sunucular', + Server_version: 'Sunucu versiyonu: {{version}}', + Set_username_subtitle: 'Kullanıcı adı başkalarının iletilerde sizden bahsetmesine izin vermek için kullanılır', + Set_custom_status: 'Özelleştirilmiş durumu ayarlayın', + Set_status: 'Durumu ayarla', + Status_saved_successfully: 'Durum başarıyla kaydedildi!', + Settings: 'Ayarlar', + Settings_succesfully_changed: 'Ayarlar başarıyla değiştirildi!', + Share: 'Paylaş', + Share_Link: 'Bağlantı paylaş', + Share_this_app: 'Bu uygulamayı paylaş', + Show_more: 'Daha fazla göster..', + Show_Unread_Counter: 'Okunmamış Sayacını Göster', + Show_Unread_Counter_Info: 'Okunmamış sayacı, listede kanalın sağ tarafında bir rozet olarak görüntülenir', + Sign_in_your_server: 'Sunucunuzda oturum açın', + Sign_Up: 'Kaydol', + Some_field_is_invalid_or_empty: 'Bazı alanlar geçersiz veya boş', + Sorting_by: '{{key}} göre sıralanıyor', + Sound: 'Ses', + Star_room: 'Odayı Yıldızla', + Star: 'Yıldızla', + Starred_Messages: 'Yıldızlı İletiler', + starred: 'yıldızlandı', + Starred: 'Yıldızlandı', + Start_of_conversation: 'Konuşma başlangıcı', + Start_a_Discussion: 'Tartışma Başlat', + Started_discussion: 'Bir tartışma başlattı:', + Started_call: 'Arama {{userBy}} tarafından başlatıldı', + Submit: 'Kaydet', + Table: 'Tablo', + Tags: 'Etiketler', + Take_a_photo: 'Fotoğraf çek', + Take_a_video: 'Video çek', + Take_it: 'Al!', + tap_to_change_status: 'durumu değiştirmek için dokunun', + Tap_to_view_servers_list: 'Sunucu listesini görüntülemek için dokunun', + Terms_of_Service: ' Kullanım Şartları ', + Theme: 'Tema', + The_user_wont_be_able_to_type_in_roomName: 'Kullanıcı {{roomName}} içinde yazamayacak', + The_user_will_be_able_to_type_in_roomName: 'Kullanıcı {{roomName}} içinde yazabilecek', + There_was_an_error_while_action: '{{action}} sırasında bir hata oluştu!', + This_room_is_blocked: 'Bu oda engellendi', + This_room_is_read_only: 'Bu oda yazma kısıtlı', + Thread: 'Başlık', + Threads: 'Başlıklar', + Timezone: 'Saat dilimi', + To: 'Kime', + topic: 'konu', + Topic: 'Konu', + Translate: 'Çevir', + Try_again: 'Tekrar deneyin', + Two_Factor_Authentication: 'İki faktörlü Kimlik Doğrulama', + Type_the_channel_name_here: 'Kanal adını buraya yazın', + unarchive: 'arşivden çıkar', + UNARCHIVE: 'ARŞİVDEN ÇIKAR', + Unblock_user: 'Kullanıcının engelini kaldır', + Unfavorite: 'Favorilerden Çıkar', + Unfollowed_thread: 'Takip edilmeyen başlık', + Unmute: 'Sesi Aç', + unmuted: 'Sesi Açıldı', + Unpin: 'Sabitlemeyi kaldır', + unread_messages: 'okunmamış', + Unread: 'Okunmamış', + Unread_on_top: 'Okunmamışlar üstte', + Unstar: 'Yıldızı kaldır', + Updating: 'Güncelleniyor...', + Uploading: 'Gönderiliyor', + Upload_file_question_mark: 'Dosya gönderilsin mi?', + User: 'Kullanıcı', + Users: 'Kullanıcılar', + User_added_by: '{{userAdded}} adlı kullanıcı {{userBy}} tarafından eklendi', + User_Info: 'Kullanıcı bilgisi', + User_has_been_key: 'Kullanıcı {{key}} olmuştur', + User_is_no_longer_role_by_: '{{user}} artık {{role}} değil ({{userBy}} tarafından)', + User_muted_by: '{{userMuted}} adlı kullanıcının sesini {{userBy}} kapattı', + User_removed_by: '{{userRemoved}} kullanıcısı {{userBy}} tarafından kaldırıldı', + User_sent_an_attachment: '{{user}} bir ek gönderdi', + User_unmuted_by: '{{userUnmuted}} kullanıcısının sesi {{userBy}} tarafından açıldı', + User_was_set_role_by_: '{{user}}, {{userBy}} tarafından {{role}} ayarlandı', + Username_is_empty: 'Kullanıcı adı boş!', + Username: 'Kullanıcı adı', + Username_or_email: 'Kullanıcı adı ya da e-posta', + Uses_server_configuration: 'Sunucu yapılandırmasını kullanır', + Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Genellikle tartışma, "Nasıl resim yüklerim?" gibi bir soruyla başlar.', + Validating: 'Doğrulanıyor', + Registration_Succeeded: 'Kayıt Başarılı!', + Verify: 'Onayla', + Verify_email_title: 'Kaydınızı onaylayın!', + Verify_email_desc: 'Kaydınızı onaylamak için size bir e-posta gönderdik. Kısa süre içinde bir e-posta almazsanız, lütfen geri gelin ve tekrar deneyin.', + Verify_your_email_for_the_code_we_sent: 'Gönderdiğimiz kod için e-postanızı doğrulayın', + Video_call: 'Görüntülü arama', + View_Original: 'Orijinali Görüntüle', + Voice_call: 'Sesli arama', + Waiting_for_network: 'Ağ bağlantısı bekleniyor ...', + Websocket_disabled: 'Bu sunucu için Websocket devre dışı bırakıldı.\n{{contact}}', + Welcome: 'Hoşgeldiniz', + What_are_you_doing_right_now: 'Şu an ne yapıyorsun?', + Whats_your_2fa: '2 faktör doğrulama (2FA) kodunuz nedir?', + Without_Servers: 'Sunucusuz', + Workspaces: 'Çalışma alanları', + Would_you_like_to_return_the_inquiry: 'Başvuruyu geri çevirmek ister misiniz?', + Write_External_Permission_Message: 'Rocket.Chat\'in galerinize erişmesi gerekiyor, böylece resimleri kaydedebilirsiniz.', + Write_External_Permission: 'Galeri İzni', + Yes: 'Evet', + Yes_action_it: 'Evet, {{action}}!', + Yesterday: 'Dün', + You_are_in_preview_mode: 'İzleme modundasınız', + You_are_offline: 'Çevrimdışısınız', + You_can_search_using_RegExp_eg: 'Düzenli ifadeleri (Regular Expressions) kullanabilirsiniz. Örneğin: `/^text$/i`', + You_colon: 'Siz: ', + you_were_mentioned: 'senden bahsedildi', + You_were_removed_from_channel: '{{channel}} kanalından çıkarıldınız', + you: 'siz', + You: 'Siz', + Logged_out_by_server: 'Sunucu tarafından çıkış yaptınız. Lütfen tekrar giriş yapın.', + You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Bir şeyler paylaşmak için Rocket.Chat sunucusuna erişmeniz gerekir.', + You_need_to_verifiy_your_email_address_to_get_notications: 'Bildirim almak için e-posta adresinizi doğrulamanız gerekiyor', + Your_certificate: 'Sertifikanız', + Your_message: 'İletiınız', + Your_invite_link_will_expire_after__usesLeft__uses: 'Davet bağlantınızın geçerliliği {{usesLeft}} kullanımdan sonra sona erecek.', + Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Davet bağlantınızın geçerliliği {{date}} tarihinde veya {{usesLeft}} kullanımdan sonra sona erecek.', + Your_invite_link_will_expire_on__date__: 'Davet bağlantınızın geçerlilik süresi {{date}} tarihinde sona erecek.', + Your_invite_link_will_never_expire: 'Davet bağlantınızın geçerlilik süresi asla dolmayacak.', + Your_workspace: 'Çalışma alanınız', + Your_password_is: 'Şifreniz', + Version_no: 'Versiyon: {{version}}', + You_will_not_be_able_to_recover_this_message: 'Bu iletiyi kurtaramayacaksınız!', + You_will_unset_a_certificate_for_this_server: 'Bu sunucu için bir sertifika ayarını kaldıracaksınız', + Change_Language: 'Dili değiştir', + Crash_report_disclaimer: 'Sohbetlerinizin içeriğini asla takip etmiyoruz. Çökme raporu ve analiz olayları, sorunları tanımlamak ve düzeltmek için yalnızca bizim için ilgili bilgileri içerir.', + Type_message: 'İleti yaz', + Room_search: 'Oda arama', + Room_selection: 'Oda seçimi 1...9', + Next_room: 'Sonraki oda', + Previous_room: 'Önceki oda', + New_room: 'Yeni oda', + Upload_room: 'Odaya yükle', + Search_messages: 'İletilerda ara', + Scroll_messages: 'İletilerı kaydır', + Reply_latest: 'Sonuncuyu yanıtla', + Reply_in_Thread: 'Konu içinde cevapla', + Server_selection: 'Sunucu seçimi', + Server_selection_numbers: 'Sunucu seçimi 1...9', + Add_server: 'Sunucu ekle', + New_line: 'Yeni satır', + You_will_be_logged_out_of_this_application: 'Bu uygulamadan çıkış yapacaksınız.', + Clear: 'Temizle', + This_will_clear_all_your_offline_data: 'Bu, tüm çevrimdışı verilerinizi temizleyecektir.', + This_will_remove_all_data_from_this_server: 'Bu, bu sunucudaki tüm verileri kaldıracaktır.', + Mark_unread: 'Okunmadı olarak işaretle', + Wait_activation_warning: 'Giriş yapmadan önce, hesabınız bir yönetici tarafından manuel olarak etkinleştirilmelidir.', + Screen_lock: 'Ekran kilidi', + Local_authentication_biometry_title: 'Doğrula', + Local_authentication_biometry_fallback: 'Parola kullan', + Local_authentication_unlock_option: 'Şifre ile Kilidi Açın', + Local_authentication_change_passcode: 'Parolayı Değiştir', + Local_authentication_info: 'Not: Parolayı unutursanız, uygulamayı silmeniz ve yeniden yüklemeniz gerekir.', + Local_authentication_facial_recognition: 'yüz tanıma', + Local_authentication_fingerprint: 'parmak izi', + Local_authentication_unlock_with_label: '{{label}} ile kilidi açın', + Local_authentication_auto_lock_60: '1 dakika sonra', + Local_authentication_auto_lock_300: '5 dakika sonra', + Local_authentication_auto_lock_900: '15 dakika sonra', + Local_authentication_auto_lock_1800: '30 dakika sonra', + Local_authentication_auto_lock_3600: '1 saat sonra', + Passcode_enter_title: 'Şifrenizi giriniz', + Passcode_choose_title: 'Yeni şifrenizi yazın', + Passcode_choose_confirm_title: 'Yeni şifrenizi onaylayın', + Passcode_choose_error: 'Parolalar eşleşmiyor. Tekrar deneyin.', + Passcode_choose_force_set: 'Yönetici tarafından istenen şifre', + Passcode_app_locked_title: 'Uygulama kilitlendi', + Passcode_app_locked_subtitle: '{{timeLeft}} saniye içinde tekrar deneyin', + After_seconds_set_by_admin: '{{seconds}} saniye sonra (yönetici tarafından belirlenir)', + Dont_activate: 'Şimdi etkinleştirme', + Queued_chats: 'Sıralı sohbetler', + Queue_is_empty: 'Sıra boş', + Logout_from_other_logged_in_locations: 'Giriş yapılan diğer konumlardan çıkış yap', + You_will_be_logged_out_from_other_locations: 'Diğer konumlardan çıkış yapacaksınız.', + Logged_out_of_other_clients_successfully: 'Diğer istemcilerden başarıyla çıkış yapıldı', + Logout_failed: 'Oturum kapatma başarısız oldu!', + Log_analytics_events: 'Olayları günlüğe kaydet', + E2E_encryption_change_password_title: 'Şifreleme Parolasını Değiştir', + E2E_encryption_change_password_description: 'Artık şifrelenmiş özel gruplar ve doğrudan iletiler oluşturabilirsiniz. Mevcut özel grupları veya özel iletileri şifreli olarak da değiştirebilirsiniz. \nBu uçtan uca şifrelemedir, bu nedenle iletilerinizi şifrelemek / çözmek için kullanılan anahtar sunucuya kaydedilmez. Bu nedenle şifrenizi güvenli bir yerde saklamanız gerekir. Uçtan uca şifrelemeyi (E2E) kullanmak istediğiniz diğer cihazlara girmeniz istenecektir.', + E2E_encryption_change_password_error: 'Uçtan uca şifreleme (E2E) anahtar şifresi değiştirilirken hata!', + E2E_encryption_change_password_success: 'Uçtan uca şifreleme (E2E) anahtar şifresi başarıyla değiştirildi!', + E2E_encryption_change_password_message: 'Dikkatlice kaydettiğinizden emin olun.', + E2E_encryption_change_password_confirmation: 'Evet, değiştir!', + E2E_encryption_reset_title: 'Uçtan uca şifreleme (E2E) Anahtarını Sıfırla', + E2E_encryption_reset_description: 'Bu seçenek mevcut uçtan uca şifreleme (E2E) anahtarınızı kaldıracak ve oturumu kapatacaktır. \nTekrar oturum açtığınızda, Rocket.Chat size yeni bir anahtar oluşturacak ve çevrimiçi olarak bir veya daha fazla üyesi olan şifreli herhangi bir odaya erişiminizi geri yükleyecektir. \nUçtan uca şifrelemenin (E2E) doğası gereği Rocket.Chat, çevrimiçi üyesi olmayan hiçbir şifreli odaya erişimi geri yükleyemez.', + E2E_encryption_reset_button: 'Uçtan uca şifreleme (E2E) anahtarını sıfırla', + E2E_encryption_reset_error: 'Uçtan uca şifreleme (E2E) anahtarı sıfırlanırken hata!', + E2E_encryption_reset_message: 'Oturumunuz kapatılacak!', + E2E_encryption_reset_confirmation: 'Evet, sıfırla', + Following: 'Takip ediliyor', + Threads_displaying_all: 'Tüm konular görüntüleniyor', + Threads_displaying_following: 'Takip edilen konular görüntüleniyor', + Threads_displaying_unread: 'Okunmamış konular görüntüleniyor', + No_threads: 'Konu yok', + No_threads_following: 'Herhangi bir konuyu takip etmiyorsunuz', + No_threads_unread: 'Okunmamış konu yok', + Messagebox_Send_to_channel: 'Kanala gönder', + Set_as_leader: 'Lider olarak ayarla', + Set_as_moderator: 'Moderatör olarak ayarla', + Set_as_owner: 'Sahip olarak ayarla', + Remove_as_leader: 'Lider olarak kaldır', + Remove_as_moderator: 'Moderatör olarak kaldır', + Remove_as_owner: 'Sahip olarak kaldır', + Remove_from_room: 'Odadan çıkar', + Ignore: 'Yok say', + Unignore: 'Yok sayma', + User_has_been_ignored: 'Kullanıcı yok sayıldı.', + User_has_been_unignored: 'Kullanıcı artık yok sayılmıyor.', + User_has_been_removed_from_s: 'Kullanıcı {{s}} alanından kaldırıldı.', + User__username__is_now_a_leader_of__room_name_: '{{Username}} kullanıcısı artık {{room_name}} lideridir.', + User__username__is_now_a_moderator_of__room_name_: '{{Username}} kullanıcısı artık bir {{room_name}} moderatörüdür.', + User__username__is_now_a_owner_of__room_name_: '{{Username}} kullanıcısı artık {{room_name}} adlı odanın sahibidir.', + User__username__removed_from__room_name__leaders: '{{Username}} adlı kullanıcı, {{room_name}} liderlerinden kaldırıldı.', + User__username__removed_from__room_name__moderators: '{{Username}} adlı kullanıcı, {{room_name}} moderatörlerinden kaldırıldı.', + User__username__removed_from__room_name__owners: '{{Username}} adlı kullanıcı, {{room_name}} sahiplerinden kaldırıldı.', + The_user_will_be_removed_from_s: 'Kullanıcı, {{s}} alanından kaldırılacak!', + Yes_remove_user: 'Evet, kullanıcıyı kaldır!', + Direct_message: 'Özel ileti', + Message_Ignored: 'İleti yok sayıldı. Görüntülemek için dokunun.', + Enter_workspace_URL: 'Çalışma alanı URL\'nizi girin', + Workspace_URL_Example: 'Örn. sirketiniz.rocket.chat' +}; From 94d94cfcc34056e2a5951ac5b5dfdb1820983cc3 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 20 Jan 2021 18:16:30 -0300 Subject: [PATCH 020/177] [FIX] Lint on #2793 (#2818) --- app/i18n/locales/tr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/i18n/locales/tr.js b/app/i18n/locales/tr.js index 5bc1616e0b8..5ca3648e265 100644 --- a/app/i18n/locales/tr.js +++ b/app/i18n/locales/tr.js @@ -704,7 +704,7 @@ export default { The_user_will_be_removed_from_s: 'Kullanıcı, {{s}} alanından kaldırılacak!', Yes_remove_user: 'Evet, kullanıcıyı kaldır!', Direct_message: 'Özel ileti', - Message_Ignored: 'İleti yok sayıldı. Görüntülemek için dokunun.', + Message_Ignored: 'İleti yok sayıldı. Görüntülemek için dokunun.', Enter_workspace_URL: 'Çalışma alanı URL\'nizi girin', Workspace_URL_Example: 'Örn. sirketiniz.rocket.chat' }; From e2d0a00c27df5364454ad4909d339d55dd1160e2 Mon Sep 17 00:00:00 2001 From: phriedrich Date: Thu, 21 Jan 2021 13:56:45 +0100 Subject: [PATCH 021/177] [I18N] Add missing german strings (#2689) (#2820) --- app/i18n/locales/de.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/i18n/locales/de.js b/app/i18n/locales/de.js index 2f618131530..02e98bec63c 100644 --- a/app/i18n/locales/de.js +++ b/app/i18n/locales/de.js @@ -702,5 +702,7 @@ export default { The_user_will_be_removed_from_s: 'Der Benutzer wird aus {{s}} entfernt', Yes_remove_user: 'Ja, Benutzer entfernen!', Direct_message: 'Direktnachricht', - Message_Ignored: 'Nachricht ignoriert. Antippen um sie zu zeigen.' + Message_Ignored: 'Nachricht ignoriert. Antippen um sie zu zeigen.', + Enter_workspace_URL: 'Arbeitsbereich-URL', + Workspace_URL_Example: 'z.B. https://rocketchat.deine-firma.de' }; From f0046f66769e49125e10d8f9e45ad286308f8e9e Mon Sep 17 00:00:00 2001 From: Vincenzo Esposito Date: Thu, 21 Jan 2021 15:47:52 +0100 Subject: [PATCH 022/177] [I18N] Add missing italian strings (#2817) --- app/i18n/locales/it.js | 53 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/app/i18n/locales/it.js b/app/i18n/locales/it.js index 35bd581c5d6..c0a0c245eb9 100644 --- a/app/i18n/locales/it.js +++ b/app/i18n/locales/it.js @@ -197,6 +197,7 @@ export default { Do_you_have_an_account: 'Hai un account?', Do_you_have_a_certificate: 'Hai un certificato?', Do_you_really_want_to_key_this_room_question_mark: 'Sei sicuro di voler {{key}} questa stanza?', + E2E_Encryption: 'Crittografia E2E', E2E_How_It_Works_info1: 'Ora puoi creare gruppi e messaggi privati crittografati. Puoi anche crittografare quelli già esistenti.', E2E_How_It_Works_info2: 'Questa è *crittografia end-to-end*, quindi la chiave per cifrare/decifrare i messaggi non verrà salvata sul server. Per questo motivo *devi salvare questa password in un luogo sicuro* dove poterla recuperare in seguito qualora necessario.', E2E_How_It_Works_info3: 'Procedendo verrà generata automaticamente una password E2E.', @@ -280,6 +281,8 @@ export default { Invite_Link: 'Link di invito', Invite_users: 'Invita utenti', Join: 'Entra', + Join_Code: 'Codice d\'accesso', + Insert_Join_Code: 'Inserisci il codice d\'accesso', Join_our_open_workspace: 'Unisciti al nostro workspace', Join_your_workspace: 'Unisciti al tuo workspace', Just_invited_people_can_access_this_channel: 'Solo le persone invitate possono accedere a questo canale', @@ -435,6 +438,7 @@ export default { Roles: 'Ruoli', Room_actions: 'Azioni stanza', Room_changed_announcement: 'Annuncio stanza cambiato in: {{announcement}} da {{userBy}}', + Room_changed_avatar: 'Immagine stanza cambiata da {{userBy}}', Room_changed_description: 'Descrizione stanza cambiata in: {{description}} da {{userBy}}', Room_changed_privacy: 'Tipo stanza cambiato in: {{type}} da {{userBy}}', Room_changed_topic: 'Argomento stanza cambiato in: {{topic}} da {{userBy}}', @@ -461,6 +465,7 @@ export default { Search_global_users: 'Cerca utenti globali', Search_global_users_description: 'Se attivi questa opzione, puoi cercare qualsiasi utente da altre aziende o server.', Seconds: '{{second}} secondi', + Security_and_privacy: 'Sicurezza e privacy', Select_Avatar: 'Seleziona avatar', Select_Server: 'Seleziona server', Select_Users: 'Seleziona utenti', @@ -533,7 +538,7 @@ export default { unarchive: 'rimuovi dall\'archivio', UNARCHIVE: 'RIMUOVI DALL\'ARCHIVIO', Unblock_user: 'Sblocca utente', - Unfavorite: 'Rimuovi dai preferiti', + Unfavorite: 'Rimuovi preferito', Unfollowed_thread: 'Non segui più il thread', Unmute: 'Attiva notifiche', unmuted: 'notifiche attivate', @@ -655,5 +660,49 @@ export default { You_will_be_logged_out_from_other_locations: 'Verrai disconnesso dalle altre postazioni.', Logged_out_of_other_clients_successfully: 'Disconnesso dalle altre postazioni con successo', Logout_failed: 'Disconnessione fallita!', - Log_analytics_events: 'Invia statistiche anonime' + Log_analytics_events: 'Invia statistiche anonime', + E2E_encryption_change_password_title: 'Cambia la password di cifratura', + E2E_encryption_change_password_description: 'Ora puoi creare gruppi e messaggi privati crittografati. Potrai, inoltre, crittografare i tuoi gruppi e messaggi privati esistenti. \nQuesta è crittografia end-to-end, la chiave per codificare/decodificare i tuoi messaggi non verrà salvata sul server. Per questo motivo devi salvarla in un luogo sicuro. Ti verrà richiesto di inserirla sugli altri dispositivi sui quali vuoi usare la crittografia e2e.', + E2E_encryption_change_password_error: 'Si è verificato un errore durante il cambio della password della chiave E2E!', + E2E_encryption_change_password_success: 'La password della chiave E2E è stata cambiata con successo!', + E2E_encryption_change_password_message: 'Assicurati di salvarla in un posto sicuro.', + E2E_encryption_change_password_confirmation: 'Si, cambiala', + E2E_encryption_reset_title: 'Ripristina la Chiave E2E', + E2E_encryption_reset_description: 'Questa opzione rimuoverà la tua chiave E2E corrente e sarai disconnesso. \nAl prossimo login, Rocket.Chat genererà una nuova chiave e ripristinerà l\'accesso a tutte le stanze crittografate con uno o più membri online. \nA causa della natura della crittografia E2E, Rocket.Chat non sarà in grado di ripristinare l\'accesso alle stanze senza membri online.', + E2E_encryption_reset_button: 'Ripristina', + E2E_encryption_reset_error: 'Si è verificato un errore durante il ripristino della chiave E2E!', + E2E_encryption_reset_message: 'Stai per essere disconnesso.', + E2E_encryption_reset_confirmation: 'Si, resettala', + Following: 'Seguiti', + Threads_displaying_all: 'Visualizza Tutti', + Threads_displaying_following: 'Visualizza Seguiti', + Threads_displaying_unread: 'Visualizza Non letti', + No_threads: 'Non ci sono thread', + No_threads_following: 'Non stai seguendo alcun thread', + No_threads_unread: 'Non ci sono thread non letti', + Messagebox_Send_to_channel: 'Invia sul canale', + Set_as_leader: 'Rendi leader', + Set_as_moderator: 'Rendi moderatore', + Set_as_owner: 'Rendi proprietario', + Remove_as_leader: 'Rimuovi come leader', + Remove_as_moderator: 'Rimuovi come moderatore', + Remove_as_owner: 'Rimuovi come proprietario', + Remove_from_room: 'Rimuovi dalla stanza', + Ignore: 'Ignora', + Unignore: 'Non ignorare', + User_has_been_ignored: 'Utente ignorato', + User_has_been_unignored: 'Utente non ignorato', + User_has_been_removed_from_s: 'L\'utente è stato rimosso da {{s}}', + User__username__is_now_a_leader_of__room_name_: 'L\'utente {{username}} è ora un leader di {{room_name}}', + User__username__is_now_a_moderator_of__room_name_: 'L\'utente {{username}} è ora un moderatore di {{room_name}}', + User__username__is_now_a_owner_of__room_name_: 'L\'utente {{username}} è ora un proprietario di {{room_name}}', + User__username__removed_from__room_name__leaders: 'L\'utente {{username}} non è più un leader di {{room_name}}', + User__username__removed_from__room_name__moderators: 'L\'utente {{username}} non è più un moderatore di {{room_name}}', + User__username__removed_from__room_name__owners: 'L\'utente {{username}} non è più un proprietario di {{room_name}}', + The_user_will_be_removed_from_s: 'L\'utente sarà rimosso da {{s}}', + Yes_remove_user: 'Si, rimuovi utente!', + Direct_message: 'Messaggio diretto', + Message_Ignored: 'Messaggio ignorato. Tocca per visualizzarlo.', + Enter_workspace_URL: 'Inserisci la url del workspace', + Workspace_URL_Example: 'Es. tua-azienda.rocket.chat' }; From 0fdb8f2e465495446fb9361e4c140e7fd203fc32 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Thu, 21 Jan 2021 14:20:28 -0300 Subject: [PATCH 023/177] [FIX] Server version becoming null on server change (#2821) --- app/views/RoomsListView/ServerDropdown.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 95d6603bda9..5081f4504f3 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -143,7 +143,7 @@ class ServerDropdown extends Component { }, ANIMATION_DURATION); } - select = async(server) => { + select = async(server, version) => { const { server: currentServer, selectServerRequest, isMasterDetail } = this.props; @@ -163,7 +163,7 @@ class ServerDropdown extends Component { }, ANIMATION_DURATION); } else { await localAuthenticate(server); - selectServerRequest(server); + selectServerRequest(server, version); } } } @@ -204,7 +204,7 @@ class ServerDropdown extends Component { return ( this.select(item.id)} + onPress={() => this.select(item.id, item.version)} onLongPress={() => (item.id === server || this.remove(item.id))} hasCheck={item.id === server} theme={theme} @@ -283,7 +283,7 @@ const mapStateToProps = state => ({ const mapDispatchToProps = dispatch => ({ toggleServerDropdown: () => dispatch(toggleServerDropdownAction()), - selectServerRequest: server => dispatch(selectServerRequestAction(server, null, null, true)), + selectServerRequest: (server, version) => dispatch(selectServerRequestAction(server, version, true, true)), appStart: params => dispatch(appStartAction(params)), initAdd: previousServer => dispatch(serverInitAddAction(previousServer)) }); From bd09cd32a0dd2896accb12403abe5f92f01b71c8 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Thu, 21 Jan 2021 15:52:26 -0400 Subject: [PATCH 024/177] [FIX] Wrong styling on E2E encryption banner (#2767) * [FIX] Wrong styling on E2E encryption banner * [FIX] Wrong styling on E2E encryption banner * [FIX] Wrong styling on E2E encryption banner * [FIX] Wrong styling on E2E encryption banner (#2767) * Updated SortDropdown, ListHeader, ListItem and added stories for List.Item * Updated SortDropdown * Removed unused component * Updated List.Item and stories * Reverted unnecessary changes and updated ListItem stories * Fix minor indentation * Stop breaking Touch's default underlay color * Fix indentation * Remove falsy comparison from render * Fix left icon * Use List.Item on OmnichannelStatus * Add missing separator * Lint * Fix sort dropdown * Remove unnecessary styles * Fix detox Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 61 +++++++++- app/constants/colors.js | 3 + app/containers/List/ListItem.js | 19 ++-- .../containers/OmnichannelStatus.js | 61 +++++----- app/utils/touch.js | 7 +- .../RoomsListView/ListHeader/Encryption.js | 49 -------- app/views/RoomsListView/ListHeader/Sort.js | 45 -------- app/views/RoomsListView/ListHeader/index.js | 69 ++++++++++-- app/views/RoomsListView/SortDropdown/Item.js | 46 -------- app/views/RoomsListView/SortDropdown/index.js | 105 +++++++++--------- app/views/RoomsListView/styles.js | 93 +--------------- storybook/stories/List.js | 11 +- 12 files changed, 225 insertions(+), 344 deletions(-) delete mode 100644 app/views/RoomsListView/ListHeader/Encryption.js delete mode 100644 app/views/RoomsListView/ListHeader/Sort.js delete mode 100644 app/views/RoomsListView/SortDropdown/Item.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 9d9a30e357f..b30a37fed22 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -6796,7 +6796,7 @@ exports[`Storyshots List with black theme 1`] = ` `; -exports[`Storyshots List with custom color 1`] = ` +exports[`Storyshots List with custom colors 1`] = ` + + + + Press me! + + + + `; diff --git a/app/constants/colors.js b/app/constants/colors.js index 6cc0ea164a7..b1fdcd7f3e4 100644 --- a/app/constants/colors.js +++ b/app/constants/colors.js @@ -35,6 +35,7 @@ export const themes = { auxiliaryText: '#9ca2a8', infoText: '#6d6d72', tintColor: '#1d74f5', + tintActive: '#549df9', auxiliaryTintColor: '#6C727A', actionTintColor: '#1d74f5', separatorColor: '#cbcbcc', @@ -80,6 +81,7 @@ export const themes = { auxiliaryText: '#9297a2', infoText: '#6D6D72', tintColor: '#1d74f5', + tintActive: '#549df9', auxiliaryTintColor: '#f9f9f9', actionTintColor: '#1d74f5', separatorColor: '#2b2b2d', @@ -125,6 +127,7 @@ export const themes = { auxiliaryText: '#b2b8c6', infoText: '#6d6d72', tintColor: '#1e9bfe', + tintActive: '#76b7fc', auxiliaryTintColor: '#f9f9f9', actionTintColor: '#1e9bfe', separatorColor: '#272728', diff --git a/app/containers/List/ListItem.js b/app/containers/List/ListItem.js index a3252a7f530..6ce7bb6fcb7 100644 --- a/app/containers/List/ListItem.js +++ b/app/containers/List/ListItem.js @@ -1,9 +1,6 @@ import React from 'react'; import { - View, - Text, - StyleSheet, - I18nManager + View, Text, StyleSheet, I18nManager } from 'react-native'; import PropTypes from 'prop-types'; @@ -82,11 +79,12 @@ const Content = React.memo(({ )); const Button = React.memo(({ - onPress, ...props + onPress, backgroundColor, underlayColor, ...props }) => ( onPress(props.title)} - style={{ backgroundColor: themes[props.theme].backgroundColor }} + style={{ backgroundColor: backgroundColor || themes[props.theme].backgroundColor }} + underlayColor={underlayColor} enabled={!props.disabled} theme={props.theme} > @@ -99,7 +97,7 @@ const ListItem = React.memo(({ ...props }) => { return ); -}, (prevProps, nextProps) => equal(prevProps.file, nextProps.file) && prevProps.theme === nextProps.theme); +}, (prevProps, nextProps) => dequal(prevProps.file, nextProps.file) && prevProps.theme === nextProps.theme); ImageContainer.propTypes = { file: PropTypes.object, diff --git a/app/containers/message/Reply.js b/app/containers/message/Reply.js index 2502cb42c70..88c748baaa6 100644 --- a/app/containers/message/Reply.js +++ b/app/containers/message/Reply.js @@ -2,7 +2,7 @@ import React, { useContext } from 'react'; import { View, Text, StyleSheet } from 'react-native'; import PropTypes from 'prop-types'; import moment from 'moment'; -import isEqual from 'deep-equal'; +import { dequal } from 'dequal'; import Touchable from './Touchable'; import Markdown from '../markdown'; @@ -125,7 +125,7 @@ const Fields = React.memo(({ attachment, theme }) => { ))} ); -}, (prevProps, nextProps) => isEqual(prevProps.attachment.fields, nextProps.attachment.fields) && prevProps.theme === nextProps.theme); +}, (prevProps, nextProps) => dequal(prevProps.attachment.fields, nextProps.attachment.fields) && prevProps.theme === nextProps.theme); const Reply = React.memo(({ attachment, timeFormat, index, getCustomEmoji, theme @@ -187,7 +187,7 @@ const Reply = React.memo(({ /> ); -}, (prevProps, nextProps) => isEqual(prevProps.attachment, nextProps.attachment) && prevProps.theme === nextProps.theme); +}, (prevProps, nextProps) => dequal(prevProps.attachment, nextProps.attachment) && prevProps.theme === nextProps.theme); Reply.propTypes = { attachment: PropTypes.object, diff --git a/app/containers/message/Urls.js b/app/containers/message/Urls.js index 946433d4355..742b2f4781c 100644 --- a/app/containers/message/Urls.js +++ b/app/containers/message/Urls.js @@ -4,7 +4,7 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import FastImage from '@rocket.chat/react-native-fast-image'; -import isEqual from 'lodash/isEqual'; +import { dequal } from 'dequal'; import Touchable from './Touchable'; import openLink from '../../utils/openLink'; @@ -112,7 +112,7 @@ const Url = React.memo(({ url, index, theme }) => { ); -}, (oldProps, newProps) => isEqual(oldProps.url, newProps.url) && oldProps.theme === newProps.theme); +}, (oldProps, newProps) => dequal(oldProps.url, newProps.url) && oldProps.theme === newProps.theme); const Urls = React.memo(({ urls, theme }) => { if (!urls || urls.length === 0) { @@ -122,7 +122,7 @@ const Urls = React.memo(({ urls, theme }) => { return urls.map((url, index) => ( )); -}, (oldProps, newProps) => isEqual(oldProps.urls, newProps.urls) && oldProps.theme === newProps.theme); +}, (oldProps, newProps) => dequal(oldProps.urls, newProps.urls) && oldProps.theme === newProps.theme); UrlImage.propTypes = { image: PropTypes.string diff --git a/app/containers/message/Video.js b/app/containers/message/Video.js index 2e9ef6c2a5b..fed0c67f27d 100644 --- a/app/containers/message/Video.js +++ b/app/containers/message/Video.js @@ -1,7 +1,7 @@ import React, { useContext } from 'react'; import PropTypes from 'prop-types'; import { StyleSheet } from 'react-native'; -import isEqual from 'deep-equal'; +import { dequal } from 'dequal'; import Touchable from './Touchable'; import Markdown from '../markdown'; @@ -57,7 +57,7 @@ const Video = React.memo(({ ); -}, (prevProps, nextProps) => isEqual(prevProps.file, nextProps.file) && prevProps.theme === nextProps.theme); +}, (prevProps, nextProps) => dequal(prevProps.file, nextProps.file) && prevProps.theme === nextProps.theme); Video.propTypes = { file: PropTypes.object, diff --git a/app/ee/omnichannel/views/QueueListView.js b/app/ee/omnichannel/views/QueueListView.js index 34a3076994a..a261d481eac 100644 --- a/app/ee/omnichannel/views/QueueListView.js +++ b/app/ee/omnichannel/views/QueueListView.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FlatList } from 'react-native'; import { connect } from 'react-redux'; -import isEqual from 'react-fast-compare'; +import { dequal } from 'dequal'; import I18n from '../../../i18n'; import RoomItem, { ROW_HEIGHT } from '../../../presentation/RoomItem'; @@ -56,7 +56,7 @@ class QueueListView extends React.Component { shouldComponentUpdate(nextProps) { const { queued } = this.props; - if (!isEqual(nextProps.queued, queued)) { + if (!dequal(nextProps.queued, queued)) { return true; } diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 5c768cfaba9..b9f49ab203f 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -620,19 +620,15 @@ const RocketChat = { data = data.slice(0, 7); - data = data.map((sub) => { - if (sub.t !== 'd') { - return { - rid: sub.rid, - name: sub.name, - fname: sub.fname, - avatarETag: sub.avatarETag, - t: sub.t, - encrypted: sub.encrypted - }; - } - return sub; - }); + data = data.map(sub => ({ + rid: sub.rid, + name: sub.name, + fname: sub.fname, + avatarETag: sub.avatarETag, + t: sub.t, + encrypted: sub.encrypted, + lastMessage: sub.lastMessage + })); return data; }, diff --git a/app/presentation/RoomItem/LastMessage.js b/app/presentation/RoomItem/LastMessage.js index b29cb6cd115..25fc2c08d81 100644 --- a/app/presentation/RoomItem/LastMessage.js +++ b/app/presentation/RoomItem/LastMessage.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import isEqual from 'lodash/isEqual'; +import { dequal } from 'dequal'; import I18n from '../../i18n'; import styles from './styles'; @@ -45,7 +45,7 @@ const formatMsg = ({ return `${ prefix }${ lastMessage.msg }`; }; -const arePropsEqual = (oldProps, newProps) => isEqual(oldProps, newProps); +const arePropsEqual = (oldProps, newProps) => dequal(oldProps, newProps); const LastMessage = React.memo(({ lastMessage, type, showLastMessage, username, alert, useRealName, theme diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 475996f4f4d..937a48ef23a 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { View, Text, Switch, ScrollView, StyleSheet, FlatList } from 'react-native'; -import equal from 'deep-equal'; +import { dequal } from 'dequal'; import TextInput from '../presentation/TextInput'; import Loading from '../containers/Loading'; @@ -133,7 +133,7 @@ class CreateChannelView extends React.Component { if (nextProps.encryptionEnabled !== encryptionEnabled) { return true; } - if (!equal(nextProps.users, users)) { + if (!dequal(nextProps.users, users)) { return true; } return false; diff --git a/app/views/CreateDiscussionView/index.js b/app/views/CreateDiscussionView/index.js index f03c3632814..2970ba01615 100644 --- a/app/views/CreateDiscussionView/index.js +++ b/app/views/CreateDiscussionView/index.js @@ -2,7 +2,6 @@ import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import { ScrollView, Text, Switch } from 'react-native'; -import isEqual from 'lodash/isEqual'; import Loading from '../../containers/Loading'; import KeyboardView from '../../presentation/KeyboardView'; @@ -63,11 +62,12 @@ class CreateChannelView extends React.Component { } componentDidUpdate(prevProps, prevState) { + const { channel, name } = this.state; const { loading, failure, error, result, isMasterDetail } = this.props; - if (!isEqual(this.state, prevState)) { + if (channel?.rid !== prevState.channel?.rid || name !== prevState.name) { this.setHeader(); } diff --git a/app/views/LoginView.js b/app/views/LoginView.js index bdffd103b5c..8e9791d3606 100644 --- a/app/views/LoginView.js +++ b/app/views/LoginView.js @@ -4,7 +4,7 @@ import { Text, View, StyleSheet, Keyboard, Alert } from 'react-native'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; +import { dequal } from 'dequal'; import sharedStyles from './Styles'; import Button from '../containers/Button'; @@ -82,7 +82,7 @@ class LoginView extends React.Component { UNSAFE_componentWillReceiveProps(nextProps) { const { error } = this.props; - if (nextProps.failure && !equal(error, nextProps.error)) { + if (nextProps.failure && !dequal(error, nextProps.error)) { Alert.alert(I18n.t('Oops'), I18n.t('Login_error')); } } diff --git a/app/views/MessagesView/index.js b/app/views/MessagesView/index.js index 678d28f29f7..fc840b2d60e 100644 --- a/app/views/MessagesView/index.js +++ b/app/views/MessagesView/index.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FlatList, View, Text } from 'react-native'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; +import { dequal } from 'dequal'; import styles from './styles'; import Message from '../../containers/message'; @@ -57,7 +57,7 @@ class MessagesView extends React.Component { if (nextState.loading !== loading) { return true; } - if (!equal(nextState.messages, messages)) { + if (!dequal(nextState.messages, messages)) { return true; } if (fileLoading !== nextState.fileLoading) { diff --git a/app/views/ModalBlockView.js b/app/views/ModalBlockView.js index 2d72fa33980..85eee849258 100644 --- a/app/views/ModalBlockView.js +++ b/app/views/ModalBlockView.js @@ -1,7 +1,6 @@ import React from 'react'; import { StyleSheet, View } from 'react-native'; import PropTypes from 'prop-types'; -import isEqual from 'lodash/isEqual'; import { connect } from 'react-redux'; import { KeyboardAwareScrollView } from '@codler/react-native-keyboard-aware-scroll-view'; @@ -94,17 +93,6 @@ class ModalBlockView extends React.Component { EventEmitter.addEventListener(viewId, this.handleUpdate); } - shouldComponentUpdate(nextProps, nextState) { - if (!isEqual(nextProps, this.props)) { - return true; - } - if (!isEqual(nextState, this.state)) { - return true; - } - - return false; - } - componentDidUpdate(prevProps) { const { navigation, route } = this.props; const oldData = prevProps.route.params?.data ?? {}; diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index be47513bcff..fb5890ab7e4 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -4,7 +4,6 @@ import { View, StyleSheet, FlatList, Text } from 'react-native'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; import orderBy from 'lodash/orderBy'; import { Q } from '@nozbe/watermelondb'; @@ -77,21 +76,6 @@ class NewMessageView extends React.Component { }; } - shouldComponentUpdate(nextProps, nextState) { - const { search, chats } = this.state; - const { theme } = this.props; - if (nextProps.theme !== theme) { - return true; - } - if (!equal(nextState.search, search)) { - return true; - } - if (!equal(nextState.chats, chats)) { - return true; - } - return false; - } - componentWillUnmount() { if (this.querySubscription && this.querySubscription.unsubscribe) { this.querySubscription.unsubscribe(); diff --git a/app/views/ProfileView/index.js b/app/views/ProfileView/index.js index 053790bf1fc..7e97422df2e 100644 --- a/app/views/ProfileView/index.js +++ b/app/views/ProfileView/index.js @@ -6,7 +6,7 @@ import prompt from 'react-native-prompt-android'; import SHA256 from 'js-sha256'; import ImagePicker from 'react-native-image-crop-picker'; import RNPickerSelect from 'react-native-picker-select'; -import isEqual from 'lodash/isEqual'; +import { dequal } from 'dequal'; import omit from 'lodash/omit'; import Touch from '../../utils/touch'; @@ -91,21 +91,11 @@ class ProfileView extends React.Component { * it's resetting the avatar right after * select some image from gallery. */ - if (!isEqual(omit(user, ['status']), omit(nextProps.user, ['status']))) { + if (!dequal(omit(user, ['status']), omit(nextProps.user, ['status']))) { this.init(nextProps.user); } } - shouldComponentUpdate(nextProps, nextState) { - if (!isEqual(nextState, this.state)) { - return true; - } - if (!isEqual(nextProps, this.props)) { - return true; - } - return false; - } - setAvatar = (avatar) => { const { Accounts_AllowUserAvatarChange } = this.props; diff --git a/app/views/ReadReceiptView/index.js b/app/views/ReadReceiptView/index.js index b7456c77a9c..113e8936a28 100644 --- a/app/views/ReadReceiptView/index.js +++ b/app/views/ReadReceiptView/index.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FlatList, View, Text } from 'react-native'; -import equal from 'deep-equal'; +import { dequal } from 'dequal'; import moment from 'moment'; import { connect } from 'react-redux'; @@ -55,7 +55,7 @@ class ReadReceiptView extends React.Component { if (nextState.loading !== loading) { return true; } - if (!equal(nextState.receipts, receipts)) { + if (!dequal(nextState.receipts, receipts)) { return true; } return false; diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index bf4527e4a47..6b0cf68e9e0 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -4,15 +4,13 @@ import { Text, View, ScrollView, TouchableOpacity, Keyboard, Alert } from 'react-native'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; import { BLOCK_CONTEXT } from '@rocket.chat/ui-kit'; import ImagePicker from 'react-native-image-crop-picker'; -import isEqual from 'lodash/isEqual'; +import { dequal } from 'dequal'; import isEmpty from 'lodash/isEmpty'; import lt from 'semver/functions/lt'; import coerce from 'semver/functions/coerce'; - import database from '../../lib/database'; import { deleteRoom as deleteRoomAction } from '../../actions/room'; import KeyboardView from '../../presentation/KeyboardView'; @@ -88,16 +86,6 @@ class RoomInfoEditView extends React.Component { this.loadRoom(); } - shouldComponentUpdate(nextProps, nextState) { - if (!equal(nextState, this.state)) { - return true; - } - if (!equal(nextProps, this.props)) { - return true; - } - return false; - } - componentWillUnmount() { if (this.querySubscription && this.querySubscription.unsubscribe) { this.querySubscription.unsubscribe(); @@ -202,7 +190,7 @@ class RoomInfoEditView extends React.Component { && room.t === 'p' === t && room.ro === ro && room.reactWhenReadOnly === reactWhenReadOnly - && isEqual(room.sysMes, systemMessages) + && dequal(room.sysMes, systemMessages) && enableSysMes === (room.sysMes && room.sysMes.length > 0) && room.encrypted === encrypted && isEmpty(avatar) @@ -262,7 +250,7 @@ class RoomInfoEditView extends React.Component { params.reactWhenReadOnly = reactWhenReadOnly; } - if (!isEqual(room.sysMes, systemMessages)) { + if (!dequal(room.sysMes, systemMessages)) { params.systemMessages = systemMessages; } diff --git a/app/views/RoomView/Header/RightButtons.js b/app/views/RoomView/Header/RightButtons.js index 42ac86b1b12..0c5e6db9b66 100644 --- a/app/views/RoomView/Header/RightButtons.js +++ b/app/views/RoomView/Header/RightButtons.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import isEqual from 'react-fast-compare'; +import { dequal } from 'dequal'; import * as HeaderButton from '../../../containers/HeaderButton'; import database from '../../../lib/database'; @@ -59,13 +59,13 @@ class RightButtonsContainer extends Component { if (nextState.isFollowingThread !== isFollowingThread) { return true; } - if (!isEqual(nextState.tunread, tunread)) { + if (!dequal(nextState.tunread, tunread)) { return true; } - if (!isEqual(nextState.tunreadUser, tunreadUser)) { + if (!dequal(nextState.tunreadUser, tunreadUser)) { return true; } - if (!isEqual(nextState.tunreadGroup, tunreadGroup)) { + if (!dequal(nextState.tunreadGroup, tunreadGroup)) { return true; } return false; diff --git a/app/views/RoomView/Header/index.js b/app/views/RoomView/Header/index.js index 33663bbe40d..05a5f2e12c6 100644 --- a/app/views/RoomView/Header/index.js +++ b/app/views/RoomView/Header/index.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; +import { dequal } from 'dequal'; import Header from './Header'; import LeftButtons from './LeftButtons'; @@ -65,7 +65,7 @@ class RoomHeaderView extends Component { if (nextProps.height !== height) { return true; } - if (!equal(nextProps.usersTyping, usersTyping)) { + if (!dequal(nextProps.usersTyping, usersTyping)) { return true; } if (nextProps.goRoomActionsView !== goRoomActionsView) { diff --git a/app/views/RoomView/List.js b/app/views/RoomView/List.js index 4db965d97f2..41d424fa305 100644 --- a/app/views/RoomView/List.js +++ b/app/views/RoomView/List.js @@ -3,7 +3,7 @@ import { FlatList, RefreshControl } from 'react-native'; import PropTypes from 'prop-types'; import { Q } from '@nozbe/watermelondb'; import moment from 'moment'; -import isEqual from 'lodash/isEqual'; +import { dequal } from 'dequal'; import styles from './styles'; import database from '../../lib/database'; @@ -89,13 +89,13 @@ class List extends React.Component { if (refreshing !== nextState.refreshing) { return true; } - if (!isEqual(hideSystemMessages, nextProps.hideSystemMessages)) { + if (!dequal(hideSystemMessages, nextProps.hideSystemMessages)) { return true; } - if (!isEqual(tunread, nextProps.tunread)) { + if (!dequal(tunread, nextProps.tunread)) { return true; } - if (!isEqual(ignored, nextProps.ignored)) { + if (!dequal(ignored, nextProps.ignored)) { return true; } return false; @@ -103,7 +103,7 @@ class List extends React.Component { componentDidUpdate(prevProps) { const { hideSystemMessages } = this.props; - if (!isEqual(hideSystemMessages, prevProps.hideSystemMessages)) { + if (!dequal(hideSystemMessages, prevProps.hideSystemMessages)) { this.reload(); } } diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index cd8ebf9a8f3..2119fb4a0de 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -7,7 +7,7 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import moment from 'moment'; import * as Haptics from 'expo-haptics'; import { Q } from '@nozbe/watermelondb'; -import isEqual from 'lodash/isEqual'; +import { dequal } from 'dequal'; import { withSafeAreaInsets } from 'react-native-safe-area-context'; import Touch from '../../utils/touch'; @@ -205,10 +205,10 @@ class RoomView extends React.Component { if (stateUpdated) { return true; } - if (!isEqual(nextProps.insets, insets)) { + if (!dequal(nextProps.insets, insets)) { return true; } - return roomAttrsUpdate.some(key => !isEqual(nextState.roomUpdate[key], roomUpdate[key])); + return roomAttrsUpdate.some(key => !dequal(nextState.roomUpdate[key], roomUpdate[key])); } componentDidUpdate(prevProps, prevState) { @@ -229,7 +229,7 @@ class RoomView extends React.Component { } // If it's a livechat room if (this.t === 'l') { - if (!isEqual(prevState.roomUpdate.visitor, roomUpdate.visitor)) { + if (!dequal(prevState.roomUpdate.visitor, roomUpdate.visitor)) { this.setHeader(); } } diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 77e281afc2c..aeef8d337c9 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -4,7 +4,6 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import { connect, batch } from 'react-redux'; -import equal from 'deep-equal'; import { withSafeAreaInsets } from 'react-native-safe-area-context'; import { toggleServerDropdown as toggleServerDropdownAction } from '../../actions/rooms'; @@ -75,24 +74,6 @@ class ServerDropdown extends Component { } } - shouldComponentUpdate(nextProps, nextState) { - const { servers } = this.state; - const { closeServerDropdown, server, theme } = this.props; - if (nextProps.theme !== theme) { - return true; - } - if (nextProps.closeServerDropdown !== closeServerDropdown) { - return true; - } - if (nextProps.server !== server) { - return true; - } - if (!equal(nextState.servers, servers)) { - return true; - } - return false; - } - componentDidUpdate(prevProps) { const { closeServerDropdown } = this.props; if (prevProps.closeServerDropdown !== closeServerDropdown) { diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 6ec23f29c98..b71af2968d4 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -9,7 +9,7 @@ import { RefreshControl } from 'react-native'; import { connect } from 'react-redux'; -import isEqual from 'react-fast-compare'; +import { dequal } from 'dequal'; import Orientation from 'react-native-orientation-locker'; import { Q } from '@nozbe/watermelondb'; import { withSafeAreaInsets } from 'react-native-safe-area-context'; @@ -222,7 +222,7 @@ class RoomsListView extends React.Component { } // Compare changes only once - const chatsNotEqual = !isEqual(nextState.chatsUpdate, chatsUpdate); + const chatsNotEqual = !dequal(nextState.chatsUpdate, chatsUpdate); // If they aren't equal, set to update if focused if (chatsNotEqual) { @@ -253,13 +253,13 @@ class RoomsListView extends React.Component { if (nextProps.width !== width) { return true; } - if (!isEqual(nextState.search, search)) { + if (!dequal(nextState.search, search)) { return true; } - if (!isEqual(nextProps.rooms, rooms)) { + if (!dequal(nextProps.rooms, rooms)) { return true; } - if (!isEqual(nextProps.insets, insets)) { + if (!dequal(nextProps.insets, insets)) { return true; } // If it's focused and there are changes, update @@ -302,7 +302,7 @@ class RoomsListView extends React.Component { roomsRequest(); } // Update current item in case of another action triggers an update on rooms reducer - if (isMasterDetail && item?.rid !== rooms[0] && !isEqual(rooms, prevProps.rooms)) { + if (isMasterDetail && item?.rid !== rooms[0] && !dequal(rooms, prevProps.rooms)) { // eslint-disable-next-line react/no-did-update-set-state this.setState({ item: { rid: rooms[0] } }); } diff --git a/app/views/SearchMessagesView/index.js b/app/views/SearchMessagesView/index.js index ece0c4ecbc6..7fb5851658d 100644 --- a/app/views/SearchMessagesView/index.js +++ b/app/views/SearchMessagesView/index.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { View, FlatList, Text } from 'react-native'; import { Q } from '@nozbe/watermelondb'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; +import { dequal } from 'dequal'; import RCTextInput from '../../containers/TextInput'; import ActivityIndicator from '../../containers/ActivityIndicator'; @@ -69,7 +69,7 @@ class SearchMessagesView extends React.Component { if (nextState.searchText !== searchText) { return true; } - if (!equal(nextState.messages, messages)) { + if (!dequal(nextState.messages, messages)) { return true; } return false; diff --git a/app/views/SelectedUsersView.js b/app/views/SelectedUsersView.js index 666cee3d1d6..94d2f6b2d16 100644 --- a/app/views/SelectedUsersView.js +++ b/app/views/SelectedUsersView.js @@ -2,7 +2,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import { View, StyleSheet, FlatList } from 'react-native'; import { connect } from 'react-redux'; -import equal from 'deep-equal'; import orderBy from 'lodash/orderBy'; import { Q } from '@nozbe/watermelondb'; @@ -70,27 +69,6 @@ class SelectedUsersView extends React.Component { this.setHeader(props.route.params?.showButton); } - shouldComponentUpdate(nextProps, nextState) { - const { search, chats } = this.state; - const { users, loading, theme } = this.props; - if (nextProps.theme !== theme) { - return true; - } - if (nextProps.loading !== loading) { - return true; - } - if (!equal(nextProps.users, users)) { - return true; - } - if (!equal(nextState.search, search)) { - return true; - } - if (!equal(nextState.chats, chats)) { - return true; - } - return false; - } - componentDidUpdate(prevProps) { if (this.isGroupChat()) { const { users } = this.props; diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index aa8cf7f6da3..b6730876bdb 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -7,7 +7,7 @@ import ShareExtension from 'rn-extensions-share'; import * as FileSystem from 'expo-file-system'; import { connect } from 'react-redux'; import * as mime from 'react-native-mime-types'; -import isEqual from 'react-fast-compare'; +import { dequal } from 'dequal'; import { Q } from '@nozbe/watermelondb'; import database from '../../lib/database'; @@ -118,7 +118,7 @@ class ShareListView extends React.Component { const { searchResults } = this.state; if (nextState.searching) { - if (!isEqual(nextState.searchResults, searchResults)) { + if (!dequal(nextState.searchResults, searchResults)) { return true; } } diff --git a/app/views/ShareView/Thumbs.js b/app/views/ShareView/Thumbs.js index 0ce0d73733a..26bc54fb49e 100644 --- a/app/views/ShareView/Thumbs.js +++ b/app/views/ShareView/Thumbs.js @@ -179,6 +179,7 @@ const Thumbs = React.memo(({ /> ); } + return null; }); Thumbs.propTypes = { attachments: PropTypes.array, diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 03ea4572495..36648a79191 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -235,7 +235,9 @@ class ShareView extends Component { newSelected = attachments[selectedIndex - 1] || {}; } } - this.setState({ attachments: attachments.filter(att => att.path !== item.path), selected: newSelected ?? selected }); + this.setState({ attachments: attachments.filter(att => att.path !== item.path), selected: newSelected ?? selected }, () => { + this.messagebox?.current?.forceUpdate?.(); + }); } onChangeText = (text) => { diff --git a/app/views/SidebarView/index.js b/app/views/SidebarView/index.js index 6f3ed602395..a14b178cdb3 100644 --- a/app/views/SidebarView/index.js +++ b/app/views/SidebarView/index.js @@ -4,7 +4,7 @@ import { ScrollView, Text, View, TouchableWithoutFeedback } from 'react-native'; import { connect } from 'react-redux'; -import isEqual from 'react-fast-compare'; +import { dequal } from 'dequal'; import Avatar from '../../containers/Avatar'; import Status from '../../containers/Status/Status'; import { logEvent, events } from '../../utils/log'; @@ -73,7 +73,7 @@ class Sidebar extends Component { if (nextProps.theme !== theme) { return true; } - if (!isEqual(nextProps.user, user)) { + if (!dequal(nextProps.user, user)) { return true; } if (nextProps.isMasterDetail !== isMasterDetail) { @@ -85,16 +85,16 @@ class Sidebar extends Component { if (nextState.isAdmin !== isAdmin) { return true; } - if (!isEqual(nextProps.viewStatisticsPermission, viewStatisticsPermission)) { + if (!dequal(nextProps.viewStatisticsPermission, viewStatisticsPermission)) { return true; } - if (!isEqual(nextProps.viewRoomAdministrationPermission, viewRoomAdministrationPermission)) { + if (!dequal(nextProps.viewRoomAdministrationPermission, viewRoomAdministrationPermission)) { return true; } - if (!isEqual(nextProps.viewUserAdministrationPermission, viewUserAdministrationPermission)) { + if (!dequal(nextProps.viewUserAdministrationPermission, viewUserAdministrationPermission)) { return true; } - if (!isEqual(nextProps.viewPrivilegedSettingPermission, viewPrivilegedSettingPermission)) { + if (!dequal(nextProps.viewPrivilegedSettingPermission, viewPrivilegedSettingPermission)) { return true; } return false; diff --git a/package.json b/package.json index 71bfdbc1e93..727a0e8bb4f 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "bytebuffer": "^5.0.1", "commonmark": "git+https://github.com/RocketChat/commonmark.js.git", "commonmark-react-renderer": "git+https://github.com/RocketChat/commonmark-react-renderer.git", - "deep-equal": "2.0.3", + "dequal": "^2.0.2", "ejson": "2.2.0", "eslint-config-airbnb": "^18.1.0", "expo-apple-authentication": "^2.2.1", @@ -70,7 +70,6 @@ "pretty-bytes": "^5.3.0", "prop-types": "15.7.2", "react": "16.13.1", - "react-fast-compare": "^3.2.0", "react-native": "RocketChat/react-native#0.63.4", "react-native-animatable": "^1.3.3", "react-native-appearance": "0.3.4", @@ -130,6 +129,8 @@ }, "devDependencies": { "@babel/core": "^7.8.4", + "@babel/eslint-parser": "^7.13.4", + "@babel/eslint-plugin": "^7.13.0", "@babel/plugin-proposal-decorators": "^7.8.3", "@babel/runtime": "^7.8.4", "@storybook/addon-storyshots": "5.3.19", @@ -137,7 +138,6 @@ "@types/react-native": "^0.62.7", "axios": "^0.19.2", "babel-core": "^6.26.3", - "babel-eslint": "^9.0.0", "babel-jest": "^25.1.0", "babel-plugin-transform-remove-console": "^6.9.4", "babel-runtime": "^6.26.0", diff --git a/yarn.lock b/yarn.lock index c16c631859c..bc0d659518d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -76,6 +76,22 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/eslint-parser@^7.13.4": + version "7.13.4" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.4.tgz#dd9df3c70f44d2fb5a6519e8e10ca06c67dca43a" + integrity sha512-WfFEd89SzqmtYox8crTLJuEXyJolZY6Uu6iJpJmw4aMu50zHbYnxzxwuVkCt2cWygw+gLkUPTtAuox7eSnrL8g== + dependencies: + eslint-scope "5.1.0" + eslint-visitor-keys "^1.3.0" + semver "7.0.0" + +"@babel/eslint-plugin@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.13.0.tgz#e6d99efcd6b8551adf479e382a47218726179b1b" + integrity sha512-YGwCLc/u/uc3bU+q/fvgRQ62+TkxuyVvdmybK6ElzE49vODp+RnRe16eJzMM7EwvcRPQfQvcOSuGmzfcbZE2+w== + dependencies: + eslint-rule-composer "^0.3.0" + "@babel/generator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" @@ -3457,11 +3473,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" @@ -3649,13 +3660,6 @@ autoprefixer@^9.7.2: postcss "^7.0.30" postcss-value-parser "^4.1.0" -available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -3717,18 +3721,6 @@ babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: slash "^1.0.0" source-map "^0.5.7" -babel-eslint@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -5741,26 +5733,6 @@ deep-assign@^3.0.0: dependencies: is-obj "^1.0.0" -deep-equal@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" - integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== - dependencies: - es-abstract "^1.17.5" - es-get-iterator "^1.1.0" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.0.5" - isarray "^2.0.5" - object-is "^1.1.2" - object-keys "^1.1.1" - object.assign "^4.1.0" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - which-boxed-primitive "^1.0.1" - which-collection "^1.0.1" - which-typed-array "^1.1.2" - deep-equal@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -5871,6 +5843,11 @@ dequal@^1.0.0: resolved "https://registry.yarnpkg.com/dequal/-/dequal-1.0.0.tgz#41c6065e70de738541c82cdbedea5292277a017e" integrity sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw== +dequal@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" + integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -6309,7 +6286,7 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -es-get-iterator@^1.0.2, es-get-iterator@^1.1.0: +es-get-iterator@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== @@ -6484,10 +6461,15 @@ eslint-plugin-react@7.20.3: resolve "^1.17.0" string.prototype.matchall "^4.0.2" -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -6515,11 +6497,16 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint@6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" @@ -7344,11 +7331,6 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -8458,11 +8440,6 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" - integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== - is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -8477,11 +8454,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" - integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -8525,7 +8497,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: +is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -8665,11 +8637,6 @@ is-map@^2.0.1: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== -is-number-object@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -8767,16 +8734,6 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.1" -is-typed-array@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" - integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== - dependencies: - available-typed-arrays "^1.0.0" - es-abstract "^1.17.4" - foreach "^2.0.5" - has-symbols "^1.0.1" - is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -8787,16 +8744,6 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -11522,7 +11469,7 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-is@^1.0.1, object-is@^1.1.2: +object-is@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== @@ -12786,11 +12733,6 @@ react-fast-compare@^3.0.1: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.1.1.tgz#0becf31e3812fa70dc231e259f40d892d4767900" integrity sha512-SCsAORWK59BvauR2L1BTdjQbJcSGJJz03U0awektk2hshLKrITDDFTlgGCqIZpTDlPC/NFlZee6xTMzXPVLiHw== -react-fast-compare@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - react-focus-lock@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.3.1.tgz#9d5d85899773609c7eefa4fc54fff6a0f5f2fc47" @@ -15993,44 +15935,11 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-boxed-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" - integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== - dependencies: - is-bigint "^1.0.0" - is-boolean-object "^1.0.0" - is-number-object "^1.0.3" - is-string "^1.0.4" - is-symbol "^1.0.2" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" - integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== - dependencies: - available-typed-arrays "^1.0.2" - es-abstract "^1.17.5" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - which@1.3.1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From a1c9fdfdb92d246a491c5088f4409e6ca5d730bd Mon Sep 17 00:00:00 2001 From: ankar84 Date: Fri, 26 Feb 2021 23:07:57 +0700 Subject: [PATCH 054/177] [I18N] Add missing Russian strings (#2946) * [i18n] Add missing Russian strings * Couple fixes * Fix Direct_message Translate Direct_message as already has been translated Co-authored-by: Diego Mello --- app/i18n/locales/ru.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/i18n/locales/ru.js b/app/i18n/locales/ru.js index 4d37232bf42..fcbcd5e4702 100644 --- a/app/i18n/locales/ru.js +++ b/app/i18n/locales/ru.js @@ -678,5 +678,31 @@ export default { No_threads: 'Тредов нет', No_threads_following: 'Нет тредов, за которыми вы следите', No_threads_unread: 'Непрочитанных тредов нет', - Messagebox_Send_to_channel: 'Отправить в чат' + Messagebox_Send_to_channel: 'Отправить в чат', + Set_as_leader: 'Назначить лидером', + Set_as_moderator: 'Назначить модератором', + Set_as_owner: 'Назначить владельцем', + Remove_as_leader: 'Удалить из лидеров', + Remove_as_moderator: 'Удалить из модераторов', + Remove_as_owner: 'Удалить из владельцев', + Remove_from_room: 'Удалить из чата', + Ignore: 'Игнориновать', + Unignore: 'Прекратить игнорировать', + User_has_been_ignored: 'Пользователь теперь игнорируется', + User_has_been_unignored: 'Пользователь больше не игнорируется', + User_has_been_removed_from_s: 'Пользователь удален из {{s}}', + User__username__is_now_a_leader_of__room_name_: 'Пользователь {{username}} больше не лидер в чате {{room_name}}', + User__username__is_now_a_moderator_of__room_name_: 'Пользователь {{username}} больше не модератор в чате {{room_name}}', + User__username__is_now_a_owner_of__room_name_: 'Пользователь {{username}} больше не владелец в чате {{room_name}}', + User__username__removed_from__room_name__leaders: 'Пользователь {{username}} удален из {{room_name}} лидеров', + User__username__removed_from__room_name__moderators: 'Пользователь {{username}} удален из {{room_name}} модераторов', + User__username__removed_from__room_name__owners: 'Пользователь {{username}} удален из {{room_name}} владельцев', + The_user_will_be_removed_from_s: 'Пользователь будет удален из {{s}}', + Yes_remove_user: 'Да, удалить пользователя!', + Direct_message: 'Личное сообщение', + Message_Ignored: 'Сообщение игнорируется. Тапните по нему, чтобы отобразить его.', + Enter_workspace_URL: 'Введите URL вашего рабочего пространства', + Workspace_URL_Example: 'Например, your-company.rocket.chat', + This_room_encryption_has_been_enabled_by__username_: 'Шифрование для этого чата включено {{username}}', + This_room_encryption_has_been_disabled_by__username_: 'Шифрование для этого чата выключено {{username}}' }; From 98890df773a624e75cc136f86afb860c5d0aef3e Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Sat, 27 Feb 2021 00:25:51 +0800 Subject: [PATCH 055/177] [CHORE] Use shortcut syntax for get collections (#2932) Co-authored-by: Diego Mello --- app/containers/Avatar/index.js | 4 ++-- app/containers/EmojiPicker/index.js | 4 ++-- app/containers/MessageActions/Header.js | 2 +- app/containers/MessageActions/index.js | 2 +- app/containers/MessageBox/index.js | 12 ++++++------ app/containers/MessageErrorActions.js | 4 ++-- app/lib/encryption/encryption.js | 12 ++++++------ app/lib/encryption/room.js | 2 +- app/lib/methods/canOpenRoom.js | 2 +- app/lib/methods/enterpriseModules.js | 4 ++-- app/lib/methods/getCustomEmojis.js | 6 +++--- app/lib/methods/getPermissions.js | 4 ++-- app/lib/methods/getRoles.js | 2 +- app/lib/methods/getSettings.js | 6 +++--- app/lib/methods/getSlashCommands.js | 2 +- app/lib/methods/getUsersPresence.js | 2 +- .../methods/helpers/findSubscriptionsRooms.js | 2 +- app/lib/methods/loadMissedMessages.js | 2 +- app/lib/methods/loadThreadMessages.js | 2 +- app/lib/methods/logout.js | 4 ++-- app/lib/methods/readMessages.js | 2 +- app/lib/methods/sendFileMessage.js | 2 +- app/lib/methods/sendMessage.js | 12 ++++++------ app/lib/methods/subscriptions/room.js | 12 ++++++------ app/lib/methods/subscriptions/rooms.js | 10 +++++----- app/lib/methods/updateMessages.js | 8 ++++---- app/lib/rocketchat.js | 18 +++++++++--------- app/sagas/createChannel.js | 2 +- app/sagas/createDiscussion.js | 2 +- app/sagas/deepLinking.js | 2 +- app/sagas/encryption.js | 2 +- app/sagas/init.js | 2 +- app/sagas/login.js | 6 +++--- app/sagas/messages.js | 2 +- app/sagas/rooms.js | 8 ++++---- app/sagas/selectServer.js | 6 +++--- app/utils/localAuthentication.js | 4 ++-- app/views/CreateDiscussionView/SelectUsers.js | 2 +- app/views/LanguageView/index.js | 2 +- app/views/NewServerView/index.js | 2 +- app/views/RoomInfoEditView/index.js | 2 +- app/views/RoomInfoView/index.js | 2 +- app/views/RoomMembersView/index.js | 2 +- app/views/RoomView/Header/RightButtons.js | 4 ++-- app/views/RoomView/index.js | 10 +++++----- app/views/RoomsListView/index.js | 6 +++--- app/views/ScreenLockConfigView.js | 2 +- app/views/SearchMessagesView/index.js | 2 +- app/views/SelectServerView.js | 2 +- app/views/SettingsView/index.js | 2 +- app/views/ShareListView/index.js | 4 ++-- app/views/ShareView/index.js | 2 +- app/views/ThreadMessagesView/index.js | 2 +- 53 files changed, 114 insertions(+), 114 deletions(-) diff --git a/app/containers/Avatar/index.js b/app/containers/Avatar/index.js index 8c4ca0ad407..4d7c6d7a509 100644 --- a/app/containers/Avatar/index.js +++ b/app/containers/Avatar/index.js @@ -52,8 +52,8 @@ class AvatarContainer extends React.Component { init = async() => { const db = database.active; - const usersCollection = db.collections.get('users'); - const subsCollection = db.collections.get('subscriptions'); + const usersCollection = db.get('users'); + const subsCollection = db.get('subscriptions'); let record; try { diff --git a/app/containers/EmojiPicker/index.js b/app/containers/EmojiPicker/index.js index 64d941c6fe6..89446c067a8 100644 --- a/app/containers/EmojiPicker/index.js +++ b/app/containers/EmojiPicker/index.js @@ -95,7 +95,7 @@ class EmojiPicker extends Component { // eslint-disable-next-line react/sort-comp _addFrequentlyUsed = protectedFunction(async(emoji) => { const db = database.active; - const freqEmojiCollection = db.collections.get('frequently_used_emojis'); + const freqEmojiCollection = db.get('frequently_used_emojis'); let freqEmojiRecord; try { freqEmojiRecord = await freqEmojiCollection.find(emoji.content); @@ -120,7 +120,7 @@ class EmojiPicker extends Component { updateFrequentlyUsed = async() => { const db = database.active; - const frequentlyUsedRecords = await db.collections.get('frequently_used_emojis').query().fetch(); + const frequentlyUsedRecords = await db.get('frequently_used_emojis').query().fetch(); let frequentlyUsed = orderBy(frequentlyUsedRecords, ['count'], ['desc']); frequentlyUsed = frequentlyUsed.map((item) => { if (item.isCustom) { diff --git a/app/containers/MessageActions/Header.js b/app/containers/MessageActions/Header.js index ab011e445d6..78aa9ae3d56 100644 --- a/app/containers/MessageActions/Header.js +++ b/app/containers/MessageActions/Header.js @@ -96,7 +96,7 @@ const Header = React.memo(({ const setEmojis = async() => { try { const db = database.active; - const freqEmojiCollection = db.collections.get('frequently_used_emojis'); + const freqEmojiCollection = db.get('frequently_used_emojis'); let freqEmojis = await freqEmojiCollection.query().fetch(); const isLandscape = width > height; diff --git a/app/containers/MessageActions/index.js b/app/containers/MessageActions/index.js index d5b998629ad..cf0ba691887 100644 --- a/app/containers/MessageActions/index.js +++ b/app/containers/MessageActions/index.js @@ -145,7 +145,7 @@ const MessageActions = React.memo(forwardRef(({ const db = database.active; const result = await RocketChat.markAsUnread({ messageId }); if (result.success) { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); const subRecord = await subCollection.find(rid); await db.action(async() => { try { diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index d509004bc3c..2a318a71137 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -190,8 +190,8 @@ class MessageBox extends Component { } = this.props; let msg; try { - const threadsCollection = db.collections.get('threads'); - const subsCollection = db.collections.get('subscriptions'); + const threadsCollection = db.get('threads'); + const subsCollection = db.get('subscriptions'); try { this.room = await subsCollection.find(rid); } catch (error) { @@ -364,7 +364,7 @@ class MessageBox extends Component { const slashCommand = text.match(/^\/([a-z0-9._-]+) (.+)/im); if (slashCommand) { const [, name, params] = slashCommand; - const commandsCollection = db.collections.get('slash_commands'); + const commandsCollection = db.get('slash_commands'); try { const command = await commandsCollection.find(name); if (command.providesPreview) { @@ -505,7 +505,7 @@ class MessageBox extends Component { getEmojis = debounce(async(keyword) => { const db = database.active; if (keyword) { - const customEmojisCollection = db.collections.get('custom_emojis'); + const customEmojisCollection = db.get('custom_emojis'); const likeString = sanitizeLikeString(keyword); let customEmojis = await customEmojisCollection.query( Q.where('name', Q.like(`${ likeString }%`)) @@ -519,7 +519,7 @@ class MessageBox extends Component { getSlashCommands = debounce(async(keyword) => { const db = database.active; - const commandsCollection = db.collections.get('slash_commands'); + const commandsCollection = db.get('slash_commands'); const likeString = sanitizeLikeString(keyword); const commands = await commandsCollection.query( Q.where('id', Q.like(`${ likeString }%`)) @@ -751,7 +751,7 @@ class MessageBox extends Component { // Slash command if (message[0] === MENTIONS_TRACKING_TYPE_COMMANDS) { const db = database.active; - const commandsCollection = db.collections.get('slash_commands'); + const commandsCollection = db.get('slash_commands'); const command = message.replace(/ .*/, '').slice(1); const likeString = sanitizeLikeString(command); const slashCommand = await commandsCollection.query( diff --git a/app/containers/MessageErrorActions.js b/app/containers/MessageErrorActions.js index c9975b0e336..e84a990483c 100644 --- a/app/containers/MessageErrorActions.js +++ b/app/containers/MessageErrorActions.js @@ -19,8 +19,8 @@ const MessageErrorActions = forwardRef(({ tmid }, ref) => { try { const db = database.active; const deleteBatch = []; - const msgCollection = db.collections.get('messages'); - const threadCollection = db.collections.get('threads'); + const msgCollection = db.get('messages'); + const threadCollection = db.get('threads'); // Delete the object (it can be Message or ThreadMessage instance) deleteBatch.push(message.prepareDestroyPermanently()); diff --git a/app/lib/encryption/encryption.js b/app/lib/encryption/encryption.js index 972f2c5889c..e4a7f2c145b 100644 --- a/app/lib/encryption/encryption.js +++ b/app/lib/encryption/encryption.js @@ -229,9 +229,9 @@ class Encryption { decryptPendingMessages = async(roomId) => { const db = database.active; - const messagesCollection = db.collections.get('messages'); - const threadsCollection = db.collections.get('threads'); - const threadMessagesCollection = db.collections.get('thread_messages'); + const messagesCollection = db.get('messages'); + const threadsCollection = db.get('threads'); + const threadMessagesCollection = db.get('thread_messages'); // e2e status is null or 'pending' and message type is 'e2e' const whereClause = [ @@ -286,7 +286,7 @@ class Encryption { // after initialize the encryption client decryptPendingSubscriptions = async() => { const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); try { // Find all rooms that can have a lastMessage encrypted // If we select only encrypted rooms we can miss some room that changed their encrypted status @@ -347,7 +347,7 @@ class Encryption { const { rid } = subscription; const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); let subRecord; try { @@ -400,7 +400,7 @@ class Encryption { encryptMessage = async(message) => { const { rid } = message; const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); try { // Find the subscription diff --git a/app/lib/encryption/room.js b/app/lib/encryption/room.js index 835bd9ab5f8..0aa1b932e6c 100644 --- a/app/lib/encryption/room.js +++ b/app/lib/encryption/room.js @@ -49,7 +49,7 @@ export default class EncryptionRoom { } const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); try { // Find the subscription const subscription = await subCollection.find(this.roomId); diff --git a/app/lib/methods/canOpenRoom.js b/app/lib/methods/canOpenRoom.js index 343d4944564..c233899b864 100644 --- a/app/lib/methods/canOpenRoom.js +++ b/app/lib/methods/canOpenRoom.js @@ -57,7 +57,7 @@ async function open({ type, rid, name }) { export default async function canOpenRoom({ rid, path, isCall }) { try { const db = database.active; - const subsCollection = db.collections.get('subscriptions'); + const subsCollection = db.get('subscriptions'); if (isCall && !rid) { // Extract rid from a Jitsi URL diff --git a/app/lib/methods/enterpriseModules.js b/app/lib/methods/enterpriseModules.js index 5cb68e7a993..35c6672d260 100644 --- a/app/lib/methods/enterpriseModules.js +++ b/app/lib/methods/enterpriseModules.js @@ -13,7 +13,7 @@ export async function setEnterpriseModules() { try { const { server: serverId } = reduxStore.getState().server; const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); let server; try { server = await serversCollection.find(serverId); @@ -39,7 +39,7 @@ export function getEnterpriseModules() { const enterpriseModules = await this.methodCallWrapper('license:getModules'); if (enterpriseModules) { const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); const server = await serversCollection.find(serverId); await serversDB.action(async() => { await server.update((s) => { diff --git a/app/lib/methods/getCustomEmojis.js b/app/lib/methods/getCustomEmojis.js index 1df285d84b2..31108fb625e 100644 --- a/app/lib/methods/getCustomEmojis.js +++ b/app/lib/methods/getCustomEmojis.js @@ -20,7 +20,7 @@ const updateEmojis = async({ update = [], remove = [], allRecords }) => { return; } const db = database.active; - const emojisCollection = db.collections.get('custom_emojis'); + const emojisCollection = db.get('custom_emojis'); let emojisToCreate = []; let emojisToUpdate = []; let emojisToDelete = []; @@ -62,7 +62,7 @@ const updateEmojis = async({ update = [], remove = [], allRecords }) => { export async function setCustomEmojis() { const db = database.active; - const emojisCollection = db.collections.get('custom_emojis'); + const emojisCollection = db.get('custom_emojis'); const allEmojis = await emojisCollection.query().fetch(); const parsed = allEmojis.reduce((ret, item) => { ret[item.name] = { @@ -85,7 +85,7 @@ export function getCustomEmojis() { try { const serverVersion = reduxStore.getState().server.version; const db = database.active; - const emojisCollection = db.collections.get('custom_emojis'); + const emojisCollection = db.get('custom_emojis'); const allRecords = await emojisCollection.query().fetch(); const updatedSince = await getUpdatedSince(allRecords); diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 33333cad094..15ee221b849 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -69,7 +69,7 @@ const updatePermissions = async({ update = [], remove = [], allRecords }) => { return; } const db = database.active; - const permissionsCollection = db.collections.get('permissions'); + const permissionsCollection = db.get('permissions'); // filter permissions let permissionsToCreate = []; @@ -119,7 +119,7 @@ export function getPermissions() { try { const serverVersion = reduxStore.getState().server.version; const db = database.active; - const permissionsCollection = db.collections.get('permissions'); + const permissionsCollection = db.get('permissions'); const allRecords = await permissionsCollection.query().fetch(); // if server version is lower than 0.73.0, fetches from old api diff --git a/app/lib/methods/getRoles.js b/app/lib/methods/getRoles.js index 72f01bc6da6..df22d382be4 100644 --- a/app/lib/methods/getRoles.js +++ b/app/lib/methods/getRoles.js @@ -19,7 +19,7 @@ export default function() { if (roles && roles.length) { await db.action(async() => { - const rolesCollections = db.collections.get('roles'); + const rolesCollections = db.get('roles'); const allRolesRecords = await rolesCollections.query().fetch(); // filter roles diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index f433f4a9a1d..6935631ef93 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -44,7 +44,7 @@ const loginSettings = [ const serverInfoUpdate = async(serverInfo, iconSetting) => { const serversDB = database.servers; const serverId = reduxStore.getState().server.server; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); const server = await serversCollection.find(serverId); let info = serverInfo.reduce((allSettings, setting) => { @@ -118,7 +118,7 @@ export async function getLoginSettings({ server }) { export async function setSettings() { const db = database.active; - const settingsCollection = db.collections.get('settings'); + const settingsCollection = db.get('settings'); const settingsRecords = await settingsCollection.query().fetch(); const parsed = Object.values(settingsRecords).map(item => ({ _id: item.id, @@ -157,7 +157,7 @@ export default async function() { } await db.action(async() => { - const settingsCollection = db.collections.get('settings'); + const settingsCollection = db.get('settings'); const allSettingsRecords = await settingsCollection .query(Q.where('id', Q.oneOf(filteredSettingsIds))) .fetch(); diff --git a/app/lib/methods/getSlashCommands.js b/app/lib/methods/getSlashCommands.js index 33c75f1c02e..c37e077f499 100644 --- a/app/lib/methods/getSlashCommands.js +++ b/app/lib/methods/getSlashCommands.js @@ -20,7 +20,7 @@ export default function() { if (commands && commands.length) { await db.action(async() => { - const slashCommandsCollection = db.collections.get('slash_commands'); + const slashCommandsCollection = db.get('slash_commands'); const allSlashCommandsRecords = await slashCommandsCollection.query().fetch(); // filter slash commands diff --git a/app/lib/methods/getUsersPresence.js b/app/lib/methods/getUsersPresence.js index 68d9b1eaa01..83e5ce815c7 100644 --- a/app/lib/methods/getUsersPresence.js +++ b/app/lib/methods/getUsersPresence.js @@ -72,7 +72,7 @@ export default async function getUsersPresence() { ids = []; const db = database.active; - const userCollection = db.collections.get('users'); + const userCollection = db.get('users'); users.forEach(async(user) => { try { const userRecord = await userCollection.find(user._id); diff --git a/app/lib/methods/helpers/findSubscriptionsRooms.js b/app/lib/methods/helpers/findSubscriptionsRooms.js index f1714932db7..a64a8894061 100644 --- a/app/lib/methods/helpers/findSubscriptionsRooms.js +++ b/app/lib/methods/helpers/findSubscriptionsRooms.js @@ -5,7 +5,7 @@ import database from '../../database'; export default async(subscriptions = [], rooms = []) => { try { const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); const roomIds = rooms.filter(r => !subscriptions.find(s => s.rid === r._id)).map(r => r._id); let existingSubs = await subCollection.query(Q.where('rid', Q.oneOf(roomIds))).fetch(); diff --git a/app/lib/methods/loadMissedMessages.js b/app/lib/methods/loadMissedMessages.js index 82c2e1bda69..d1acaf0b4a3 100644 --- a/app/lib/methods/loadMissedMessages.js +++ b/app/lib/methods/loadMissedMessages.js @@ -5,7 +5,7 @@ import updateMessages from './updateMessages'; const getLastUpdate = async(rid) => { try { const db = database.active; - const subsCollection = db.collections.get('subscriptions'); + const subsCollection = db.get('subscriptions'); const sub = await subsCollection.find(rid); return sub.lastOpen.toISOString(); } catch (e) { diff --git a/app/lib/methods/loadThreadMessages.js b/app/lib/methods/loadThreadMessages.js index a3cda71beab..de6f244c61c 100644 --- a/app/lib/methods/loadThreadMessages.js +++ b/app/lib/methods/loadThreadMessages.js @@ -33,7 +33,7 @@ export default function loadThreadMessages({ tmid, rid, offset = 0 }) { data = data.map(m => buildMessage(m)); data = await Encryption.decryptMessages(data); const db = database.active; - const threadMessagesCollection = db.collections.get('thread_messages'); + const threadMessagesCollection = db.get('thread_messages'); const allThreadMessagesRecords = await threadMessagesCollection.query(Q.where('rid', tmid)).fetch(); let threadMessagesToCreate = data.filter(i1 => !allThreadMessagesRecords.find(i2 => i1._id === i2.id)); let threadMessagesToUpdate = allThreadMessagesRecords.filter(i1 => data.find(i2 => i1.id === i2._id)); diff --git a/app/lib/methods/logout.js b/app/lib/methods/logout.js index 0a1923de0fc..bb6950835a3 100644 --- a/app/lib/methods/logout.js +++ b/app/lib/methods/logout.js @@ -42,12 +42,12 @@ async function removeServerData({ server }) { const serversDB = database.servers; const userId = await UserPreferences.getStringAsync(`${ RocketChat.TOKEN_KEY }-${ server }`); - const usersCollection = serversDB.collections.get('users'); + const usersCollection = serversDB.get('users'); if (userId) { const userRecord = await usersCollection.find(userId); batch.push(userRecord.prepareDestroyPermanently()); } - const serverCollection = serversDB.collections.get('servers'); + const serverCollection = serversDB.get('servers'); const serverRecord = await serverCollection.find(server); batch.push(serverRecord.prepareDestroyPermanently()); diff --git a/app/lib/methods/readMessages.js b/app/lib/methods/readMessages.js index e813a68b413..13761264862 100644 --- a/app/lib/methods/readMessages.js +++ b/app/lib/methods/readMessages.js @@ -4,7 +4,7 @@ import log from '../../utils/log'; export default async function readMessages(rid, ls, updateLastOpen = false) { try { const db = database.active; - const subscription = await db.collections.get('subscriptions').find(rid); + const subscription = await db.get('subscriptions').find(rid); // RC 0.61.0 await this.sdk.post('subscriptions.read', { rid }); diff --git a/app/lib/methods/sendFileMessage.js b/app/lib/methods/sendFileMessage.js index 923da17235e..435e377cba6 100644 --- a/app/lib/methods/sendFileMessage.js +++ b/app/lib/methods/sendFileMessage.js @@ -40,7 +40,7 @@ export function sendFileMessage(rid, fileInfo, tmid, server, user) { fileInfo.rid = rid; const db = database.active; - const uploadsCollection = db.collections.get('uploads'); + const uploadsCollection = db.get('uploads'); let uploadRecord; try { uploadRecord = await uploadsCollection.find(fileInfo.path); diff --git a/app/lib/methods/sendMessage.js b/app/lib/methods/sendMessage.js index ef22cd8047e..9b1bc6d1016 100644 --- a/app/lib/methods/sendMessage.js +++ b/app/lib/methods/sendMessage.js @@ -9,8 +9,8 @@ import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../encryption/constants'; const changeMessageStatus = async(id, tmid, status, message) => { const db = database.active; - const msgCollection = db.collections.get('messages'); - const threadMessagesCollection = db.collections.get('thread_messages'); + const msgCollection = db.get('messages'); + const threadMessagesCollection = db.get('thread_messages'); const successBatch = []; const messageRecord = await msgCollection.find(id); successBatch.push( @@ -89,10 +89,10 @@ export async function resendMessage(message, tmid) { export default async function(rid, msg, tmid, user, tshow) { try { const db = database.active; - const subsCollection = db.collections.get('subscriptions'); - const msgCollection = db.collections.get('messages'); - const threadCollection = db.collections.get('threads'); - const threadMessagesCollection = db.collections.get('thread_messages'); + const subsCollection = db.get('subscriptions'); + const msgCollection = db.get('messages'); + const threadCollection = db.get('threads'); + const threadMessagesCollection = db.get('thread_messages'); const messageId = random(17); const batch = []; diff --git a/app/lib/methods/subscriptions/room.js b/app/lib/methods/subscriptions/room.js index a6e4e34ad6d..885c2469ab6 100644 --- a/app/lib/methods/subscriptions/room.js +++ b/app/lib/methods/subscriptions/room.js @@ -109,9 +109,9 @@ export default class RoomSubscription { try { const { _id } = ddpMessage.fields.args[0]; const db = database.active; - const msgCollection = db.collections.get('messages'); - const threadsCollection = db.collections.get('threads'); - const threadMessagesCollection = db.collections.get('thread_messages'); + const msgCollection = db.get('messages'); + const threadsCollection = db.get('threads'); + const threadMessagesCollection = db.get('thread_messages'); let deleteMessage; let deleteThread; let deleteThreadMessage; @@ -163,9 +163,9 @@ export default class RoomSubscription { } const db = database.active; - const msgCollection = db.collections.get('messages'); - const threadsCollection = db.collections.get('threads'); - const threadMessagesCollection = db.collections.get('thread_messages'); + const msgCollection = db.get('messages'); + const threadsCollection = db.get('threads'); + const threadMessagesCollection = db.get('thread_messages'); // Decrypt the message if necessary message = await Encryption.decryptMessage(message); diff --git a/app/lib/methods/subscriptions/rooms.js b/app/lib/methods/subscriptions/rooms.js index 42918da1342..f4b5c7b1d7d 100644 --- a/app/lib/methods/subscriptions/rooms.js +++ b/app/lib/methods/subscriptions/rooms.js @@ -32,8 +32,8 @@ const WINDOW_TIME = 500; const createOrUpdateSubscription = async(subscription, room) => { try { const db = database.active; - const subCollection = db.collections.get('subscriptions'); - const roomsCollection = db.collections.get('rooms'); + const subCollection = db.get('subscriptions'); + const roomsCollection = db.get('rooms'); if (!subscription) { try { @@ -185,7 +185,7 @@ const createOrUpdateSubscription = async(subscription, room) => { const { rooms } = store.getState().room; if (tmp.lastMessage && !rooms.includes(tmp.rid)) { const lastMessage = buildMessage(tmp.lastMessage); - const messagesCollection = db.collections.get('messages'); + const messagesCollection = db.get('messages'); let messageRecord; try { messageRecord = await messagesCollection.find(lastMessage._id); @@ -281,7 +281,7 @@ export default function subscribeRooms() { if (/subscriptions/.test(ev)) { if (type === 'removed') { try { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); const sub = await subCollection.find(data.rid); const messages = await sub.messages.fetch(); const threads = await sub.threads.fetch(); @@ -335,7 +335,7 @@ export default function subscribeRooms() { } }; try { - const msgCollection = db.collections.get('messages'); + const msgCollection = db.get('messages'); await db.action(async() => { await msgCollection.create(protectedFunction((m) => { m._raw = sanitizedRaw({ id: message._id }, msgCollection.schema); diff --git a/app/lib/methods/updateMessages.js b/app/lib/methods/updateMessages.js index 0dc63e9ba0e..5f0db0f66ec 100644 --- a/app/lib/methods/updateMessages.js +++ b/app/lib/methods/updateMessages.js @@ -16,7 +16,7 @@ export default function updateMessages({ rid, update = [], remove = [] }) { return db.action(async() => { // Decrypt these messages update = await Encryption.decryptMessages(update); - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); let sub; try { sub = await subCollection.find(rid); @@ -26,9 +26,9 @@ export default function updateMessages({ rid, update = [], remove = [] }) { } const messagesIds = [...update.map(m => m._id), ...remove.map(m => m._id)]; - const msgCollection = db.collections.get('messages'); - const threadCollection = db.collections.get('threads'); - const threadMessagesCollection = db.collections.get('thread_messages'); + const msgCollection = db.get('messages'); + const threadCollection = db.get('threads'); + const threadMessagesCollection = db.get('thread_messages'); const allMessagesRecords = await msgCollection .query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds))) .fetch(); diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index b9f49ab203f..4d1b2fbb5a6 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -275,7 +275,7 @@ const RocketChat = { } else if (/updateAvatar/.test(eventName)) { const { username, etag } = ddpMessage.fields.args[0]; const db = database.active; - const userCollection = db.collections.get('users'); + const userCollection = db.get('users'); try { const [userRecord] = await userCollection.query(Q.where('username', Q.eq(username))).fetch(); await db.action(async() => { @@ -289,7 +289,7 @@ const RocketChat = { } else if (/Users:NameChanged/.test(eventName)) { const userNameChanged = ddpMessage.fields.args[0]; const db = database.active; - const userCollection = db.collections.get('users'); + const userCollection = db.get('users'); try { const userRecord = await userCollection.find(userNameChanged._id); await db.action(async() => { @@ -333,7 +333,7 @@ const RocketChat = { // set Server const currentServer = { server }; const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); try { const serverRecord = await serversCollection.find(server); currentServer.version = serverRecord.version; @@ -348,7 +348,7 @@ const RocketChat = { // set Settings const settings = ['Accounts_AvatarBlockUnauthenticatedAccess']; const db = database.active; - const settingsCollection = db.collections.get('settings'); + const settingsCollection = db.get('settings'); const settingsRecords = await settingsCollection.query(Q.where('id', Q.oneOf(settings))).fetch(); const parsed = Object.values(settingsRecords).map(item => ({ _id: item.id, @@ -362,7 +362,7 @@ const RocketChat = { // set User info const userId = await UserPreferences.getStringAsync(`${ RocketChat.TOKEN_KEY }-${ server }`); - const userCollections = serversDB.collections.get('users'); + const userCollections = serversDB.get('users'); let user = null; if (userId) { const userRecord = await userCollections.find(userId); @@ -544,7 +544,7 @@ const RocketChat = { try { const serversDB = database.servers; await serversDB.action(async() => { - const serverCollection = serversDB.collections.get('servers'); + const serverCollection = serversDB.get('servers'); const serverRecord = await serverCollection.find(server); await serverRecord.update((s) => { s.roomsUpdatedAt = null; @@ -604,7 +604,7 @@ const RocketChat = { } const db = database.active; const likeString = sanitizeLikeString(searchText); - let data = await db.collections.get('subscriptions').query( + let data = await db.get('subscriptions').query( Q.or( Q.where('name', Q.like(`%${ likeString }%`)), Q.where('fname', Q.like(`%${ likeString }%`)) @@ -792,7 +792,7 @@ const RocketChat = { async getRoom(rid) { try { const db = database.active; - const room = await db.collections.get('subscriptions').find(rid); + const room = await db.get('subscriptions').find(rid); return Promise.resolve(room); } catch (error) { return Promise.reject(new Error('Room not found')); @@ -1174,7 +1174,7 @@ const RocketChat = { */ async hasPermission(permissions, rid) { const db = database.active; - const subsCollection = db.collections.get('subscriptions'); + const subsCollection = db.get('subscriptions'); let roomRoles = []; try { // get the room from database diff --git a/app/sagas/createChannel.js b/app/sagas/createChannel.js index 6bcedad6316..613aedec2cb 100644 --- a/app/sagas/createChannel.js +++ b/app/sagas/createChannel.js @@ -53,7 +53,7 @@ const handleRequest = function* handleRequest({ data }) { try { const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); yield db.action(async() => { await subCollection.create((s) => { s._raw = sanitizedRaw({ id: sub.rid }, subCollection.schema); diff --git a/app/sagas/createDiscussion.js b/app/sagas/createDiscussion.js index 732268779ed..746ab15839e 100644 --- a/app/sagas/createDiscussion.js +++ b/app/sagas/createDiscussion.js @@ -27,7 +27,7 @@ const handleRequest = function* handleRequest({ data }) { try { const db = database.active; - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); yield db.action(async() => { await subCollection.create((s) => { s._raw = sanitizedRaw({ id: sub.rid }, subCollection.schema); diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index e0961c7cf12..ff10bd76bde 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -72,7 +72,7 @@ const fallbackNavigation = function* fallbackNavigation() { const handleOpen = function* handleOpen({ params }) { const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); let { host } = params; if (params.isCall && !host) { diff --git a/app/sagas/encryption.js b/app/sagas/encryption.js index f28c7783419..395923a431e 100644 --- a/app/sagas/encryption.js +++ b/app/sagas/encryption.js @@ -30,7 +30,7 @@ const handleEncryptionInit = function* handleEncryptionInit() { // Fetch server info to check E2E enable const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); let serverInfo; try { serverInfo = yield serversCollection.find(server); diff --git a/app/sagas/init.js b/app/sagas/init.js index 5c0cb7286a6..03a6c5a78a6 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -38,7 +38,7 @@ const restore = function* restore() { yield put(appStart({ root: ROOT_OUTSIDE })); } else { const serversDB = database.servers; - const serverCollections = serversDB.collections.get('servers'); + const serverCollections = serversDB.get('servers'); let serverObj; try { diff --git a/app/sagas/login.js b/app/sagas/login.js index cf487eed421..b5c26726338 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -57,7 +57,7 @@ const handleLoginRequest = function* handleLoginRequest({ credentials, logoutOnE // Saves username on server history const serversDB = database.servers; - const serversHistoryCollection = serversDB.collections.get('servers_history'); + const serversHistoryCollection = serversDB.get('servers_history'); yield serversDB.action(async() => { try { const serversHistory = await serversHistoryCollection.query(Q.where('url', server)).fetch(); @@ -145,7 +145,7 @@ const handleLoginSuccess = function* handleLoginSuccess({ user }) { moment.locale(toMomentLocale(user.language)); const serversDB = database.servers; - const usersCollection = serversDB.collections.get('users'); + const usersCollection = serversDB.get('users'); const u = { token: user.token, username: user.username, @@ -222,7 +222,7 @@ const handleLogout = function* handleLogout({ forcedByServer }) { } else { const serversDB = database.servers; // all servers - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); const servers = yield serversCollection.query().fetch(); // see if there're other logged in servers and selects first one diff --git a/app/sagas/messages.js b/app/sagas/messages.js index 2879b2b644d..2674be42e51 100644 --- a/app/sagas/messages.js +++ b/app/sagas/messages.js @@ -12,7 +12,7 @@ const handleReplyBroadcast = function* handleReplyBroadcast({ message }) { try { const db = database.active; const { username } = message.u; - const subsCollection = db.collections.get('subscriptions'); + const subsCollection = db.get('subscriptions'); const subscriptions = yield subsCollection.query(Q.where('name', username)).fetch(); const isMasterDetail = yield select(state => state.app.isMasterDetail); diff --git a/app/sagas/rooms.js b/app/sagas/rooms.js index 94670ea1f04..f963a29485f 100644 --- a/app/sagas/rooms.js +++ b/app/sagas/rooms.js @@ -15,7 +15,7 @@ import protectedFunction from '../lib/methods/helpers/protectedFunction'; const updateRooms = function* updateRooms({ server, newRoomsUpdatedAt }) { const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); try { const serverRecord = yield serversCollection.find(server); @@ -39,7 +39,7 @@ const handleRoomsRequest = function* handleRoomsRequest({ params }) { if (params.allData) { yield put(roomsRefresh()); } else { - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); try { const serverRecord = yield serversCollection.find(server); ({ roomsUpdatedAt } = serverRecord); @@ -51,8 +51,8 @@ const handleRoomsRequest = function* handleRoomsRequest({ params }) { const { subscriptions } = yield mergeSubscriptionsRooms(subscriptionsResult, roomsResult); const db = database.active; - const subCollection = db.collections.get('subscriptions'); - const messagesCollection = db.collections.get('messages'); + const subCollection = db.get('subscriptions'); + const messagesCollection = db.get('messages'); const subsIds = subscriptions.map(sub => sub.rid).concat(roomsResult.remove.map(room => room._id)); if (subsIds.length) { diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index c195f7123fa..d367274a30c 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -46,7 +46,7 @@ const getServerInfo = function* getServerInfo({ server, raiseError = true }) { } const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); yield serversDB.action(async() => { try { const serverRecord = await serversCollection.find(server); @@ -78,7 +78,7 @@ const handleSelectServer = function* handleSelectServer({ server, version, fetch const serversDB = database.servers; yield UserPreferences.setStringAsync(RocketChat.CURRENT_SERVER, server); const userId = yield UserPreferences.getStringAsync(`${ RocketChat.TOKEN_KEY }-${ server }`); - const userCollections = serversDB.collections.get('users'); + const userCollections = serversDB.get('users'); let user = null; if (userId) { try { @@ -152,7 +152,7 @@ const handleServerRequest = function* handleServerRequest({ server, username, fr const serverInfo = yield getServerInfo({ server }); const serversDB = database.servers; - const serversHistoryCollection = serversDB.collections.get('servers_history'); + const serversHistoryCollection = serversDB.get('servers_history'); if (serverInfo) { yield RocketChat.getLoginServices(server); diff --git a/app/utils/localAuthentication.js b/app/utils/localAuthentication.js index 2eb9c7d292f..f6fd19da474 100644 --- a/app/utils/localAuthentication.js +++ b/app/utils/localAuthentication.js @@ -17,7 +17,7 @@ import { setLocalAuthenticated } from '../actions/login'; export const saveLastLocalAuthenticationSession = async(server, serverRecord) => { const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); await serversDB.action(async() => { try { if (!serverRecord) { @@ -91,7 +91,7 @@ export const checkHasPasscode = async({ force = true, serverRecord }) => { export const localAuthenticate = async(server) => { const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); let serverRecord; try { diff --git a/app/views/CreateDiscussionView/SelectUsers.js b/app/views/CreateDiscussionView/SelectUsers.js index a88773ab04c..8500ee15c73 100644 --- a/app/views/CreateDiscussionView/SelectUsers.js +++ b/app/views/CreateDiscussionView/SelectUsers.js @@ -22,7 +22,7 @@ const SelectUsers = ({ const getUsers = debounce(async(keyword = '') => { try { const db = database.active; - const usersCollection = db.collections.get('users'); + const usersCollection = db.get('users'); const res = await RocketChat.search({ text: keyword, filterRooms: false }); let items = [...users.filter(u => selected.includes(u.name)), ...res.filter(r => !users.find(u => u.name === r.name))]; const records = await usersCollection.query(Q.where('username', Q.oneOf(items.map(u => u.name)))).fetch(); diff --git a/app/views/LanguageView/index.js b/app/views/LanguageView/index.js index 435762d2165..b2e6e10791d 100644 --- a/app/views/LanguageView/index.js +++ b/app/views/LanguageView/index.js @@ -94,7 +94,7 @@ class LanguageView extends React.Component { setUser({ language: params.language }); const serversDB = database.servers; - const usersCollection = serversDB.collections.get('users'); + const usersCollection = serversDB.get('users'); await serversDB.action(async() => { try { const userRecord = await usersCollection.find(user.id); diff --git a/app/views/NewServerView/index.js b/app/views/NewServerView/index.js index 5c005d8bcac..27422dec81a 100644 --- a/app/views/NewServerView/index.js +++ b/app/views/NewServerView/index.js @@ -132,7 +132,7 @@ class NewServerView extends React.Component { queryServerHistory = async(text) => { const db = database.servers; try { - const serversHistoryCollection = db.collections.get('servers_history'); + const serversHistoryCollection = db.get('servers_history'); let whereClause = [ Q.where('username', Q.notEq(null)), Q.experimentalSortBy('updated_at', Q.desc), diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index 6b0cf68e9e0..04472c82edc 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -109,7 +109,7 @@ class RoomInfoEditView extends React.Component { } try { const db = database.active; - const sub = await db.collections.get('subscriptions').find(rid); + const sub = await db.get('subscriptions').find(rid); const observable = sub.observe(); this.querySubscription = observable.subscribe((data) => { diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index dac40ae7b2b..a18476d3402 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -136,7 +136,7 @@ class RoomInfoView extends React.Component { getRoleDescription = async(id) => { const db = database.active; try { - const rolesCollection = db.collections.get('roles'); + const rolesCollection = db.get('roles'); const role = await rolesCollection.find(id); if (role) { return role.description; diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index dd8170b2893..5ea2560159a 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -146,7 +146,7 @@ class RoomMembersView extends React.Component { navToDirectMessage = async(item) => { try { const db = database.active; - const subsCollection = db.collections.get('subscriptions'); + const subsCollection = db.get('subscriptions'); const query = await subsCollection.query(Q.where('name', item.username)).fetch(); if (query.length) { const [room] = query; diff --git a/app/views/RoomView/Header/RightButtons.js b/app/views/RoomView/Header/RightButtons.js index 0c5e6db9b66..37939b1e30b 100644 --- a/app/views/RoomView/Header/RightButtons.js +++ b/app/views/RoomView/Header/RightButtons.js @@ -35,7 +35,7 @@ class RightButtonsContainer extends Component { const db = database.active; if (tmid) { try { - const threadRecord = await db.collections.get('messages').find(tmid); + const threadRecord = await db.get('messages').find(tmid); this.observeThread(threadRecord); } catch (e) { console.log('Can\'t find message to observe.'); @@ -43,7 +43,7 @@ class RightButtonsContainer extends Component { } if (rid) { try { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); const subRecord = await subCollection.find(rid); this.observeSubscription(subRecord); } catch (e) { diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 2119fb4a0de..2ee84ae252f 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -251,7 +251,7 @@ class RoomView extends React.Component { let obj; if (this.tmid) { try { - const threadsCollection = db.collections.get('threads'); + const threadsCollection = db.get('threads'); obj = await threadsCollection.find(this.tmid); } catch (e) { // Do nothing @@ -400,7 +400,7 @@ class RoomView extends React.Component { const db = database.active; try { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); const sub = await subCollection.find(this.rid); const { room } = await RocketChat.getRoomInfo(this.rid); @@ -475,7 +475,7 @@ class RoomView extends React.Component { findAndObserveRoom = async(rid) => { try { const db = database.active; - const subCollection = await db.collections.get('subscriptions'); + const subCollection = await db.get('subscriptions'); const room = await subCollection.find(rid); this.setState({ room }); if (!this.tmid) { @@ -750,8 +750,8 @@ class RoomView extends React.Component { fetchThreadName = async(tmid, messageId) => { try { const db = database.active; - const threadCollection = db.collections.get('threads'); - const messageCollection = db.collections.get('messages'); + const threadCollection = db.get('threads'); + const messageCollection = db.get('messages'); const messageRecord = await messageCollection.find(messageId); let threadRecord; try { diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index b71af2968d4..6e40b78d1d1 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -620,7 +620,7 @@ class RoomsListView extends React.Component { const db = database.active; const result = await RocketChat.toggleFavorite(rid, !favorite); if (result.success) { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); await db.action(async() => { try { const subRecord = await subCollection.find(rid); @@ -644,7 +644,7 @@ class RoomsListView extends React.Component { const db = database.active; const result = await RocketChat.toggleRead(isRead, rid); if (result.success) { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); await db.action(async() => { try { const subRecord = await subCollection.find(rid); @@ -668,7 +668,7 @@ class RoomsListView extends React.Component { const db = database.active; const result = await RocketChat.hideRoom(rid, type); if (result.success) { - const subCollection = db.collections.get('subscriptions'); + const subCollection = db.get('subscriptions'); await db.action(async() => { try { const subRecord = await subCollection.find(rid); diff --git a/app/views/ScreenLockConfigView.js b/app/views/ScreenLockConfigView.js index bf0f6a15c63..294a854a631 100644 --- a/app/views/ScreenLockConfigView.js +++ b/app/views/ScreenLockConfigView.js @@ -71,7 +71,7 @@ class ScreenLockConfigView extends React.Component { init = async() => { const { server } = this.props; const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); try { this.serverRecord = await serversCollection.find(server); this.setState({ diff --git a/app/views/SearchMessagesView/index.js b/app/views/SearchMessagesView/index.js index 7fb5851658d..e11a5b83d34 100644 --- a/app/views/SearchMessagesView/index.js +++ b/app/views/SearchMessagesView/index.js @@ -84,7 +84,7 @@ class SearchMessagesView extends React.Component { // If it's a encrypted, room we'll search only on the local stored messages if (this.encrypted) { const db = database.active; - const messagesCollection = db.collections.get('messages'); + const messagesCollection = db.get('messages'); const likeString = sanitizeLikeString(searchText); return messagesCollection .query( diff --git a/app/views/SelectServerView.js b/app/views/SelectServerView.js index e04c05247fa..b3345c820cc 100644 --- a/app/views/SelectServerView.js +++ b/app/views/SelectServerView.js @@ -29,7 +29,7 @@ class SelectServerView extends React.Component { async componentDidMount() { const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); const servers = await serversCollection.query(Q.where('rooms_updated_at', Q.notEq(null))).fetch(); this.setState({ servers }); } diff --git a/app/views/SettingsView/index.js b/app/views/SettingsView/index.js index bc11da7b79e..b67c7f1ea62 100644 --- a/app/views/SettingsView/index.js +++ b/app/views/SettingsView/index.js @@ -62,7 +62,7 @@ class SettingsView extends React.Component { checkCookiesAndLogout = async() => { const { logout, user } = this.props; const db = database.servers; - const usersCollection = db.collections.get('users'); + const usersCollection = db.get('users'); try { const userRecord = await usersCollection.find(user.id); if (!userRecord.loginEmailPassword) { diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index b6730876bdb..38f3aff72c8 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -206,7 +206,7 @@ class ShareListView extends React.Component { ) ); } - const data = await db.collections.get('subscriptions').query(...defaultWhereClause).fetch(); + const data = await db.get('subscriptions').query(...defaultWhereClause).fetch(); return data.map(item => ({ rid: item.rid, t: item.t, @@ -226,7 +226,7 @@ class ShareListView extends React.Component { if (server) { const chats = await this.query(); - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); const serversCount = await serversCollection.query(Q.where('rooms_updated_at', Q.notEq(null))).fetchCount(); let serverInfo = {}; try { diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 36648a79191..7658600366b 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -95,7 +95,7 @@ class ShareView extends Component { getServerInfo = async() => { const { server } = this.props; const serversDB = database.servers; - const serversCollection = serversDB.collections.get('servers'); + const serversCollection = serversDB.get('servers'); try { this.serverInfo = await serversCollection.find(server); } catch (error) { diff --git a/app/views/ThreadMessagesView/index.js b/app/views/ThreadMessagesView/index.js index bf51d594f72..417c103283f 100644 --- a/app/views/ThreadMessagesView/index.js +++ b/app/views/ThreadMessagesView/index.js @@ -241,7 +241,7 @@ class ThreadMessagesView extends React.Component { try { const db = database.active; - const threadsCollection = db.collections.get('threads'); + const threadsCollection = db.get('threads'); const allThreadsRecords = await subscription.threads.fetch(); let threadsToCreate = []; let threadsToUpdate = []; From bc8d6b72f55bd99645d064137279dad212a46d4e Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Sat, 27 Feb 2021 00:27:04 +0800 Subject: [PATCH 056/177] [FIX] Use List.Separator in all places (#2931) * [FIX] Use List.Separator in all places * add List.Separator * change List.Separator Co-authored-by: Diego Mello --- app/views/CreateChannelView.js | 24 ++++++----------------- app/views/DirectoryView/index.js | 8 ++------ app/views/NewMessageView.js | 10 ++-------- app/views/ReadReceiptView/index.js | 8 ++------ app/views/RoomMembersView/index.js | 10 +++------- app/views/RoomsListView/ServerDropdown.js | 8 ++------ app/views/SelectedUsersView.js | 16 +++------------ 7 files changed, 20 insertions(+), 64 deletions(-) diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 937a48ef23a..9d1e450ff2d 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -5,6 +5,7 @@ import { View, Text, Switch, ScrollView, StyleSheet, FlatList } from 'react-native'; import { dequal } from 'dequal'; +import * as List from '../containers/List'; import TextInput from '../presentation/TextInput'; import Loading from '../containers/Loading'; @@ -31,12 +32,6 @@ const styles = StyleSheet.create({ list: { width: '100%' }, - separator: { - marginLeft: 60 - }, - formSeparator: { - marginLeft: 15 - }, input: { height: 54, paddingHorizontal: 18, @@ -264,13 +259,6 @@ class CreateChannelView extends React.Component { }); } - renderSeparator = () => - - renderFormSeparator = () => { - const { theme } = this.props; - return ; - } - renderItem = ({ item }) => { const { baseUrl, user, theme } = this.props; @@ -305,7 +293,7 @@ class CreateChannelView extends React.Component { } ]} renderItem={this.renderItem} - ItemSeparatorComponent={this.renderSeparator} + ItemSeparatorComponent={List.Separator} enableEmptySections keyboardShouldPersistTaps='always' /> @@ -341,13 +329,13 @@ class CreateChannelView extends React.Component { theme={theme} underlineColorAndroid='transparent' /> - {this.renderFormSeparator()} + {this.renderType()} - {this.renderFormSeparator()} + {this.renderReadOnly()} - {this.renderFormSeparator()} + {this.renderEncrypted()} - {this.renderFormSeparator()} + {this.renderBroadcast()} diff --git a/app/views/DirectoryView/index.js b/app/views/DirectoryView/index.js index 8be78712d03..afb1214f386 100644 --- a/app/views/DirectoryView/index.js +++ b/app/views/DirectoryView/index.js @@ -4,6 +4,7 @@ import { View, FlatList, Text } from 'react-native'; import { connect } from 'react-redux'; +import * as List from '../../containers/List'; import Touch from '../../utils/touch'; import RocketChat from '../../lib/rocketchat'; @@ -182,11 +183,6 @@ class DirectoryView extends React.Component { ); } - renderSeparator = () => { - const { theme } = this.props; - return ; - } - renderItem = ({ item, index }) => { const { data, type } = this.state; const { baseUrl, user, theme } = this.props; @@ -251,7 +247,7 @@ class DirectoryView extends React.Component { keyExtractor={item => item._id} ListHeaderComponent={this.renderHeader} renderItem={this.renderItem} - ItemSeparatorComponent={this.renderSeparator} + ItemSeparatorComponent={List.Separator} keyboardShouldPersistTaps='always' ListFooterComponent={loading ? : null} onEndReached={() => this.load({})} diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index fb5890ab7e4..31dcac513ad 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -6,6 +6,7 @@ import { import { connect } from 'react-redux'; import orderBy from 'lodash/orderBy'; import { Q } from '@nozbe/watermelondb'; +import * as List from '../containers/List'; import Touch from '../utils/touch'; import database from '../lib/database'; @@ -27,9 +28,6 @@ import { goRoom } from '../utils/goRoom'; import SafeAreaView from '../containers/SafeAreaView'; const styles = StyleSheet.create({ - separator: { - marginLeft: 60 - }, button: { height: 46, flexDirection: 'row', @@ -195,10 +193,6 @@ class NewMessageView extends React.Component { ); } - renderSeparator = () => { - const { theme } = this.props; - return ; - } renderItem = ({ item, index }) => { const { search, chats } = this.state; @@ -238,7 +232,7 @@ class NewMessageView extends React.Component { keyExtractor={item => item._id} ListHeaderComponent={this.renderHeader} renderItem={this.renderItem} - ItemSeparatorComponent={this.renderSeparator} + ItemSeparatorComponent={List.Separator} contentContainerStyle={{ backgroundColor: themes[theme].backgroundColor }} keyboardShouldPersistTaps='always' /> diff --git a/app/views/ReadReceiptView/index.js b/app/views/ReadReceiptView/index.js index 113e8936a28..f41d7c873eb 100644 --- a/app/views/ReadReceiptView/index.js +++ b/app/views/ReadReceiptView/index.js @@ -4,6 +4,7 @@ import { FlatList, View, Text } from 'react-native'; import { dequal } from 'dequal'; import moment from 'moment'; import { connect } from 'react-redux'; +import * as List from '../../containers/List'; import Avatar from '../../containers/Avatar'; import styles from './styles'; @@ -121,11 +122,6 @@ class ReadReceiptView extends React.Component { ); } - renderSeparator = () => { - const { theme } = this.props; - return ; - } - render() { const { receipts, loading } = this.state; const { theme } = this.props; @@ -143,7 +139,7 @@ class ReadReceiptView extends React.Component { this.onSearchChangeText(text)} testID='room-members-view-search' /> ) - renderSeparator = () => { - const { theme } = this.props; - return ; - } - renderItem = ({ item }) => { const { baseUrl, user, theme } = this.props; @@ -453,7 +449,7 @@ class RoomMembersView extends React.Component { renderItem={this.renderItem} style={[styles.list, { backgroundColor: themes[theme].backgroundColor }]} keyExtractor={item => item._id} - ItemSeparatorComponent={this.renderSeparator} + ItemSeparatorComponent={List.Separator} ListHeaderComponent={this.renderSearchBar} ListFooterComponent={() => { if (isLoading) { diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index aeef8d337c9..c27691aff88 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -5,6 +5,7 @@ import { import PropTypes from 'prop-types'; import { connect, batch } from 'react-redux'; import { withSafeAreaInsets } from 'react-native-safe-area-context'; +import * as List from '../../containers/List'; import { toggleServerDropdown as toggleServerDropdownAction } from '../../actions/rooms'; import { selectServerRequest as selectServerRequestAction, serverInitAdd as serverInitAddAction } from '../../actions/server'; @@ -174,11 +175,6 @@ class ServerDropdown extends Component { } } - renderSeparator = () => { - const { theme } = this.props; - return ; - } - renderServer = ({ item }) => { const { server, theme } = this.props; @@ -247,7 +243,7 @@ class ServerDropdown extends Component { data={servers} keyExtractor={item => item.id} renderItem={this.renderServer} - ItemSeparatorComponent={this.renderSeparator} + ItemSeparatorComponent={List.Separator} keyboardShouldPersistTaps='always' /> diff --git a/app/views/SelectedUsersView.js b/app/views/SelectedUsersView.js index 94d2f6b2d16..f9d14e16905 100644 --- a/app/views/SelectedUsersView.js +++ b/app/views/SelectedUsersView.js @@ -1,9 +1,10 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { View, StyleSheet, FlatList } from 'react-native'; +import { View, FlatList } from 'react-native'; import { connect } from 'react-redux'; import orderBy from 'lodash/orderBy'; import { Q } from '@nozbe/watermelondb'; +import * as List from '../containers/List'; import database from '../lib/database'; import RocketChat from '../lib/rocketchat'; @@ -27,12 +28,6 @@ import { import { showErrorAlert } from '../utils/info'; import SafeAreaView from '../containers/SafeAreaView'; -const styles = StyleSheet.create({ - separator: { - marginLeft: 60 - } -}); - class SelectedUsersView extends React.Component { static propTypes = { baseUrl: PropTypes.string, @@ -225,11 +220,6 @@ class SelectedUsersView extends React.Component { ); } - renderSeparator = () => { - const { theme } = this.props; - return ; - } - renderItem = ({ item, index }) => { const { search, chats } = this.state; const { baseUrl, user, theme } = this.props; @@ -275,7 +265,7 @@ class SelectedUsersView extends React.Component { extraData={this.props} keyExtractor={item => item._id} renderItem={this.renderItem} - ItemSeparatorComponent={this.renderSeparator} + ItemSeparatorComponent={List.Separator} ListHeaderComponent={this.renderHeader} contentContainerStyle={{ backgroundColor: themes[theme].backgroundColor }} enableEmptySections From 5d3776d4f1e040c71948a5df67b40d41abc5d87e Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 26 Feb 2021 13:49:21 -0300 Subject: [PATCH 057/177] [FIX] Limit new message list query size to 50 (#2947) * Limit query to 50 * Remove observable --- app/views/NewMessageView.js | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index 31dcac513ad..7e2aa232379 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -4,7 +4,6 @@ import { View, StyleSheet, FlatList, Text } from 'react-native'; import { connect } from 'react-redux'; -import orderBy from 'lodash/orderBy'; import { Q } from '@nozbe/watermelondb'; import * as List from '../containers/List'; @@ -27,6 +26,8 @@ import { createChannelRequest } from '../actions/createChannel'; import { goRoom } from '../utils/goRoom'; import SafeAreaView from '../containers/SafeAreaView'; +const QUERY_SIZE = 50; + const styles = StyleSheet.create({ button: { height: 46, @@ -74,25 +75,20 @@ class NewMessageView extends React.Component { }; } - componentWillUnmount() { - if (this.querySubscription && this.querySubscription.unsubscribe) { - this.querySubscription.unsubscribe(); - } - } - // eslint-disable-next-line react/sort-comp init = async() => { try { const db = database.active; - const observable = await db.collections + const chats = await db.collections .get('subscriptions') - .query(Q.where('t', 'd')) - .observeWithColumns(['room_updated_at']); + .query( + Q.where('t', 'd'), + Q.experimentalTake(QUERY_SIZE), + Q.experimentalSortBy('room_updated_at', Q.desc) + ) + .fetch(); - this.querySubscription = observable.subscribe((data) => { - const chats = orderBy(data, ['roomUpdatedAt'], ['desc']); - this.setState({ chats }); - }); + this.setState({ chats }); } catch (e) { log(e); } From 99a32479f4b1cf42c3272b5f5931d99717c55a8f Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Fri, 26 Feb 2021 14:31:35 -0400 Subject: [PATCH 058/177] [FIX] Support chats order for older versions of the server (#2934) * Update mergeSubscriptionsRooms.js * Update mergeSubscriptionsRooms.js * Update mergeSubscriptionsRooms.js * Minor refactor Co-authored-by: Diego Mello --- .../methods/helpers/mergeSubscriptionsRooms.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.js b/app/lib/methods/helpers/mergeSubscriptionsRooms.js index 1bc3f18b25d..1e5afa3b216 100644 --- a/app/lib/methods/helpers/mergeSubscriptionsRooms.js +++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.js @@ -1,11 +1,14 @@ import EJSON from 'ejson'; +import { lt, coerce } from 'semver'; import normalizeMessage from './normalizeMessage'; import findSubscriptionsRooms from './findSubscriptionsRooms'; import { Encryption } from '../../encryption'; +import reduxStore from '../../createStore'; // TODO: delete and update export const merge = (subscription, room) => { + const serverVersion = reduxStore.getState().server.version; subscription = EJSON.fromJSONValue(subscription); room = EJSON.fromJSONValue(room); @@ -25,9 +28,15 @@ export const merge = (subscription, room) => { subscription.usernames = room.usernames; subscription.uids = room.uids; } - // https://github.com/RocketChat/Rocket.Chat/blob/develop/app/ui-sidenav/client/roomList.js#L180 - const lastRoomUpdate = room.lm || subscription.ts || subscription._updatedAt; - subscription.roomUpdatedAt = subscription.lr ? Math.max(new Date(subscription.lr), new Date(lastRoomUpdate)) : lastRoomUpdate; + if (serverVersion && lt(coerce(serverVersion), '3.7.0')) { + const updatedAt = room?._updatedAt ? new Date(room._updatedAt) : null; + const lastMessageTs = subscription?.lastMessage?.ts ? new Date(subscription.lastMessage.ts) : null; + subscription.roomUpdatedAt = Math.max(updatedAt, lastMessageTs); + } else { + // https://github.com/RocketChat/Rocket.Chat/blob/develop/app/ui-sidenav/client/roomList.js#L180 + const lastRoomUpdate = room.lm || subscription.ts || subscription._updatedAt; + subscription.roomUpdatedAt = subscription.lr ? Math.max(new Date(subscription.lr), new Date(lastRoomUpdate)) : lastRoomUpdate; + } subscription.ro = room.ro; subscription.broadcast = room.broadcast; subscription.encrypted = room.encrypted; From 3e8d22336d5d48178d14eb879646e9af2d3db712 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Fri, 26 Feb 2021 14:44:00 -0400 Subject: [PATCH 059/177] [FIX] Reactions modal's backdrop color too light (#2949) Co-authored-by: Diego Mello --- app/containers/ReactionsModal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/containers/ReactionsModal.js b/app/containers/ReactionsModal.js index c828be0cd0d..f4f1889d9b8 100644 --- a/app/containers/ReactionsModal.js +++ b/app/containers/ReactionsModal.js @@ -129,7 +129,7 @@ const ReactionsModal = React.memo(({ isVisible={isVisible} onBackdropPress={onClose} onBackButtonPress={onClose} - backdropOpacity={themes[theme].backdropOpacity} + backdropOpacity={0.8} onSwipeComplete={onClose} swipeDirection={['up', 'left', 'right', 'down']} > From eedea407f1cfb8e37e81a5d5592c0f0405b1792f Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 26 Feb 2021 15:51:53 -0300 Subject: [PATCH 060/177] Bump version to 4.15.0 (#2950) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index bd555f73231..9fb20f39846 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.14.1" + versionName "4.15.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 12123d68cfe..af7653b82a2 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1691,7 +1691,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.14.1; + MARKETING_VERSION = 4.15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1728,7 +1728,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.14.1; + MARKETING_VERSION = 4.15.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index b6b497f4551..ada5fc6c06f 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 4.14.1 + 4.15.0 CFBundleSignature ???? CFBundleURLTypes diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 77e3c4e7536..515361facd3 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 4.14.1 + 4.15.0 CFBundleVersion 1 KeychainGroup diff --git a/package.json b/package.json index 727a0e8bb4f..d41564f0bd0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "0.0.1", + "version": "4.15.0", "private": true, "scripts": { "start": "react-native start", From e35f7fe5838588f50d2540e4932acfbfa672c278 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 5 Mar 2021 10:42:04 -0300 Subject: [PATCH 061/177] [FIX] Share extension not working correctly on Official app (#2963) --- .circleci/config.yml | 4 ++++ ios/NotificationService/Info.plist | 2 ++ ios/ShareRocketChatRN/Info.plist | 2 ++ 3 files changed, 8 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index db8bfc7d8c3..3e3a66b8790 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -237,9 +237,13 @@ commands: if [[ $CIRCLE_JOB == "ios-build-official" ]]; then /usr/libexec/PlistBuddy -c "Set BugsnagAPIKey $BUGSNAG_KEY_OFFICIAL" ./RocketChatRN/Info.plist /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./RocketChatRN/Info.plist + /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./ShareRocketChatRN/Info.plist + /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./NotificationService/Info.plist else /usr/libexec/PlistBuddy -c "Set BugsnagAPIKey $BUGSNAG_KEY" ./RocketChatRN/Info.plist /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./RocketChatRN/Info.plist + /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./ShareRocketChatRN/Info.plist + /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./NotificationService/Info.plist fi if [[ $APP_STORE_CONNECT_API_KEY ]]; then diff --git a/ios/NotificationService/Info.plist b/ios/NotificationService/Info.plist index d2f1244d4ba..9d959502934 100644 --- a/ios/NotificationService/Info.plist +++ b/ios/NotificationService/Info.plist @@ -4,6 +4,8 @@ AppGroup group.ios.chat.rocket + IS_OFFICIAL + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 515361facd3..d545207a6e8 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -4,6 +4,8 @@ AppGroup group.ios.chat.rocket + IS_OFFICIAL + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName From 40c075d748baa94456372dbf1154d41484ba294a Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 5 Mar 2021 21:44:46 +0800 Subject: [PATCH 062/177] [FIX] Cannot read property 'some' of undefined on hasPermission (#2966) Co-authored-by: Diego Mello --- app/lib/rocketchat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 4d1b2fbb5a6..53c7921001b 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -1192,7 +1192,7 @@ const RocketChat = { // get user roles on the server from redux const userRoles = (shareUser?.roles || loginUser?.roles) || []; const mergedRoles = [...new Set([...roomRoles, ...userRoles])]; - return permissions.map(permission => permission.some(r => mergedRoles.includes(r) ?? false)); + return permissions.map(permission => permission?.some(r => mergedRoles.includes(r) ?? false)); } catch (e) { log(e); } From cc8dc6a75a63b691bad209b9b4fa0a83609206d8 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 5 Mar 2021 13:10:21 -0300 Subject: [PATCH 063/177] [FIX] Deep linking and other connectivity issues (#2894) * Navigate from push notification only if necessary * Use JS SDK branch * Stop reconnecting if it's already connected * Fix RoomsListView forever loading after tapping push notification of another server * Execute fewer operations on app/index * Remove roomsRequest call from onForeground * Apply check and reopen * Stop opening in-app notification when the app is on backgorund * Connecting tweaks * Fix deep linking not working if the app is on background * Force reset yarn cache * Upgrade JS SDK * Remove listener on unmount * Fix resume on Android after back button is pressed * Fix local authentication resume * Fix back button android * Change JS SDK branch --- android/app/src/main/AndroidManifest.xml | 2 +- app/containers/InAppNotification/index.js | 12 ++++++-- app/index.js | 19 +++++++++--- app/lib/methods/subscriptions/rooms.js | 2 +- app/lib/rocketchat.js | 18 +++++++---- app/sagas/deepLinking.js | 37 +++++++++++++++++------ app/sagas/state.js | 17 +++-------- app/utils/localAuthentication.js | 6 ++-- app/views/RoomsListView/index.js | 17 ++--------- ios/ReplyNotification.swift | 3 ++ ios/RocketChatRN-Bridging-Header.h | 2 ++ package.json | 2 +- yarn.lock | 4 +-- 13 files changed, 83 insertions(+), 58 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 440766f1892..8c3ab8d1833 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -29,7 +29,7 @@ android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:exported="true" android:label="@string/app_name" - android:launchMode="singleTop" + android:launchMode="singleTask" android:windowSoftInputMode="adjustResize"> diff --git a/app/containers/InAppNotification/index.js b/app/containers/InAppNotification/index.js index 53e4bb264a5..7d22b127ad3 100644 --- a/app/containers/InAppNotification/index.js +++ b/app/containers/InAppNotification/index.js @@ -11,8 +11,12 @@ import { getActiveRoute } from '../../utils/navigation'; export const INAPP_NOTIFICATION_EMITTER = 'NotificationInApp'; -const InAppNotification = memo(({ rooms }) => { +const InAppNotification = memo(({ rooms, appState }) => { const show = (notification) => { + if (appState !== 'foreground') { + return; + } + const { payload } = notification; const state = Navigation.navigationRef.current?.getRootState(); const route = getActiveRoute(state); @@ -41,11 +45,13 @@ const InAppNotification = memo(({ rooms }) => { }, (prevProps, nextProps) => dequal(prevProps.rooms, nextProps.rooms)); const mapStateToProps = state => ({ - rooms: state.room.rooms + rooms: state.room.rooms, + appState: state.app.ready && state.app.foreground ? 'foreground' : 'background' }); InAppNotification.propTypes = { - rooms: PropTypes.array + rooms: PropTypes.array, + appState: PropTypes.string }; export default connect(mapStateToProps)(InAppNotification); diff --git a/app/index.js b/app/index.js index 8bf338dad16..048323a5b77 100644 --- a/app/index.js +++ b/app/index.js @@ -112,16 +112,25 @@ export default class Root extends React.Component { init = async() => { UserPreferences.getMapAsync(THEME_PREFERENCES_KEY).then(this.setTheme); - const [notification, deepLinking] = await Promise.all([initializePushNotifications(), Linking.getInitialURL()]); - const parsedDeepLinkingURL = parseDeepLinking(deepLinking); store.dispatch(appInitLocalSettings()); + + // Open app from push notification + const notification = await initializePushNotifications(); if (notification) { onNotification(notification); - } else if (parsedDeepLinkingURL) { + return; + } + + // Open app from deep linking + const deepLinking = await Linking.getInitialURL(); + const parsedDeepLinkingURL = parseDeepLinking(deepLinking); + if (parsedDeepLinkingURL) { store.dispatch(deepLinkingOpen(parsedDeepLinkingURL)); - } else { - store.dispatch(appInit()); + return; } + + // Open app from app icon + store.dispatch(appInit()); } getMasterDetail = (width) => { diff --git a/app/lib/methods/subscriptions/rooms.js b/app/lib/methods/subscriptions/rooms.js index f4b5c7b1d7d..b79e422a66e 100644 --- a/app/lib/methods/subscriptions/rooms.js +++ b/app/lib/methods/subscriptions/rooms.js @@ -407,7 +407,7 @@ export default function subscribeRooms() { }; connectedListener = this.sdk.onStreamData('connected', handleConnection); - disconnectedListener = this.sdk.onStreamData('close', handleConnection); + // disconnectedListener = this.sdk.onStreamData('close', handleConnection); streamListener = this.sdk.onStreamData('stream-notify-user', handleStreamMessageReceived); try { diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 53c7921001b..693c5eb789e 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -177,9 +177,16 @@ const RocketChat = { } this.controller = new AbortController(); }, + checkAndReopen() { + return this?.sdk?.checkAndReopen(); + }, connect({ server, user, logoutOnError = false }) { return new Promise((resolve) => { - if (!this.sdk || this.sdk.client.host !== server) { + if (this?.sdk?.client?.host === server) { + return resolve(); + } else { + this.sdk?.disconnect?.(); + this.sdk = null; database.setActiveDB(server); } reduxStore.dispatch(connectRequest()); @@ -208,11 +215,6 @@ const RocketChat = { EventEmitter.emit('INQUIRY_UNSUBSCRIBE'); - if (this.sdk) { - this.sdk.disconnect(); - this.sdk = null; - } - if (this.code) { this.code = null; } @@ -240,6 +242,10 @@ const RocketChat = { sdkConnect(); + this.connectedListener = this.sdk.onStreamData('connecting', () => { + reduxStore.dispatch(connectRequest()); + }); + this.connectedListener = this.sdk.onStreamData('connected', () => { reduxStore.dispatch(connectSuccess()); }); diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index ff10bd76bde..21e0695fb29 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -31,6 +31,14 @@ const handleInviteLink = function* handleInviteLink({ params, requireLogin = fal } }; +const popToRoot = function popToRoot({ isMasterDetail }) { + if (isMasterDetail) { + Navigation.navigate('DrawerNavigator'); + } else { + Navigation.navigate('RoomsListView'); + } +}; + const navigate = function* navigate({ params }) { yield put(appStart({ root: ROOT_INSIDE })); if (params.path) { @@ -38,19 +46,28 @@ const navigate = function* navigate({ params }) { if (type !== 'invite') { const room = yield RocketChat.canOpenRoom(params); if (room) { - const isMasterDetail = yield select(state => state.app.isMasterDetail); - if (isMasterDetail) { - Navigation.navigate('DrawerNavigator'); - } else { - Navigation.navigate('RoomsListView'); - } const item = { name, t: roomTypes[type], roomUserId: RocketChat.getUidDirectMessage(room), ...room }; - yield goRoom({ item, isMasterDetail }); + + const isMasterDetail = yield select(state => state.app.isMasterDetail); + const focusedRooms = yield select(state => state.room.rooms); + + if (focusedRooms.includes(room.rid)) { + // if there's one room on the list or last room is the one + if (focusedRooms.length === 1 || focusedRooms[0] === room.rid) { + yield goRoom({ item, isMasterDetail }); + } else { + popToRoot({ isMasterDetail }); + yield goRoom({ item, isMasterDetail }); + } + } else { + popToRoot({ isMasterDetail }); + yield goRoom({ item, isMasterDetail }); + } if (params.isCall) { RocketChat.callJitsi(item); @@ -121,10 +138,10 @@ const handleOpen = function* handleOpen({ params }) { } else { // search if deep link's server already exists try { - const servers = yield serversCollection.find(host); - if (servers && user) { + const hostServerRecord = yield serversCollection.find(host); + if (hostServerRecord && user) { yield localAuthenticate(host); - yield put(selectServerRequest(host)); + yield put(selectServerRequest(host, hostServerRecord.version, true, true)); yield take(types.LOGIN.SUCCESS); yield navigate({ params }); return; diff --git a/app/sagas/state.js b/app/sagas/state.js index 8b072c0a9d8..5b86af2ef92 100644 --- a/app/sagas/state.js +++ b/app/sagas/state.js @@ -12,13 +12,14 @@ const appHasComeBackToForeground = function* appHasComeBackToForeground() { if (appRoot === ROOT_OUTSIDE) { return; } - const auth = yield select(state => state.login.isAuthenticated); - if (!auth) { + const login = yield select(state => state.login); + const server = yield select(state => state.server); + if (!login.isAuthenticated || login.isFetching || server.connecting || server.loading || server.changingServer) { return; } try { - const server = yield select(state => state.server.server); - yield localAuthenticate(server); + yield localAuthenticate(server.server); + RocketChat.checkAndReopen(); setBadgeCount(); return yield RocketChat.setUserPresenceOnline(); } catch (e) { @@ -31,14 +32,6 @@ const appHasComeBackToBackground = function* appHasComeBackToBackground() { if (appRoot === ROOT_OUTSIDE) { return; } - const auth = yield select(state => state.login.isAuthenticated); - if (!auth) { - return; - } - const localAuthenticated = yield select(state => state.login.isLocalAuthenticated); - if (!localAuthenticated) { - return; - } try { const server = yield select(state => state.server.server); yield saveLastLocalAuthenticationSession(server); diff --git a/app/utils/localAuthentication.js b/app/utils/localAuthentication.js index f6fd19da474..6e6d40dfbad 100644 --- a/app/utils/localAuthentication.js +++ b/app/utils/localAuthentication.js @@ -102,9 +102,6 @@ export const localAuthenticate = async(server) => { // if screen lock is enabled if (serverRecord?.autoLock) { - // set isLocalAuthenticated to false - store.dispatch(setLocalAuthenticated(false)); - // Make sure splash screen has been hidden RNBootSplash.hide(); @@ -118,6 +115,9 @@ export const localAuthenticate = async(server) => { // if last authenticated session is older than configured auto lock time, authentication is required if (diffToLastSession >= serverRecord?.autoLockTime) { + // set isLocalAuthenticated to false + store.dispatch(setLocalAuthenticated(false)); + let hasBiometry = false; // if biometry is enabled on the app diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 6e40b78d1d1..996847c91cc 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -89,7 +89,6 @@ const shouldUpdateProps = [ 'showUnread', 'useRealName', 'StoreLastMessage', - 'appState', 'theme', 'isMasterDetail', 'refreshing', @@ -126,7 +125,6 @@ class RoomsListView extends React.Component { showUnread: PropTypes.bool, refreshing: PropTypes.bool, StoreLastMessage: PropTypes.bool, - appState: PropTypes.string, theme: PropTypes.string, toggleSortDropdown: PropTypes.func, openSearchHeader: PropTypes.func, @@ -135,7 +133,6 @@ class RoomsListView extends React.Component { roomsRequest: PropTypes.func, closeServerDropdown: PropTypes.func, useRealName: PropTypes.bool, - connected: PropTypes.bool, isMasterDetail: PropTypes.bool, rooms: PropTypes.array, width: PropTypes.number, @@ -276,9 +273,6 @@ class RoomsListView extends React.Component { groupByType, showFavorites, showUnread, - appState, - connected, - roomsRequest, rooms, isMasterDetail, insets @@ -294,12 +288,6 @@ class RoomsListView extends React.Component { ) ) { this.getSubscriptions(); - } else if ( - appState === 'foreground' - && appState !== prevProps.appState - && connected - ) { - roomsRequest(); } // Update current item in case of another action triggers an update on rooms reducer if (isMasterDetail && item?.rid !== rooms[0] && !dequal(rooms, prevProps.rooms)) { @@ -319,6 +307,9 @@ class RoomsListView extends React.Component { if (this.unsubscribeBlur) { this.unsubscribeBlur(); } + if (this.backHandler && this.backHandler.remove) { + this.backHandler.remove(); + } if (isTablet) { EventEmitter.removeListener(KEY_COMMAND, this.handleCommands); } @@ -1018,7 +1009,6 @@ const mapStateToProps = state => ({ isMasterDetail: state.app.isMasterDetail, server: state.server.server, changingServer: state.server.changingServer, - connected: state.server.connected, searchText: state.rooms.searchText, loadingServer: state.server.loading, showServerDropdown: state.rooms.showServerDropdown, @@ -1029,7 +1019,6 @@ const mapStateToProps = state => ({ showFavorites: state.sortPreferences.showFavorites, showUnread: state.sortPreferences.showUnread, useRealName: state.settings.UI_Use_Real_Name, - appState: state.app.ready && state.app.foreground ? 'foreground' : 'background', StoreLastMessage: state.settings.Store_Last_Message, rooms: state.room.rooms, queueSize: getInquiryQueueSelector(state).length, diff --git a/ios/ReplyNotification.swift b/ios/ReplyNotification.swift index 87b8cc43964..771a1056dfd 100644 --- a/ios/ReplyNotification.swift +++ b/ios/ReplyNotification.swift @@ -48,6 +48,9 @@ class ReplyNotification: RNNotificationEventHandler { } } } + } else { + let body = RNNotificationParser.parseNotificationResponse(response) + RNEventEmitter.sendEvent(RNNotificationOpened, body: body) } } } diff --git a/ios/RocketChatRN-Bridging-Header.h b/ios/RocketChatRN-Bridging-Header.h index 0c1ed67a4a7..142bd08453e 100644 --- a/ios/RocketChatRN-Bridging-Header.h +++ b/ios/RocketChatRN-Bridging-Header.h @@ -7,6 +7,8 @@ #import #import #import +#import +#import #import #import #import diff --git a/package.json b/package.json index d41564f0bd0..901e709553c 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "reselect": "4.0.0", "rn-extensions-share": "RocketChat/rn-extensions-share", "rn-fetch-blob": "0.12.0", - "rn-root-view": "^1.0.3", + "rn-root-view": "1.0.3", "semver": "7.3.2", "ua-parser-js": "^0.7.21", "url-parse": "^1.4.7", diff --git a/yarn.lock b/yarn.lock index bc0d659518d..633d519bdb7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2274,7 +2274,7 @@ "@rocket.chat/sdk@RocketChat/Rocket.Chat.js.SDK#mobile": version "1.0.0-mobile" - resolved "https://codeload.github.com/RocketChat/Rocket.Chat.js.SDK/tar.gz/0a97c818e60670d7660868ea107b96e5ebb631af" + resolved "https://codeload.github.com/RocketChat/Rocket.Chat.js.SDK/tar.gz/0241e2fc0c29827c51655f2d46d96e7a7720d2b6" dependencies: js-sha256 "^0.9.0" lru-cache "^4.1.1" @@ -13788,7 +13788,7 @@ rn-host-detect@1.2.0: resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.2.0.tgz#8b0396fc05631ec60c1cb8789e5070cdb04d0da0" integrity sha512-btNg5kzHcjZZ7t7mvvV/4wNJ9e3MPgrWivkRgWURzXL0JJ0pwWlU4zrbmdlz3HHzHOxhBhHB4D+/dbMFfu4/4A== -rn-root-view@^1.0.3: +rn-root-view@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/rn-root-view/-/rn-root-view-1.0.3.tgz#a2cddc717278cb2175fb29b7c006e407b7f0d0e2" integrity sha512-BIKm8hY5q8+pxK9B5ugYjqutoI9xn2JfxIZKWoaFmAl1bOIM4oXjwFQrRM1e6lFgzz99MN6Mf2dK3Alsywnvvw== From a56dade12bf5e513eb667389eb882fccf0ca877f Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 5 Mar 2021 13:21:18 -0300 Subject: [PATCH 064/177] [FIX] Messagebox's placeholder color is too bright (#2968) --- app/containers/MessageBox/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index 2a318a71137..9a075e31a90 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -939,7 +939,7 @@ class MessageBox extends Component { keyboardType='twitter' blurOnSubmit={false} placeholder={I18n.t('New_Message')} - placeholderTextColor={themes[theme].auxiliaryTintColor} + placeholderTextColor={themes[theme].auxiliaryText} onChangeText={this.onChangeText} onSelectionChange={this.onSelectionChange} underlineColorAndroid='transparent' From b2c200a5d1cd144ea55f446820da3b3eab89e350 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Thu, 18 Mar 2021 09:13:44 -0400 Subject: [PATCH 065/177] [IMPROVEMENT] Message attachment colors (#2860) * Added convertStrToHex function and updated Reply component * Removed convertStrtToHex function and added attachmentBackground * Added color2k, removed transparent view and applied transparentize to backgroundColor * Added stories * Update Reply stories * Update Reply stories * Fix lint * Update Reply stories * Fix props * Move tests to Message stories Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 653 ++++++++++++++++++ app/containers/message/Reply.js | 5 +- package.json | 1 + storybook/stories/Message.js | 38 + yarn.lock | 5 + 5 files changed, 700 insertions(+), 2 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 0eb72257c20..be964795e34 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -40262,6 +40262,659 @@ exports[`Storyshots Message list message 1`] = ` + + Colored attachments + + + + + + + + + + + + + + + + + diego.mello + + + + 10:00 AM + + + + + + + + + Field 1 + + + Value 1 + + + + + Field 2 + + + Value 2 + + + + + + + + + + + Field 1 + + + Value 1 + + + + + Field 2 + + + Value 2 + + + + + + + + + + + Field 1 + + + Value 1 + + + + + Field 2 + + + Value 2 + + + + + + + + + + 0 && styles.marginTop, attachment.description && styles.marginBottom, { - backgroundColor: themes[theme].chatComponentBackground, - borderColor: themes[theme].borderColor + backgroundColor: attachment.color ? transparentize(attachment.color, 0.80) : themes[theme].chatComponentBackground, + borderColor: attachment.color || themes[theme].borderColor } ]} background={Touchable.Ripple(themes[theme].bannerBackground)} diff --git a/package.json b/package.json index 901e709553c..767faa3329c 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@rocket.chat/ui-kit": "0.13.0", "bugsnag-react-native": "2.23.10", "bytebuffer": "^5.0.1", + "color2k": "^1.2.2", "commonmark": "git+https://github.com/RocketChat/commonmark.js.git", "commonmark-react-renderer": "git+https://github.com/RocketChat/commonmark-react-renderer.git", "dequal": "^2.0.2", diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index 7e8e06646b4..da1517a996c 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -740,6 +740,44 @@ export default ({ theme }) => { }]} /> + + + alert('broadcast!')} /> diff --git a/yarn.lock b/yarn.lock index 633d519bdb7..2938649e310 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5140,6 +5140,11 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color2k@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/color2k/-/color2k-1.2.2.tgz#468b98ae35141c802dcfa1fb594d396baaa052d3" + integrity sha512-uxfa7byLts8cg2EGGZB6ZJTcUOvQt9V6sNbaVf5luAFLFfVqfl1srPL88NMwVFrO/vpZnAUxRdBkiuVQ99lnHg== + color@^3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" From 1ff6530a19e8fe4b21d3233916573d35132f5d99 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Thu, 18 Mar 2021 09:18:33 -0400 Subject: [PATCH 066/177] [FIX] App forgetting workspace when server is not finished added (#2798) * [FIX] App forgetting workspace * Added e2e tests * Update login.js * Update logout.js * Reverted changes on login and share, updated init * Update 08-persistantworkspace.spec.js * Revert unnecessary changes * Revert line change * Update share.js * Tweak tests * Use wm shorthand * Remove irrelevant calls to RocketChat.TOKEN_KEY Co-authored-by: Diego Mello --- app/lib/methods/logout.js | 1 - app/sagas/init.js | 30 ++++++++++------ app/sagas/login.js | 1 - app/share.js | 4 +-- app/views/RoomsListView/Header/Header.js | 2 +- e2e/tests/assorted/07-changeserver.spec.js | 40 +++++++++++++++------- 6 files changed, 50 insertions(+), 28 deletions(-) diff --git a/app/lib/methods/logout.js b/app/lib/methods/logout.js index bb6950835a3..114b762079c 100644 --- a/app/lib/methods/logout.js +++ b/app/lib/methods/logout.js @@ -61,7 +61,6 @@ async function removeServerData({ server }) { async function removeCurrentServer() { await UserPreferences.removeItem(RocketChat.CURRENT_SERVER); - await UserPreferences.removeItem(RocketChat.TOKEN_KEY); } async function removeServerDatabase({ server }) { diff --git a/app/sagas/init.js b/app/sagas/init.js index 03a6c5a78a6..4a70dda0385 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -1,4 +1,4 @@ -import { put, takeLatest, all } from 'redux-saga/effects'; +import { put, takeLatest } from 'redux-saga/effects'; import RNBootSplash from 'react-native-bootsplash'; import UserPreferences from '../lib/userPreferences'; @@ -25,16 +25,26 @@ export const initLocalSettings = function* initLocalSettings() { const restore = function* restore() { try { - const { token, server } = yield all({ - token: UserPreferences.getStringAsync(RocketChat.TOKEN_KEY), - server: UserPreferences.getStringAsync(RocketChat.CURRENT_SERVER) - }); + const server = yield UserPreferences.getStringAsync(RocketChat.CURRENT_SERVER); + let userId = yield UserPreferences.getStringAsync(`${ RocketChat.TOKEN_KEY }-${ server }`); - if (!token || !server) { - yield all([ - UserPreferences.removeItem(RocketChat.TOKEN_KEY), - UserPreferences.removeItem(RocketChat.CURRENT_SERVER) - ]); + if (!server) { + yield put(appStart({ root: ROOT_OUTSIDE })); + } else if (!userId) { + const serversDB = database.servers; + const serversCollection = serversDB.get('servers'); + const servers = yield serversCollection.query().fetch(); + + // Check if there're other logged in servers and picks first one + if (servers.length > 0) { + for (let i = 0; i < servers.length; i += 1) { + const newServer = servers[i].id; + userId = yield UserPreferences.getStringAsync(`${ RocketChat.TOKEN_KEY }-${ newServer }`); + if (userId) { + return yield put(selectServerRequest(newServer)); + } + } + } yield put(appStart({ root: ROOT_OUTSIDE })); } else { const serversDB = database.servers; diff --git a/app/sagas/login.js b/app/sagas/login.js index b5c26726338..7673e9a6f53 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -126,7 +126,6 @@ const fetchRooms = function* fetchRooms() { const handleLoginSuccess = function* handleLoginSuccess({ user }) { try { const adding = yield select(state => state.server.adding); - yield UserPreferences.setStringAsync(RocketChat.TOKEN_KEY, user.token); RocketChat.getUserPresence(user.id); diff --git a/app/share.js b/app/share.js index 1edbfa5c40b..bfe0112643b 100644 --- a/app/share.js +++ b/app/share.js @@ -143,9 +143,9 @@ class Root extends React.Component { init = async() => { UserPreferences.getMapAsync(THEME_PREFERENCES_KEY).then(this.setTheme); - const [currentServer, token] = await Promise.all([UserPreferences.getStringAsync(RocketChat.CURRENT_SERVER), UserPreferences.getStringAsync(RocketChat.TOKEN_KEY)]); + const currentServer = await UserPreferences.getStringAsync(RocketChat.CURRENT_SERVER); - if (currentServer && token) { + if (currentServer) { await localAuthenticate(currentServer); this.setState({ root: 'inside' }); await RocketChat.shareExtensionInit(currentServer); diff --git a/app/views/RoomsListView/Header/Header.js b/app/views/RoomsListView/Header/Header.js index fb5d7eb9e86..43fa4b83a53 100644 --- a/app/views/RoomsListView/Header/Header.js +++ b/app/views/RoomsListView/Header/Header.js @@ -82,7 +82,7 @@ const Header = React.memo(({ size={18} /> - {subtitle ? {subtitle} : null} + {subtitle ? {subtitle} : null} ); diff --git a/e2e/tests/assorted/07-changeserver.spec.js b/e2e/tests/assorted/07-changeserver.spec.js index 7210d70609f..e91acfbb218 100644 --- a/e2e/tests/assorted/07-changeserver.spec.js +++ b/e2e/tests/assorted/07-changeserver.spec.js @@ -12,6 +12,12 @@ const checkServer = async(server) => { await element(by.id('sidebar-close-drawer')).tap(); } +const reopenAndCheckServer = async(server) => { + await device.launchApp({ permissions: { notifications: 'YES' } }); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(6000); + await checkServer(server); +} + describe('Change server', () => { before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); @@ -20,20 +26,22 @@ describe('Change server', () => { await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); }); - it('should be logged in main server', async() => { - await checkServer(data.server); - }) - - it('should add server and create new user', async() => { - await sleep(5000); + it('should login to server, add new server, close the app, open the app and show previous logged server', async() => { await element(by.id('rooms-list-header-server-dropdown-button')).tap(); await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); await element(by.id('rooms-list-header-server-add')).tap(); - // TODO: refactor - await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); + await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(6000); await element(by.id('new-server-view-input')).replaceText(data.alternateServer); await element(by.id('new-server-view-button')).tap(); + await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(6000); + await reopenAndCheckServer(data.server); + }); + + it('should add server and create new user', async() => { + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await element(by.id(`rooms-list-header-server-${ data.alternateServer }`)).tap(); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); await element(by.id('workspace-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); @@ -46,18 +54,24 @@ describe('Change server', () => { await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); - // For a sanity test, to make sure roomslist is showing correct rooms - // app CANNOT show public room created on previous tests - // await waitFor(element(by.id(`rooms-list-view-item-public${ data.random }`))).toBeNotVisible().withTimeout(60000); - // await expect(element(by.id(`rooms-list-view-item-public${ data.random }`))).toBeNotVisible(); + await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toBeNotVisible().withTimeout(60000); await checkServer(data.alternateServer); }); - it('should change back', async() => { + it('should reopen the app and show alternate server', async() => { + await reopenAndCheckServer(data.alternateServer); + }); + + it('should change back to main server', async() => { await element(by.id('rooms-list-header-server-dropdown-button')).tap(); await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); await element(by.id(`rooms-list-header-server-${ data.server }`)).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toBeVisible().withTimeout(60000); await checkServer(data.server); }); + + it('should reopen the app and show main server', async() => { + await reopenAndCheckServer(data.server); + }) }); From e164b6496cdcd68fb592fbe3eceaf98f6c194316 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 18 Mar 2021 21:27:37 +0800 Subject: [PATCH 067/177] [TESTS] Add E2E tests to draft message (#2960) * [E2E TEST] Draft message * Fix tests Co-authored-by: Diego Mello --- e2e/tests/room/02-room.spec.js | 41 +++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index a4720ba7a34..d4090d6c978 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -5,9 +5,6 @@ const data = require('../../data'); const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping } = require('../../helpers/app'); async function navigateToRoom(roomName) { - await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); - await navigateToLogin(); - await login(data.users.regular.username, data.users.regular.password); await searchRoom(`${ roomName }`); await waitFor(element(by.id(`rooms-list-view-item-${ roomName }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); @@ -18,6 +15,9 @@ describe('Room screen', () => { const mainRoom = data.groups.private.name; before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); await navigateToRoom(mainRoom); }); @@ -126,6 +126,20 @@ describe('Room screen', () => { await expect(element(by.id('messagebox-input'))).toHaveText('#general '); await element(by.id('messagebox-input')).clearText(); }); + + it('should draft message', async () => { + await element(by.id('messagebox-input')).atIndex(0).tap(); + await element(by.id('messagebox-input')).atIndex(0).typeText(`${ data.random }draft`); + await tapBack(); + + await navigateToRoom(mainRoom); + await expect(element(by.id('messagebox-input'))).toHaveText(`${ data.random }draft`); + await element(by.id('messagebox-input')).clearText(); + await tapBack(); + + await navigateToRoom(mainRoom); + await expect(element(by.id('messagebox-input'))).toHaveText(''); + }); }); describe('Message', async() => { @@ -352,6 +366,27 @@ describe('Room screen', () => { await expect(element(by.id('thread-messages-view'))).toExist(); await tapBack(); }); + + it('should draft thread message', async () => { + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await element(by.id('messagebox-input')).atIndex(0).tap(); + await element(by.id('messagebox-input')).atIndex(0).typeText(`${ thread }draft`); + await tapBack(); + + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(`${ thread }draft`); + await element(by.id('messagebox-input')).atIndex(0).clearText(); + await tapBack(); + + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(''); + }); }); // after(async() => { From ec5840c076c5f839dd7e8346c9f117ba8cb63dc0 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 18 Mar 2021 21:29:38 +0800 Subject: [PATCH 068/177] [TESTS] Add E2E tests to group DM (#2961) Co-authored-by: Diego Mello --- e2e/tests/room/05-createdmgroup.spec.js | 53 +++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 e2e/tests/room/05-createdmgroup.spec.js diff --git a/e2e/tests/room/05-createdmgroup.spec.js b/e2e/tests/room/05-createdmgroup.spec.js new file mode 100644 index 00000000000..a6451bfd723 --- /dev/null +++ b/e2e/tests/room/05-createdmgroup.spec.js @@ -0,0 +1,53 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { tapBack, sleep, navigateToLogin, login, tryTapping } = require('../../helpers/app'); + + + +describe('Group DM', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + }); + + describe('Create Group DM', async() => { + before(async() => { + await element(by.id('rooms-list-view-create-channel')).tap(); + }); + + describe('Render', async() => { + it('should have new message screen', async() => { + await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000); + }); + + it('should have search input', async() => { + await waitFor(element(by.id('new-message-view-search'))).toBeVisible().withTimeout(2000); + }); + }) + + describe('Usage', async() => { + it('should navigate to create DM', async() => { + await element(by.label('Create Direct Messages')).tap(); + }); + + it('should add users', async() => { + await element(by.id('select-users-view-search')).replaceText('rocket.cat'); + await waitFor(element(by.id(`select-users-view-item-rocket.cat`))).toBeVisible().withTimeout(10000); + await element(by.id('select-users-view-item-rocket.cat')).tap(); + await element(by.id('select-users-view-search')).replaceText(data.users.existing.username); + await waitFor(element(by.id(`select-users-view-item-${data.users.existing.username}`))).toBeVisible().withTimeout(10000); + await element(by.id(`select-users-view-item-${data.users.existing.username}`)).tap(); + await element(by.id('selected-users-view-submit')).tap(); + }); + + it('check Group DM exist', async() => { + await waitFor(element(by.id(`room-view-title-${data.users.existing.username}, rocket.cat`))).toExist().withTimeout(10000); + }); + + + }) + }); +}); From 45d0d4a5f0e593dd0d30cdb75ef8e3540e3acbad Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 18 Mar 2021 21:32:48 +0800 Subject: [PATCH 069/177] [TESTS] Add E2E tests to directory (#2964) * [E2E TEST] Directory * Fix tests Co-authored-by: Diego Mello --- app/views/DirectoryView/index.js | 6 +-- .../assorted/09-joinfromdirectory.spec.js | 47 +++++++++++++++++++ 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 e2e/tests/assorted/09-joinfromdirectory.spec.js diff --git a/app/views/DirectoryView/index.js b/app/views/DirectoryView/index.js index afb1214f386..f78e74a21f0 100644 --- a/app/views/DirectoryView/index.js +++ b/app/views/DirectoryView/index.js @@ -165,12 +165,12 @@ class DirectoryView extends React.Component { @@ -199,7 +199,7 @@ class DirectoryView extends React.Component { title: item.name, onPress: () => this.onPressItem(item), baseUrl, - testID: `federation-view-item-${ item.name }`, + testID: `directory-view-item-${ item.name }`.toLowerCase(), style, user, theme, diff --git a/e2e/tests/assorted/09-joinfromdirectory.spec.js b/e2e/tests/assorted/09-joinfromdirectory.spec.js new file mode 100644 index 00000000000..308c4db2c82 --- /dev/null +++ b/e2e/tests/assorted/09-joinfromdirectory.spec.js @@ -0,0 +1,47 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { navigateToLogin, login, tapBack, sleep } = require('../../helpers/app'); + +const testuser = data.users.regular + +async function navigateToRoom(search) { + await element(by.id('directory-view-search')).replaceText(search); + await waitFor(element(by.id(`directory-view-item-${ search }`))).toBeVisible().withTimeout(10000); + await sleep(300); // app takes some time to animate + await element(by.id(`directory-view-item-${ search }`)).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ search }`))).toExist().withTimeout(5000); +} + +describe('Join room from directory', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(testuser.username, testuser.password); + }); + + describe('Usage', async() => { + it('should tap directory', async() => { + await element(by.id('rooms-list-view-directory')).tap(); + await waitFor(element(by.id('directory-view'))).toExist().withTimeout(2000); + }) + + it('should search public channel and navigate', async() => { + await navigateToRoom(data.channels.detoxpublic.name); + }) + + it('should back and tap directory', async() => { + await tapBack(); + await element(by.id('rooms-list-view-directory')).tap(); + }) + + it('should search user and navigate', async() => { + await element(by.id('directory-view-dropdown')).tap(); + await element(by.label('Users')).tap(); + await element(by.label('Search by')).tap(); + await navigateToRoom(data.users.alternate.username); + }) + }); +}); From 460e82f759a5e8e42b10107508945eeb28b86bc4 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Thu, 18 Mar 2021 09:33:35 -0400 Subject: [PATCH 070/177] [CHORE] Simplify server version comparison (#2922) * Simplify server version where needed * Added lte and gte functions and updated imports * Updated functions names * Update util functions * Update util function and added methods * Remove lt and coerce from getPermissions and mergeSubscriptionsRooms * Fix comparison * Update getPermissions.js * Remove unused import * Fix lint * Fix lint Co-authored-by: Diego Mello --- app/lib/methods/enterpriseModules.js | 5 ++--- app/lib/methods/getCustomEmojis.js | 4 ++-- app/lib/methods/getPermissions.js | 5 ++--- app/lib/methods/getUsersPresence.js | 9 ++++----- app/lib/methods/helpers/mergeSubscriptionsRooms.js | 4 ++-- app/lib/rocketchat.js | 10 ++++------ app/lib/utils.js | 13 +++++++++++++ app/utils/avatar.js | 5 ++--- app/views/RoomActionsView/index.js | 5 ++--- app/views/RoomInfoEditView/index.js | 14 ++++---------- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/app/lib/methods/enterpriseModules.js b/app/lib/methods/enterpriseModules.js index 35c6672d260..d86ae26fd8f 100644 --- a/app/lib/methods/enterpriseModules.js +++ b/app/lib/methods/enterpriseModules.js @@ -1,5 +1,4 @@ -import gte from 'semver/functions/gte'; -import coerce from 'semver/functions/coerce'; +import { compareServerVersion, methods } from '../utils'; import reduxStore from '../createStore'; import database from '../database'; @@ -34,7 +33,7 @@ export function getEnterpriseModules() { return new Promise(async(resolve) => { try { const { version: serverVersion, server: serverId } = reduxStore.getState().server; - if (serverVersion && gte(coerce(serverVersion), '3.1.0')) { + if (compareServerVersion(serverVersion, '3.1.0', methods.greaterThanOrEqualTo)) { // RC 3.1.0 const enterpriseModules = await this.methodCallWrapper('license:getModules'); if (enterpriseModules) { diff --git a/app/lib/methods/getCustomEmojis.js b/app/lib/methods/getCustomEmojis.js index 31108fb625e..d56a20bace1 100644 --- a/app/lib/methods/getCustomEmojis.js +++ b/app/lib/methods/getCustomEmojis.js @@ -1,7 +1,7 @@ -import lt from 'semver/functions/lt'; import orderBy from 'lodash/orderBy'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; +import { compareServerVersion, methods } from '../utils'; import reduxStore from '../createStore'; import database from '../database'; import log from '../../utils/log'; @@ -90,7 +90,7 @@ export function getCustomEmojis() { const updatedSince = await getUpdatedSince(allRecords); // if server version is lower than 0.75.0, fetches from old api - if (serverVersion && lt(serverVersion, '0.75.0')) { + if (compareServerVersion(serverVersion, '0.75.0', methods.lowerThan)) { // RC 0.61.0 const result = await this.sdk.get('emoji-custom'); diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 15ee221b849..09b91aa631a 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -1,9 +1,8 @@ -import lt from 'semver/functions/lt'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import { Q } from '@nozbe/watermelondb'; -import coerce from 'semver/functions/coerce'; import orderBy from 'lodash/orderBy'; +import { compareServerVersion, methods } from '../utils'; import database from '../database'; import log from '../../utils/log'; import reduxStore from '../createStore'; @@ -123,7 +122,7 @@ export function getPermissions() { const allRecords = await permissionsCollection.query().fetch(); // if server version is lower than 0.73.0, fetches from old api - if (serverVersion && lt(coerce(serverVersion), '0.73.0')) { + if (compareServerVersion(serverVersion, '0.73.0', methods.lowerThan)) { // RC 0.66.0 const result = await this.sdk.get('permissions.list'); if (!result.success) { diff --git a/app/lib/methods/getUsersPresence.js b/app/lib/methods/getUsersPresence.js index 83e5ce815c7..edbd16792c4 100644 --- a/app/lib/methods/getUsersPresence.js +++ b/app/lib/methods/getUsersPresence.js @@ -1,8 +1,7 @@ import { InteractionManager } from 'react-native'; -import lt from 'semver/functions/lt'; -import gte from 'semver/functions/gte'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; +import { compareServerVersion, methods } from '../utils'; import reduxStore from '../createStore'; import { setActiveUsers } from '../../actions/activeUsers'; import { setUser } from '../../actions/login'; @@ -12,7 +11,7 @@ export function subscribeUsersPresence() { const serverVersion = reduxStore.getState().server.version; // if server is lower than 1.1.0 - if (serverVersion && lt(serverVersion, '1.1.0')) { + if (compareServerVersion(serverVersion, '1.1.0', methods.lowerThan)) { if (this.activeUsersSubTimeout) { clearTimeout(this.activeUsersSubTimeout); this.activeUsersSubTimeout = false; @@ -37,11 +36,11 @@ export default async function getUsersPresence() { const { user: loggedUser } = reduxStore.getState().login; // if server is greather than or equal 1.1.0 - if (serverVersion && gte(serverVersion, '1.1.0')) { + if (compareServerVersion(serverVersion, '1.1.0', methods.greaterThanOrEqualTo)) { let params = {}; // if server is greather than or equal 3.0.0 - if (serverVersion && gte(serverVersion, '3.0.0')) { + if (compareServerVersion(serverVersion, '3.0.0', methods.greaterThanOrEqualTo)) { // if not have any id if (!ids.length) { return; diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.js b/app/lib/methods/helpers/mergeSubscriptionsRooms.js index 1e5afa3b216..895f2a8a46a 100644 --- a/app/lib/methods/helpers/mergeSubscriptionsRooms.js +++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.js @@ -1,10 +1,10 @@ import EJSON from 'ejson'; -import { lt, coerce } from 'semver'; import normalizeMessage from './normalizeMessage'; import findSubscriptionsRooms from './findSubscriptionsRooms'; import { Encryption } from '../../encryption'; import reduxStore from '../../createStore'; +import { compareServerVersion, methods } from '../../utils'; // TODO: delete and update export const merge = (subscription, room) => { @@ -28,7 +28,7 @@ export const merge = (subscription, room) => { subscription.usernames = room.usernames; subscription.uids = room.uids; } - if (serverVersion && lt(coerce(serverVersion), '3.7.0')) { + if (compareServerVersion(serverVersion, '3.7.0', methods.lowerThan)) { const updatedAt = room?._updatedAt ? new Date(room._updatedAt) : null; const lastMessageTs = subscription?.lastMessage?.ts ? new Date(subscription.lastMessage.ts) : null; subscription.roomUpdatedAt = Math.max(updatedAt, lastMessageTs); diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 693c5eb789e..a6e9137ae7b 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -1,7 +1,4 @@ import { InteractionManager } from 'react-native'; -import lt from 'semver/functions/lt'; -import gte from 'semver/functions/gte'; -import coerce from 'semver/functions/coerce'; import { Rocketchat as RocketchatClient, settings as RocketChatSettings @@ -11,6 +8,7 @@ import AsyncStorage from '@react-native-community/async-storage'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import RNFetchBlob from 'rn-fetch-blob'; +import { compareServerVersion, methods } from './utils'; import reduxStore from './createStore'; import defaultSettings from '../constants/settings'; import database from './database'; @@ -133,7 +131,7 @@ const RocketChat = { message: I18n.t('Not_RC_Server', { contact: I18n.t('Contact_your_server_admin') }) }; } - if (lt(jsonRes.version, MIN_ROCKETCHAT_VERSION)) { + if (compareServerVersion(jsonRes.version, MIN_ROCKETCHAT_VERSION, methods.lowerThan)) { return { success: false, message: I18n.t('Invalid_server_version', { @@ -472,7 +470,7 @@ const RocketChat = { // Force normalized params for 2FA starting RC 3.9.0. const serverVersion = reduxStore.getState().server.version; - if (serverVersion && gte(coerce(serverVersion), '3.9.0')) { + if (compareServerVersion(serverVersion, '3.9.0', methods.greaterThanOrEqualTo)) { const user = params.user ?? params.username; const password = params.password ?? params.ldapPass ?? params.crowdPassword; params = { user, password }; @@ -1364,7 +1362,7 @@ const RocketChat = { }, readThreads(tmid) { const serverVersion = reduxStore.getState().server.version; - if (serverVersion && gte(coerce(serverVersion), '3.4.0')) { + if (compareServerVersion(serverVersion, '3.4.0', methods.greaterThanOrEqualTo)) { // RC 3.4.0 return this.methodCallWrapper('readThreads', tmid); } diff --git a/app/lib/utils.js b/app/lib/utils.js index 617501b2c45..769fd6d7670 100644 --- a/app/lib/utils.js +++ b/app/lib/utils.js @@ -1,3 +1,7 @@ +import { + lt, lte, gt, gte, coerce +} from 'semver'; + export const formatAttachmentUrl = (attachmentUrl, userId, token, server) => { if (attachmentUrl.startsWith('http')) { if (attachmentUrl.includes('rc_token')) { @@ -7,3 +11,12 @@ export const formatAttachmentUrl = (attachmentUrl, userId, token, server) => { } return encodeURI(`${ server }${ attachmentUrl }?rc_uid=${ userId }&rc_token=${ token }`); }; + +export const methods = { + lowerThan: lt, + lowerThanOrEqualTo: lte, + greaterThan: gt, + greaterThanOrEqualTo: gte +}; + +export const compareServerVersion = (currentServerVersion, versionToCompare, func) => currentServerVersion && func(coerce(currentServerVersion), versionToCompare); diff --git a/app/utils/avatar.js b/app/utils/avatar.js index 64f6e951a82..c0b4e2db928 100644 --- a/app/utils/avatar.js +++ b/app/utils/avatar.js @@ -1,5 +1,4 @@ -import lt from 'semver/functions/lt'; -import coerce from 'semver/functions/coerce'; +import { compareServerVersion, methods } from '../lib/utils'; const formatUrl = (url, size, query) => `${ url }?format=png&size=${ size }${ query }`; @@ -9,7 +8,7 @@ export const avatarURL = ({ let room; if (type === 'd') { room = text; - } else if (rid && !(serverVersion && lt(coerce(serverVersion), '3.6.0'))) { + } else if (rid && !(compareServerVersion(serverVersion, '3.6.0', methods.lowerThan))) { room = `room/${ rid }`; } else { room = `@${ text }`; diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 5d3591d6ac1..41707ee46ba 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -5,8 +5,7 @@ import { } from 'react-native'; import { connect } from 'react-redux'; import isEmpty from 'lodash/isEmpty'; -import lt from 'semver/functions/lt'; -import coerce from 'semver/functions/coerce'; +import { compareServerVersion, methods } from '../../lib/utils'; import Touch from '../../utils/touch'; import { setLoading as setLoadingAction } from '../../actions/selectedUsers'; @@ -256,7 +255,7 @@ class RoomActionsView extends React.Component { const { encrypted } = room; const { serverVersion } = this.props; let hasPermission = false; - if (serverVersion && lt(coerce(serverVersion), '3.11.0')) { + if (compareServerVersion(serverVersion, '3.11.0', methods.lowerThan)) { hasPermission = canEdit; } else { hasPermission = canToggleEncryption; diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index 04472c82edc..7552b093ad2 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -8,8 +8,7 @@ import { BLOCK_CONTEXT } from '@rocket.chat/ui-kit'; import ImagePicker from 'react-native-image-crop-picker'; import { dequal } from 'dequal'; import isEmpty from 'lodash/isEmpty'; -import lt from 'semver/functions/lt'; -import coerce from 'semver/functions/coerce'; +import { compareServerVersion, methods } from '../../lib/utils'; import database from '../../lib/database'; import { deleteRoom as deleteRoomAction } from '../../actions/room'; @@ -418,11 +417,6 @@ class RoomInfoEditView extends React.Component { this.setState({ encrypted: value }); } - isServerVersionLowerThan = (version) => { - const { serverVersion } = this.props; - return serverVersion && lt(coerce(serverVersion), version); - } - render() { const { name, nameError, description, topic, announcement, t, ro, reactWhenReadOnly, room, joinCode, saving, permissions, archived, enableSysMes, encrypted, avatar @@ -449,7 +443,7 @@ class RoomInfoEditView extends React.Component { - {this.isServerVersionLowerThan('3.6.0') + {compareServerVersion(serverVersion, '3.6.0', methods.lowerThan) ? null : ( @@ -560,7 +554,7 @@ class RoomInfoEditView extends React.Component { ] : null } - {serverVersion && !lt(serverVersion, '3.0.0') ? ( + {!compareServerVersion(serverVersion, '3.0.0', methods.lowerThan) ? ( Date: Thu, 18 Mar 2021 22:36:50 +0800 Subject: [PATCH 071/177] [TESTS] Add E2E tests to discussions (#2970) * [E2E TEST] Discussions * fix error Cannot find UI elemen * Fix tests Co-authored-by: Diego Mello --- app/containers/UIKit/MultiSelect/Items.js | 36 +++-- app/containers/UIKit/MultiSelect/index.js | 1 + app/presentation/RoomItem/index.js | 3 +- app/views/CreateDiscussionView/index.js | 1 + app/views/RoomsListView/index.js | 1 - e2e/tests/room/04-discussion.spec.js | 139 ++++++++++++++++++ ...4-roominfo.spec.js => 05-roominfo.spec.js} | 0 7 files changed, 162 insertions(+), 19 deletions(-) create mode 100644 e2e/tests/room/04-discussion.spec.js rename e2e/tests/room/{04-roominfo.spec.js => 05-roominfo.spec.js} (100%) diff --git a/app/containers/UIKit/MultiSelect/Items.js b/app/containers/UIKit/MultiSelect/Items.js index c1619e2e26b..c2f784d030c 100644 --- a/app/containers/UIKit/MultiSelect/Items.js +++ b/app/containers/UIKit/MultiSelect/Items.js @@ -16,22 +16,26 @@ const keyExtractor = item => item.value.toString(); // RectButton doesn't work on modal (Android) const Item = ({ item, selected, onSelect, theme -}) => ( - onSelect(item)} - style={[ - styles.item, - { backgroundColor: themes[theme].backgroundColor } - ]} - > - <> - {item.imageUrl ? : null} - {textParser([item.text])} - {selected ? : null} - - -); +}) => { + const itemName = item.value.name || item.text.text.toLowerCase(); + return ( + onSelect(item)} + style={[ + styles.item, + { backgroundColor: themes[theme].backgroundColor } + ]} + > + <> + {item.imageUrl ? : null} + {textParser([item.text])} + {selected ? : null} + + + ); +}; Item.propTypes = { item: PropTypes.object, selected: PropTypes.number, diff --git a/app/containers/UIKit/MultiSelect/index.js b/app/containers/UIKit/MultiSelect/index.js index 246a44ec083..0d366b6d7de 100644 --- a/app/containers/UIKit/MultiSelect/index.js +++ b/app/containers/UIKit/MultiSelect/index.js @@ -112,6 +112,7 @@ export const MultiSelect = React.memo(({ { + await searchRoom(channel); + await waitFor(element(by.id(`rooms-list-view-item-${ channel }`))).toExist().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ channel }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); +} + +describe('Discussion', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, newInstance: true, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password) + }); + + it('should create discussion from NewMessageView', async() => { + const discussionName = `${data.random} Discussion NewMessageView`; + await element(by.id('rooms-list-view-create-channel')).tap(); + await waitFor(element(by.id('new-message-view'))).toExist().withTimeout(2000); + await element(by.label('Create Discussion')).tap(); + await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(60000); + await expect(element(by.id('create-discussion-view'))).toExist(); + await element(by.label('Select a Channel...')).tap(); + await element(by.id('multi-select-search')).replaceText(`${channel}`); + await waitFor(element(by.id(`multi-select-item-${channel}`))).toExist().withTimeout(10000); + await element(by.id(`multi-select-item-${channel}`)).tap(); + await element(by.id('multi-select-discussion-name')).replaceText(discussionName); + await waitFor(element(by.id(`create-discussion-submit`))).toExist().withTimeout(10000); + await element(by.id('create-discussion-submit')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(10000); + await waitFor(element(by.id(`room-view-title-${ discussionName }`))).toExist().withTimeout(5000); + await tapBack(); + await waitFor(element(by.id(`rooms-list-view-item-${ discussionName }`))).toExist().withTimeout(5000); + }); + + it('should create discussion from action button', async() => { + const discussionName = `${data.random} Discussion Action Button`; + await navigateToRoom(); + await element(by.id('messagebox-actions')).tap(); + await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(2000); + await element(by.label('Create Discussion')).tap(); + await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(2000); + await element(by.id('multi-select-discussion-name')).replaceText(discussionName); + await waitFor(element(by.id(`create-discussion-submit`))).toExist().withTimeout(10000); + await element(by.id('create-discussion-submit')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(10000); + await waitFor(element(by.id(`room-view-title-${ discussionName }`))).toExist().withTimeout(5000); + }); + + describe('Create Discussion from action sheet', async() => { + it('should send a message', async() => { + await waitFor(element(by.id('messagebox'))).toBeVisible().withTimeout(60000); + await mockMessage('message'); + }); + + it('should create discussion', async() => { + const discussionName = `${ data.random }message`; + await element(by.label(discussionName)).atIndex(0).longPress(); + await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(2000); + await element(by.label(`Start a Discussion`)).atIndex(0).tap(); + await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(2000); + await element(by.id('create-discussion-submit')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(10000); + await waitFor(element(by.id(`room-view-title-${ discussionName }`))).toExist().withTimeout(5000); + }); + }); + + describe('Check RoomActionsView render', async() => { + it('should navigete to RoomActionsView', async() => { + await waitFor(element(by.id('room-view-header-actions'))).toBeVisible().withTimeout(5000); + await element(by.id('room-view-header-actions')).tap(); + await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); + }); + + it('should have room actions screen', async() => { + await expect(element(by.id('room-actions-view'))).toBeVisible(); + }); + + it('should have info', async() => { + await expect(element(by.id('room-actions-info'))).toBeVisible(); + }); + + it('should have members', async() => { + await expect(element(by.id('room-actions-members'))).toBeVisible(); + }); + + it('should have files', async() => { + await expect(element(by.id('room-actions-files'))).toBeVisible(); + }); + + it('should have mentions', async() => { + await expect(element(by.id('room-actions-mentioned'))).toBeVisible(); + }); + + it('should have starred', async() => { + await expect(element(by.id('room-actions-starred'))).toBeVisible(); + }); + + it('should have search', async() => { + await expect(element(by.id('room-actions-search'))).toBeVisible(); + }); + + it('should have share', async() => { + await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await expect(element(by.id('room-actions-share'))).toBeVisible(); + }); + + it('should have pinned', async() => { + await expect(element(by.id('room-actions-pinned'))).toBeVisible(); + }); + + it('should not have notifications', async() => { + await expect(element(by.id('room-actions-notifications'))).toBeVisible(); + }); + + it('should not have leave channel', async() => { + await expect(element(by.id('room-actions-leave-channel'))).toBeVisible(); + }); + + it('should navigate to RoomActionView', async() => { + await element(by.type('UIScrollView')).atIndex(1).swipe('down'); + await expect(element(by.id('room-actions-info'))).toBeVisible(); + await element(by.id('room-actions-info')).tap(); + await waitFor(element(by.id('room-info-view'))).toExist().withTimeout(60000); + await expect(element(by.id('room-info-view'))).toExist(); + }); + + it('should not have edit button', async() => { + await expect(element(by.id('room-info-view-edit-button'))).toBeNotVisible(); + }); + }); +}); diff --git a/e2e/tests/room/04-roominfo.spec.js b/e2e/tests/room/05-roominfo.spec.js similarity index 100% rename from e2e/tests/room/04-roominfo.spec.js rename to e2e/tests/room/05-roominfo.spec.js From 2ea7e9d3f9bc21fef14d13473c3dd5e2cb205c03 Mon Sep 17 00:00:00 2001 From: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com> Date: Thu, 18 Mar 2021 20:14:09 +0530 Subject: [PATCH 072/177] [FIX] Attachment not rendering markdown (#2924) * [FIX] Render markdown in Fields content * Added stories Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 306 ++++++++++++++++-- app/containers/message/Reply.js | 21 +- storybook/stories/Message.js | 6 +- 3 files changed, 307 insertions(+), 26 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index be964795e34..84c23537a66 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -39301,17 +39301,44 @@ exports[`Storyshots Message list message 1`] = ` Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { "color": "#2f343d", }, ] } > - Value 1 + + Value 1 + - Value 2 + + Value 2 + - Value 3 + + Value 3 + - Value 4 + + Value 4 + - Value 5 + + Value 5 + @@ -39541,7 +39676,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Two short custom fields + Two short custom fields with markdown - Value 1 + + Value 1 + - Value 2 + + + Value 2 + + @@ -40191,17 +40402,44 @@ exports[`Storyshots Message list message 1`] = ` Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { "color": "#2f343d", }, ] } > - Value 1 + + Value 1 + - Value 2 + + Value 2 + diff --git a/app/containers/message/Reply.js b/app/containers/message/Reply.js index d05668ddbd8..caa80039a7c 100644 --- a/app/containers/message/Reply.js +++ b/app/containers/message/Reply.js @@ -112,16 +112,24 @@ const Description = React.memo(({ return true; }); -const Fields = React.memo(({ attachment, theme }) => { +const Fields = React.memo(({ attachment, theme, getCustomEmoji }) => { if (!attachment.fields) { return null; } + + const { baseUrl, user } = useContext(MessageContext); return ( {attachment.fields.map(field => ( {field.title} - {field.value} + ))} @@ -176,7 +184,11 @@ const Reply = React.memo(({ getCustomEmoji={getCustomEmoji} theme={theme} /> - + { }]} /> - + { short: true }, { title: 'Field 2', - value: 'Value 2', + value: '[Value 2](https://google.com/)', short: true }] }, { @@ -734,7 +734,7 @@ export default ({ theme }) => { short: true }, { title: 'Field 2', - value: 'Value 2', + value: '**Value 2**', short: true }] }]} From 1eaf4b802bfd251de2c086498227d400e8dde159 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 19 Mar 2021 00:52:47 +0800 Subject: [PATCH 073/177] [TESTS] Add e2e tests for mark message as unread (#2953) * [E2E TEST] Add e2e tests for mark message as unread * fixed test for draft message * change test name * move test to other file * Remove unnecessary tests * Rename file * Update jest tests Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 186 ++++++++++++++++-- e2e/helpers/data_setup.js | 1 - e2e/tests/room/02-room.spec.js | 2 +- e2e/tests/room/06-markasunread.spec.js | 44 +++++ 4 files changed, 219 insertions(+), 14 deletions(-) create mode 100644 e2e/tests/room/06-markasunread.spec.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 84c23537a66..12a5b2600f2 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -40818,17 +40818,44 @@ exports[`Storyshots Message list message 1`] = ` Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { "color": "#2f343d", }, ] } > - Value 1 + + Value 1 + - Value 2 + + Value 2 + @@ -40965,17 +41019,44 @@ exports[`Storyshots Message list message 1`] = ` Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { "color": "#2f343d", }, ] } > - Value 1 + + Value 1 + - Value 2 + + Value 2 + @@ -41112,17 +41220,44 @@ exports[`Storyshots Message list message 1`] = ` Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { "color": "#2f343d", }, ] } > - Value 1 + + Value 1 + - Value 2 + + Value 2 + diff --git a/e2e/helpers/data_setup.js b/e2e/helpers/data_setup.js index 13f1e73d288..8f95f0b780b 100644 --- a/e2e/helpers/data_setup.js +++ b/e2e/helpers/data_setup.js @@ -97,7 +97,6 @@ const sendMessage = async (user, groupname, msg) => { await login(user.username, user.password); await rocketchat.post('chat.postMessage', { channel: `#${groupname}`, msg }); } catch (infoError) { - console.log(JSON.stringify(createError)) console.log(JSON.stringify(infoError)) throw "Failed to find or create private group" } diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index d4090d6c978..8c39e9bc2db 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -2,7 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping } = require('../../helpers/app'); +const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping, logout } = require('../../helpers/app'); async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); diff --git a/e2e/tests/room/06-markasunread.spec.js b/e2e/tests/room/06-markasunread.spec.js new file mode 100644 index 00000000000..0247e039d65 --- /dev/null +++ b/e2e/tests/room/06-markasunread.spec.js @@ -0,0 +1,44 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { navigateToLogin, login, mockMessage, tapBack, searchRoom, logout } = require('../../helpers/app'); + +async function navigateToRoom(user) { + await searchRoom(`${ user }`); + await waitFor(element(by.id(`rooms-list-view-item-${ user }`))).toExist().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ user }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); +} + +describe('Mark as unread', () => { + const user = data.users.alternate.username + + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + await navigateToRoom(user); + }); + + describe('Usage', async() => { + describe('Mark message as unread', async() => { + it('should mark message as unread', async() => { + await mockMessage('message') + await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toExist(); + await tapBack(); + await logout(); + await navigateToLogin(); + await login(data.users.alternate.username, data.users.alternate.password); + await navigateToRoom(data.users.regular.username); + await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); + await expect(element(by.id('action-sheet'))).toExist(); + await expect(element(by.id('action-sheet-handle'))).toBeVisible(); + await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); + await element(by.label('Mark Unread')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); + await expect(element(by.id(`rooms-list-view-item-${data.users.regular.username}`))).toExist(); + }); + }); + }); +}); From 715cc1eab73dd65c97cb7ca5311f6ac792f576ce Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 19 Mar 2021 01:02:58 +0800 Subject: [PATCH 074/177] [TESTS] Add E2E tests to delete server (#2954) * [E2E TEST] Delete server * fixed test for delete server * fix tests * minor changes * Rename file Co-authored-by: Diego Mello --- e2e/tests/assorted/10-deleteserver.spec.js | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 e2e/tests/assorted/10-deleteserver.spec.js diff --git a/e2e/tests/assorted/10-deleteserver.spec.js b/e2e/tests/assorted/10-deleteserver.spec.js new file mode 100644 index 00000000000..7d5d53e740c --- /dev/null +++ b/e2e/tests/assorted/10-deleteserver.spec.js @@ -0,0 +1,59 @@ +const { + device, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { sleep, navigateToLogin, login } = require('../../helpers/app'); + +const checkServer = async(server) => { + const label = `Connected to ${ server }`; + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.label(label))).toBeVisible().withTimeout(10000); + await element(by.id('sidebar-close-drawer')).tap(); +} + +describe('Delete server', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + }); + + it('should be logged in main server', async() => { + await checkServer(data.server); + }) + + it('should add server', async() => { + await sleep(5000); + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await element(by.id('rooms-list-header-server-add')).tap(); + + await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(10000); + await element(by.id('new-server-view-input')).replaceText(data.alternateServer); + await element(by.id('new-server-view-button')).tap(); + await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(10000); + await element(by.id('workspace-view-register')).tap(); + await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); + + // Register new user + await element(by.id('register-view-name')).replaceText(data.registeringUser.username); + await element(by.id('register-view-username')).replaceText(data.registeringUser.username); + await element(by.id('register-view-email')).replaceText(data.registeringUser.email); + await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); + + await checkServer(data.alternateServer); + }); + + it('should delete server', async() => { + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await element(by.id(`rooms-list-header-server-${ data.server }`)).longPress(1500); + await element(by.label('Delete').and(by.type('_UIAlertControllerActionView'))).tap(); + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`rooms-list-header-server-${ data.server }`))).toBeNotVisible().withTimeout(10000); + }); +}); From 83b7f3867de851533e48de33e27cfa10b91aaa28 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 19 Mar 2021 01:33:20 +0800 Subject: [PATCH 075/177] [CHORE] Refactor RoomActionsView permissions (#2872) Co-authored-by: Diego Mello --- app/views/RoomActionsView/index.js | 36 +++++++++++++++++------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 41707ee46ba..7f5ba713a0f 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -125,18 +125,22 @@ class RoomActionsView extends React.Component { this.updateRoomMember(); } - const canAutoTranslate = RocketChat.canAutoTranslate(); - this.setState({ canAutoTranslate }); - - this.canAddUser(); - this.canInviteUser(); - this.canEdit(); - this.canToggleEncryption(); + const canAutoTranslate = await RocketChat.canAutoTranslate(); + const canAddUser = await this.canAddUser(); + const canInviteUser = await this.canInviteUser(); + const canEdit = await this.canEdit(); + const canToggleEncryption = await this.canToggleEncryption(); + const canViewMembers = await this.canViewMembers(); + + this.setState({ + canAutoTranslate, canAddUser, canInviteUser, canEdit, canToggleEncryption, canViewMembers + }); // livechat permissions if (room.t === 'l') { - this.canForwardGuest(); - this.canReturnQueue(); + const canForwardGuest = await this.canForwardGuest(); + const canReturnQueue = await this.canReturnQueue(); + this.setState({ canForwardGuest, canReturnQueue }); } } } @@ -182,7 +186,7 @@ class RoomActionsView extends React.Component { if (t === 'p' && permissions[2]) { canAddUser = true; } - this.setState({ canAddUser }); + return canAddUser; } canInviteUser = async() => { @@ -192,7 +196,7 @@ class RoomActionsView extends React.Component { const permissions = await RocketChat.hasPermission([createInviteLinksPermission], rid); const canInviteUser = permissions[0]; - this.setState({ canInviteUser }); + return canInviteUser; } canEdit = async() => { @@ -202,7 +206,7 @@ class RoomActionsView extends React.Component { const permissions = await RocketChat.hasPermission([editRoomPermission], rid); const canEdit = permissions[0]; - this.setState({ canEdit }); + return canEdit; } canToggleEncryption = async() => { @@ -212,7 +216,7 @@ class RoomActionsView extends React.Component { const permissions = await RocketChat.hasPermission([toggleRoomE2EEncryptionPermission], rid); const canToggleEncryption = permissions[0]; - this.setState({ canToggleEncryption }); + return canToggleEncryption; } canViewMembers = async() => { @@ -229,7 +233,6 @@ class RoomActionsView extends React.Component { // This method is executed only in componentDidMount and returns a value // We save the state to read in render const result = (t === 'c' || t === 'p'); - this.setState({ canViewMembers: result }); return result; } @@ -238,13 +241,13 @@ class RoomActionsView extends React.Component { const { transferLivechatGuestPermission } = this.props; const { rid } = room; const permissions = await RocketChat.hasPermission([transferLivechatGuestPermission], rid); - this.setState({ canForwardGuest: permissions[0] }); + return permissions[0]; } canReturnQueue = async() => { try { const { returnQueue } = await RocketChat.getRoutingConfig(); - this.setState({ canReturnQueue: returnQueue }); + return returnQueue; } catch { // do nothing } @@ -582,6 +585,7 @@ class RoomActionsView extends React.Component { rid, t, encrypted } = room; const isGroupChat = RocketChat.isGroupChat(room); + return ( From d7562f7b79a8dc29d8215c492d09e110b9f7acf4 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Thu, 18 Mar 2021 15:33:02 -0300 Subject: [PATCH 076/177] [CHORE] Add status and teams icons (#2989) Co-authored-by: Gerzon Z --- android/app/src/main/assets/fonts/custom.ttf | Bin 49420 -> 50792 bytes app/lib/selection.json | 2 +- ios/custom.ttf | Bin 49420 -> 50792 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/main/assets/fonts/custom.ttf b/android/app/src/main/assets/fonts/custom.ttf index 41bf2cf78192e373a3e3eb69781e26e5f1516f53..5e5e19a16d275ee349ad64d8fd1917cdb465060d 100644 GIT binary patch delta 3244 zcmbVO4Qx}_6+Y)Z+t2_1_OlZ^vGeTbB#uLV?AZBnVgjWEQg8@`K|_|%L9z~7cT^0R zz)@Ses$-Fxhej#TQmSfD@i)RG1nJ7wsY7gRQ(F*XtVG+2$O?!dRie^rcCYO)!>WqS z^11Jx_wGIS+;hM0dvDwG?6qxd#*@A@5z8osb|(b2P}C6AI^RC#0&f| z>Dfs>EGPiMGc`1oo_c%gq?ANk`SVi;raqjyJoV|_ukPLjy!$s^#)Ca;|I&Wbe#3rU z8bRmy4$M@iM~&s6mBGq&1!E&({zV;jSWq4^iFq(7YU0&j0n{z z*u17jF&sxB;xEj0Bbnf(GjfB%A}2(`O^pq98>TEeoh75QSag|;)E6@QNv9QA%uXJ_ z{rGY)?x4>QXzPfxN#11QS&!rmxdbvXnM99FDXYsQ;=!0jcbbkOO)MCHGiu^_)A)&+ z-YV%wJ4cNSoQD_LHs*71K@h+%^~|$M3!mVs1-7ue!WI}+A{Og)Ivmd4SS-=;pMHmQ z_VrfI24xU}CP}+Xlp1$cVN~kd)q~5VBfBaYZCtvzYY~1=s@d&h3}fRxySs4#3nNg? zj<5-6hQ%=O|5cTiG$P2w3h7GJsk17C3Nc?mOi4Wt|Wlt!g*G~)Az!+u|cRp$zA(do_EN!n)gX0tw%Z_WCAJrl^V%CN^*DvG6UA*N(m zjzLECGz~$F;0&~of)Vxr>n6qUf)COiun3kyAN&Bu;0<^eJ^`>a*~_sEZB~T=^%$r{ z0*GAJtw>Uj^351&#%McI6y!D(;L3^x`#MOCy2ksO|Bl!`*SBxB*f zA_+HCW^RX^{C03=l}gh^>)EAAt9lP9ENZLEW!2iapdsk2?d+_z2zqb!9S@>KmrMql z%|^U}cm^?I57|6ota7q47WDD;cE;#48amWgwZRoHWz`Oi$!5__>MSNb{wh{k8Kah< zG@(}2Mb^}-6A6~;2LIl#JQESHgKIZi9faIB0qs&h0; zsg3Np1aeB3)#}o!>P*(o+S*R7CU$%#BWFT7OCnYovWxmXhzx`HstVP*7GW#RV6&Le z5f?e+$Vz76`$u*jaB9|wPZJvtV0^JjHIZLF%G{9Q6`s> zX{bQCI_wEm#t4`gm?W~}Ap~&{Fab_0jw!Dh5mP}kcw0d<80Z=@(zS4ew#K1AdXjF0 zO$>F7HV3lV+%qQ7JlZvMbaa#)1yR`h7OAH!r26B|!OujX;3e2Jg_~ND!jmG<#t|#Z zLBQltS7G67e&IxJ*`&^*BnmY`cP(XVtZ91of3WDXS$YQqjMAo&tdAe;-LEr)tN3jS%{k=W5`Z6QODGR{v(N@<}GXJ9Sf<6UH$mXswVgLaJa zjdcoJn%R)sIMCJ+4+i7ICO*l3snm074I^VHOUQ-%X`uvyTe(eN(p+L74A7f$$XCec zFl>$>qQ@4p8}P>lLbI+wv&O0W>a7Q0hVv1#U!aW9Q5Nu;w7furBsm$%6b0pl(#v-e zSf9S{B|%;q1H36pUKI(3(UzMKDKl^;MN{^=oMB9Em0GP}Wr|Y6R=SM|<|`B=dg7ym&u^z6n7&C8gOCvCOBN%;)N|=2PuF zr^56@3TI9?e>bh|_abJm76at#m9yoWfThhzZUI^2$|X0<1I8zDnVf zQ9LKDIr&E%k=joEf_zS$C!>n(9PvkprHD-yjP_H~ty8_y{E3&O&nD(c^WQt0{-xbz zzs4WsFY#GNwPS(f`;P5Sy>p54j5Awuy3|qnk;~)S>sGs;avv+(Qoi2P=N~KSUR`~-`d08{jk%_?=GURCwT{~U z8L7HA>L%*j>$fy08U`AUH`b;bkA=12w(vxxEwVmxuxUZm96cI4+`OU1+H$tl)4Hkk zL|aQ+Dqa%*Yx`J-uVZ`1M~PJ8&dipXugtvN+1)wO`L9{wS!-tPn{{b+?d*3S`RSYu zkM=+M$=uGleRB_X`MQR?F3np!-#&j!x4t{oJ=T5Uv9ZS{7pz=xd*SSbXOeZvNBWb; zdKNEg=vDS!T73BN^^ad&;#-nga&zfROYeN^^s?p4ZZBWGJp07HK4agXR@hhky?=TC cME`a2g%5BJwd6yL{ut?>r!C{_-rtG;1{4-~H2?qr delta 1880 zcmbVNeN0nV6u(+C~PXI97 z9o^E}zG86u#{ir~7+{T}K;B0=pCG>u`KoAVPoIO@OCrAm0G#UB`cmuW9c2Ol&M|uo zbhh?&gYO{+fRXhGFYjvY6mOYKlgCj2Z47sGZ{5}daFhb)Z@)9V*Aqr79@2w@8~}kl z6-u2=eVO_;HI=$H^Uur-14L1f>PVeSjiTrenJApOF3b_!7yK^xO>kH6EBZC0y%+h( z4`93`b{$Z-5~qL|D1jO6X|@t3ffS;Nznqt=EL3PL%gxp*Xb}Qp0Mw<*}@8iijqmC-g0BaOoY^GBa6l2@mxB6yV==G5bJ~@ zHk)0k*L6DZAe$``t|N$Er@1|**SUB+gf*(wA;KInmV2dA8KqJv!ZzDZyQ5R5uVkY_ zgn<@6gohcC>fEd}3&G2(%1W_j6H1FIlQ7EWM`yr8 zY&g4$ar4ohvmzjcL;$AE=5|90tZ;Zgi^E|t6QpJ><1lTF!2}FH6#s;D)RT`K1rE;< zW!N%PjD>@F(rfcehMajbm^|}lo{5}=$>#|da-#!dR7QBof1h}vxa2Q%6k8<6PvYIl zmIHZ+BiVNF_!9Occmua%KLd0!3NS5R1l9+8RbZzJ$_8cACD56^eRe1u`dkqS6YPmNrG*Xg12pVDuSHZO`IT$r93eT$23Yjj;c^3d&L4T~lb zVv-Jz3h5JLU&Z$Erv+z(yM;%EmxOW7_T$xyTN75y^DkY`; zvc^?zc}ZcYaH#OM;?Lh6#x`Dd8o>%L!dVl@Z2CAW}VXWa^V`XF0 zD~&@7RJPy@9>qNWd956|4{5*%)e(w6tw1 f-*hCjIE21$0HS9cvH_c^3Bb_zg`2!`;XU{-^smq( diff --git a/app/lib/selection.json b/app/lib/selection.json index f6d894f3f2f..b3ffe759380 100644 --- a/app/lib/selection.json +++ b/app/lib/selection.json @@ -1 +1 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M502.627 142.69c12.915-3.408 26.509-3.289 39.363 0.345l245.194 69.317c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.145-184.394 520.422-272.611 580.214-33.053 22.403-75.28 22.474-108.416 0.259-88.758-59.504-300.1-238.589-276.51-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.724-69.849zM524.579 204.621c-1.837-0.519-3.779-0.536-5.622-0.049l-264.725 69.849c-4.4 1.161-6.999 4.775-7.233 8.165-21.305 308.166 168.214 468.531 248.301 522.218 11.507 7.715 25.434 7.677 36.87-0.077 79.379-53.798 266.835-214.288 244.685-522.649-0.243-3.358-2.787-6.925-7.082-8.139l-245.194-69.317z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["set-as-moderator"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":245,"id":214,"name":"shield","prevSize":32,"code":59661},"setIdx":0,"setId":0,"iconIdx":0},{"icon":{"paths":["M864 512c0-86.89-31.482-166.429-83.664-227.826l-496.162 496.162c61.397 52.182 140.937 83.664 227.826 83.664 194.403 0 352-157.597 352-352zM239.349 734.65l495.3-495.3c-60.662-49.597-138.182-79.349-222.65-79.349-194.404 0-352 157.596-352 352 0 84.467 29.753 161.987 79.349 222.65zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["ignore"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":246,"id":213,"name":"ignore","prevSize":32,"code":59740},"setIdx":0,"setId":0,"iconIdx":1},{"icon":{"paths":["M819.2 204.8v614.4h-614.4v-614.4h614.4zM204.8 128c-42.415 0-76.8 34.385-76.8 76.8v614.4c0 42.416 34.385 76.8 76.8 76.8h614.4c42.416 0 76.8-34.384 76.8-76.8v-614.4c0-42.415-34.384-76.8-76.8-76.8h-614.4z"],"attrs":[{"fill":"rgb(203, 206, 209)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox-unchecked"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":8}]}},"attrs":[{"fill":"rgb(203, 206, 209)"}],"properties":{"order":242,"id":212,"name":"checkbox-unchecked","prevSize":32,"code":59648},"setIdx":0,"setId":0,"iconIdx":2},{"icon":{"paths":["M204.8 128h614.4c42.416 0 76.8 34.385 76.8 76.8v614.4c0 42.416-34.384 76.8-76.8 76.8h-614.4c-42.415 0-76.8-34.384-76.8-76.8v-614.4c0-42.415 34.385-76.8 76.8-76.8zM769.062 336.88c9.322-9.424 9.238-24.619-0.182-33.941-9.424-9.322-24.621-9.241-33.942 0.182l-339.085 342.745-106.782-108.051c-9.317-9.43-24.513-9.52-33.94-0.202s-9.518 24.512-0.201 33.939l123.842 125.318c4.509 4.56 10.653 7.126 17.066 7.13s12.557-2.563 17.069-7.12l356.157-360z"],"attrs":[{"fill":"rgb(29, 116, 245)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox-checked"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":5}]}},"attrs":[{"fill":"rgb(29, 116, 245)"}],"properties":{"order":243,"id":211,"name":"checkbox-checked","prevSize":32,"code":59649},"setIdx":0,"setId":0,"iconIdx":3},{"icon":{"paths":["M862.454 324.045c-35.2-60.31-82.944-108.057-143.248-143.253-60.314-35.198-126.16-52.792-197.581-52.792-71.414 0-137.28 17.6-197.581 52.792-60.31 35.194-108.053 82.943-143.253 143.253-35.194 60.307-52.792 126.166-52.792 197.571 0 85.77 25.024 162.899 75.086 231.405 50.056 68.509 114.721 115.917 193.989 142.224 9.229 1.712 16.058 0.509 20.499-3.584 4.442-4.096 6.662-9.226 6.662-15.37 0-1.024-0.090-10.246-0.259-27.674-0.176-17.43-0.259-32.637-0.259-45.61l-11.789 2.038c-7.517 1.379-16.998 1.962-28.445 1.795-11.443-0.16-23.322-1.357-35.619-3.587-12.304-2.211-23.747-7.334-34.342-15.366-10.588-8.029-18.104-18.538-22.547-31.514l-5.125-11.795c-3.416-7.853-8.795-16.573-16.142-26.134-7.348-9.571-14.778-16.058-22.294-19.475l-3.588-2.57c-2.391-1.706-4.61-3.766-6.662-6.154-2.050-2.39-3.585-4.781-4.61-7.174-1.027-2.397-0.176-4.365 2.562-5.907 2.738-1.539 7.685-2.288 14.864-2.288l10.247 1.53c6.834 1.37 15.287 5.462 25.371 12.298 10.078 6.835 18.363 15.715 24.856 26.646 7.863 14.013 17.335 24.688 28.445 32.038 11.101 7.347 22.294 11.014 33.568 11.014s21.011-0.854 29.216-2.557c8.192-1.709 15.882-4.275 23.062-7.69 3.075-22.902 11.446-40.499 25.11-52.797-19.475-2.045-36.982-5.13-52.534-9.226-15.542-4.106-31.603-10.765-48.173-20-16.579-9.222-30.331-20.672-41.262-34.333-10.932-13.67-19.905-31.613-26.904-53.818-7.003-22.214-10.505-47.837-10.505-76.88 0-41.35 13.5-76.541 40.493-105.584-12.645-31.088-11.451-65.939 3.585-104.55 9.908-3.079 24.606-0.768 44.078 6.916 19.478 7.689 33.738 14.275 42.797 19.736 9.059 5.46 16.317 10.087 21.786 13.837 31.782-8.88 64.582-13.322 98.406-13.322s66.63 4.442 98.416 13.322l19.475-12.295c13.318-8.204 29.046-15.722 47.142-22.556 18.112-6.83 31.958-8.712 41.53-5.633 15.37 38.612 16.739 73.46 4.093 104.548 26.992 29.046 40.496 64.243 40.496 105.587 0 29.043-3.514 54.746-10.506 77.13-7.002 22.387-16.051 40.314-27.152 53.818-11.114 13.501-24.957 24.864-41.526 34.083-16.573 9.226-32.637 15.888-48.179 19.99-15.552 4.102-33.059 7.187-52.534 9.238 17.763 15.37 26.646 39.632 26.646 72.774v108.134c0 6.141 2.134 11.27 6.41 15.37 4.272 4.090 11.018 5.296 20.243 3.581 79.28-26.304 143.946-73.712 194-142.224 50.048-68.502 75.082-145.632 75.082-231.405-0.019-71.395-17.626-137.248-52.803-197.555z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["github-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":152,"id":210,"name":"github-monochromatic","prevSize":32,"code":59650},"setIdx":0,"setId":0,"iconIdx":4},{"icon":{"paths":["M133.618 423.61h215.092l-92.537-284.607c-4.74-14.67-25.504-14.67-30.244 0l-92.311 284.607zM86.899 567.171l46.72-143.546h737.133l46.72 143.546c4.288 13.088-0.451 27.533-11.51 35.434l-403.776 293.408-403.776-293.408c-11.060-7.901-15.799-22.346-11.511-35.434zM655.661 423.61h215.091l-92.31-284.607c-4.739-14.67-25.504-14.67-30.243 0l-92.538 284.607z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["gitlab-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":153,"id":209,"name":"gitlab-monochromatic","prevSize":32,"code":59651},"setIdx":0,"setId":0,"iconIdx":5},{"icon":{"paths":["M658.794 338.154c-39.798-38.052-90.416-57.426-146.794-57.426-100.016 0-184.669 67.548-214.865 158.313l-0.002-0.003c-7.679 23.040-12.042 47.648-12.042 72.957s4.364 49.92 12.044 72.96l0 0.003c30.196 90.765 114.849 158.314 214.865 158.314 51.664 0 95.651-13.613 130.035-36.653v-0.016c40.669-27.229 67.725-67.898 76.627-115.898h-206.662v-148.538h361.658c4.538 25.136 6.982 51.315 6.982 78.547 0 116.944-41.891 215.389-114.502 282.24v0.013c-63.533 58.646-150.458 93.030-254.138 93.030-150.109 0-279.971-86.048-343.156-211.549l-0-0.003c-26.007-51.84-40.844-110.49-40.844-172.451 0-61.965 14.836-120.611 40.844-172.451h0.004c63.187-125.495 193.047-211.542 343.153-211.542 103.504 0 190.429 38.051 256.931 100.014l-110.138 110.139z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["google-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":154,"id":208,"name":"google-monochromatic","prevSize":32,"code":59652},"setIdx":0,"setId":0,"iconIdx":6},{"icon":{"paths":["M840.541 128c31.318 0 56.813 24.79 56.813 55.383v657.212c0 30.592-25.494 55.427-56.813 55.427h-654.546c-31.254 0-56.642-24.835-56.642-55.427v-657.212c0-30.593 25.387-55.383 56.642-55.383h654.546zM300.196 233.75c-36.588 0-66.093 29.59-66.093 66.050 0 36.482 29.505 66.072 66.093 66.072 36.437 0 66.005-29.59 66.005-66.072 0-36.46-29.568-66.050-66.005-66.050zM243.148 782.461h114.029v-366.515h-114.029v366.515zM537.814 415.923h-109.187v366.515h113.773v-181.274c0-47.83 9.046-94.147 68.333-94.147 58.454 0 59.181 54.678 59.181 97.174v178.246h113.901v-201.008c0-98.714-21.312-174.598-136.666-174.598-55.402 0-92.566 30.381-107.757 59.203h-1.578v-50.112z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["linkedin-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":155,"id":207,"name":"linkedin-monochromatic","prevSize":32,"code":59653},"setIdx":0,"setId":0,"iconIdx":7},{"icon":{"paths":["M86.686 85.336l730.792 774.088c0 0 24.899 17.558 43.936-2.928 19.040-20.486 4.394-40.973 4.394-40.973l-779.122-730.187zM318.080 158.503l556.516 599.955c0 0 24.896 17.558 43.936-2.928 19.037-20.486 4.394-40.973 4.394-40.973l-604.845-556.054zM712.035 915.030l-556.517-599.955 604.843 556.054c0 0 14.646 20.486-4.39 40.973-19.040 20.486-43.936 2.928-43.936 2.928zM513.693 221.419l388.803 419.15c0 0 17.395 12.269 30.694-2.042 13.302-14.314 3.069-28.627 3.069-28.627l-422.566-388.482zM597.878 915.677l-388.805-419.152 422.568 388.48c0 0 10.234 14.314-3.069 28.627-13.302 14.31-30.694 2.045-30.694 2.045zM713.498 312.143l176.221 190.551c0 0 8.605 5.747 15.184-0.96 6.579-6.704 1.517-13.411 1.517-13.411l-192.922-176.18zM482.582 880.23l-176.219-190.55 192.923 176.179c0 0 5.059 6.707-1.52 13.414-6.579 6.704-15.184 0.957-15.184 0.957z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["meteor-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":156,"id":206,"name":"meteor-monochromatic","prevSize":32,"code":59654},"setIdx":0,"setId":0,"iconIdx":8},{"icon":{"paths":["M378.861 853.331c317.456 0 491.091-262.662 491.091-490.442 0-7.462 0-14.89-0.506-22.282 33.779-24.401 62.938-54.614 86.112-89.224-31.501 13.94-64.918 23.082-99.136 27.12 36.032-21.542 62.998-55.424 75.882-95.34-33.878 20.078-70.944 34.228-109.597 41.839-53.501-56.814-138.515-70.72-207.37-33.919-68.851 36.801-104.426 115.155-86.768 191.127-138.774-6.947-268.074-72.409-355.715-180.093-45.811 78.76-22.412 179.517 53.436 230.1-27.467-0.813-54.335-8.214-78.337-21.574 0 0.704 0 1.443 0 2.182 0.022 82.051 57.937 152.723 138.47 168.97-25.41 6.922-52.071 7.933-77.933 2.957 22.611 70.218 87.409 118.32 161.25 119.706-61.116 47.968-136.616 74.010-214.35 73.933-13.732-0.026-27.452-0.858-41.087-2.486 78.931 50.586 170.772 77.418 264.557 77.293z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["twitter-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":157,"id":205,"name":"twitter-monochromatic","prevSize":32,"code":59655},"setIdx":0,"setId":0,"iconIdx":9},{"icon":{"paths":["M512 928c-14.218 0-28.275-0.714-42.144-2.112-16.694-1.68-30.557-12.528-36.688-27.395l-40.538-98.304-98.162 40.838c-14.837 6.173-32.3 4.048-45.292-6.554-21.838-17.818-41.831-37.811-59.65-59.648-10.601-12.992-12.726-30.454-6.553-45.293l40.839-98.16-98.307-40.541c-14.864-6.131-25.714-19.994-27.395-36.688-1.396-13.869-2.111-27.926-2.111-42.144 0-14.214 0.714-28.275 2.11-42.141 1.681-16.694 12.531-30.557 27.395-36.688l98.308-40.541-40.84-98.163c-6.173-14.837-4.047-32.3 6.553-45.292 17.818-21.838 37.81-41.83 59.648-59.648 12.992-10.6 30.455-12.726 45.292-6.553l98.165 40.84 40.541-98.309c6.128-14.865 19.994-25.714 36.688-27.395 13.866-1.396 27.926-2.11 42.141-2.11s28.275 0.714 42.141 2.11c16.694 1.681 30.56 12.531 36.688 27.395l40.541 98.309 98.163-40.84c14.838-6.173 32.301-4.047 45.293 6.553 21.837 17.818 41.83 37.81 59.648 59.648 10.602 12.992 12.726 30.455 6.554 45.292l-40.842 98.163 98.31 40.541c14.864 6.131 25.712 19.994 27.392 36.688 1.398 13.866 2.112 27.926 2.112 42.141 0 14.218-0.714 28.275-2.112 42.144-1.68 16.694-12.528 30.557-27.395 36.688l-98.307 40.541 40.842 98.16c6.173 14.838 4.045 32.301-6.554 45.293-17.821 21.837-37.811 41.83-59.651 59.648-12.992 10.602-30.454 12.726-45.29 6.554l-98.163-40.838-40.538 98.304c-6.131 14.867-19.994 25.715-36.688 27.395-13.869 1.398-27.93 2.112-42.144 2.112zM444.451 757.984l43.386 105.2c7.981 0.541 16.038 0.816 24.163 0.816s16.182-0.275 24.163-0.816l43.382-105.2c9.456-22.925 35.731-33.808 58.627-24.285l105.056 43.709c12.157-10.602 23.578-22.022 34.179-34.179l-43.709-105.056c-9.526-22.893 1.36-49.171 24.282-58.624l105.203-43.386c0.541-7.978 0.816-16.038 0.816-24.163s-0.275-16.182-0.816-24.16l-105.203-43.386c-22.922-9.453-33.808-35.731-24.282-58.624l43.709-105.060c-10.602-12.156-22.022-23.577-34.176-34.177l-105.059 43.708c-22.896 9.525-49.171-1.359-58.627-24.283l-43.382-105.204c-7.981-0.54-16.038-0.815-24.163-0.815s-16.182 0.275-24.163 0.815l-43.386 105.204c-9.453 22.924-35.728 33.808-58.624 24.283l-105.058-43.708c-12.156 10.6-23.577 22.021-34.177 34.177l43.708 105.059c9.525 22.893-1.359 49.171-24.284 58.624l-105.203 43.386c-0.54 7.978-0.815 16.035-0.815 24.16 0 8.128 0.275 16.186 0.815 24.163l105.203 43.386c22.924 9.453 33.809 35.731 24.284 58.624l-43.708 105.056c10.601 12.157 22.022 23.578 34.178 34.179l105.056-43.709c22.896-9.523 49.171 1.36 58.624 24.285zM416 512c0-53.021 42.979-96 96-96s96 42.979 96 96c0 53.021-42.979 96-96 96s-96-42.979-96-96zM512 352c-88.365 0-160 71.635-160 160s71.635 160 160 160c88.365 0 160-71.635 160-160s-71.635-160-160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["administration"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":159,"id":203,"name":"administration","prevSize":32,"code":59657},"setIdx":0,"setId":0,"iconIdx":10},{"icon":{"paths":["M878.739 567.622c-41.853-41.136-161.235-29.824-220.925-22.282-59.005-35.997-98.458-85.706-126.243-158.73 13.379-55.194 34.646-139.185 18.525-191.98-14.41-89.82-129.674-80.907-146.141-20.227-15.094 55.195-1.373 131.988 24.013 230.034-34.304 81.936-85.421 191.984-121.441 255.062-68.611 35.312-161.235 89.821-174.957 158.384-11.321 54.166 89.194 189.238 261.063-106.96 76.845-25.37 160.547-56.566 234.65-68.909 64.835 34.97 140.65 58.282 191.421 58.282 87.478 0 96.054-96.678 60.035-132.675zM199.152 834.342c17.496-46.97 84.048-101.133 104.288-119.99-65.18 103.875-104.288 122.39-104.288 119.99zM479.082 180.918c25.386 0 22.986 110.047 6.176 139.873-15.094-47.653-14.752-139.873-6.176-139.873zM395.379 649.216c33.274-57.936 61.747-126.845 84.733-187.526 28.474 51.766 64.838 93.251 103.258 121.706-71.354 14.739-133.446 44.909-187.99 65.821zM846.835 632.074c0 0-17.152 20.57-127.958-26.739 120.413-8.912 140.307 18.512 127.958 26.739z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["adobe-reader-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":161,"id":201,"name":"adobe-reader-monochromatic","prevSize":32,"code":59658},"setIdx":0,"setId":0,"iconIdx":11},{"icon":{"paths":["M448 188.865c0 33.615 27.251 60.865 60.864 60.865 33.616 0 60.867-27.25 60.867-60.865s-27.251-60.865-60.867-60.865c-33.613 0-60.864 27.25-60.864 60.865zM384 188.865c0 59.026 40.957 108.485 96 121.512v77.745c-44.314 11.69-78.986 47.13-89.578 91.878h-80.045c-13.027-55.043-62.486-96-121.512-96-68.961 0-124.865 55.904-124.865 124.864 0 68.963 55.904 124.867 124.865 124.867 56.762 0 104.678-37.875 119.854-89.731h83.361c12.227 41.773 45.696 74.47 87.92 85.61v77.744c-55.043 13.027-96 62.486-96 121.51 0 68.963 55.904 124.867 124.864 124.867 68.963 0 124.867-55.904 124.867-124.867 0-56.762-37.875-104.675-89.731-119.853v-79.437c42.163-11.171 75.578-43.846 87.789-85.574h77.222c15.178 51.856 63.091 89.731 119.853 89.731 68.963 0 124.867-55.904 124.867-124.867 0-68.96-55.904-124.864-124.867-124.864-59.024 0-108.483 40.957-121.51 96h-73.907c-10.579-44.707-45.194-80.122-89.446-91.843v-79.438c51.856-15.176 89.731-63.092 89.731-119.854 0-68.961-55.904-124.865-124.867-124.865-68.96 0-124.864 55.904-124.864 124.865zM828.864 569.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867zM188.865 569.731c-33.615 0-60.865-27.251-60.865-60.867 0-33.613 27.25-60.864 60.865-60.864s60.865 27.251 60.865 60.864c0 33.616-27.25 60.867-60.865 60.867zM451.069 508.864c0 33.616 27.251 60.867 60.867 60.867 33.613 0 60.864-27.251 60.864-60.867 0-33.613-27.251-60.864-60.864-60.864-33.616 0-60.867 27.251-60.867 60.864zM508.864 889.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["all-contacts-in-channels"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":162,"id":200,"name":"all-contacts-in-channels","prevSize":32,"code":59659},"setIdx":0,"setId":0,"iconIdx":12},{"icon":{"paths":["M861.437 160c17.67 0 32 14.327 32 32s-14.33 32-32 32h-384c-17.674 0-32-14.327-32-32s14.326-32 32-32h384zM334.717 442.397c-24.962 0-45.197-20.237-45.197-45.2 0-24.96 20.236-45.197 45.197-45.197 24.963 0 45.2 20.237 45.2 45.197 0 24.963-20.237 45.2-45.2 45.2zM334.717 506.397c-60.308 0-109.197-48.89-109.197-109.2 0-60.307 48.89-109.197 109.197-109.197 60.31 0 109.2 48.89 109.2 109.197 0 60.31-48.89 109.2-109.2 109.2zM456.278 535.504c-18.288-4.899-37.504-5.2-55.939-0.88l-45.005 10.547c-13.194 3.091-26.947 2.877-40.036-0.63l-31.676-8.483c-19.669-5.27-40.384-5.562-60.154-0.928-55.68 13.050-95.468 62.781-95.468 120.179v34.752c0 42.906 34.783 77.686 77.689 77.686h258.057c42.906 0 77.69-34.781 77.69-77.686v-43.587c0-52-34.928-97.514-85.158-110.97zM414.944 596.934c8.166-1.914 16.675-1.779 24.774 0.39 22.246 5.958 37.718 26.118 37.718 49.149v43.587c0 7.558-6.131 13.686-13.69 13.686h-258.057c-7.56 0-13.689-6.128-13.689-13.686v-34.752c0-27.469 19.123-51.552 46.072-57.869 9.556-2.24 19.564-2.086 28.99 0.438l31.676 8.483c23.277 6.237 47.738 6.621 71.2 1.12l45.005-10.547zM893.437 512c0-17.674-14.33-32-32-32h-224c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.67 0 32-14.326 32-32zM861.437 640c17.67 0 32 14.326 32 32s-14.33 32-32 32h-192c-17.674 0-32-14.326-32-32s14.326-32 32-32h192zM893.437 352c0-17.674-14.33-32-32-32h-288c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.67 0 32-14.326 32-32zM861.437 800c17.67 0 32 14.326 32 32s-14.33 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32h256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["all-contacts-in-queue"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":163,"id":199,"name":"all-contacts-in-queue","prevSize":32,"code":59660},"setIdx":0,"setId":0,"iconIdx":13},{"icon":{"paths":["M523.571 295.385c33.133 0 74.669-22.133 99.402-51.645 22.4-26.745 38.733-64.095 38.733-101.445 0-5.072-0.467-10.144-1.402-14.294-36.864 1.383-81.2 24.439-107.798 55.334-21.002 23.517-40.134 60.406-40.134 98.218 0 5.533 0.934 11.067 1.402 12.911 2.333 0.461 6.067 0.922 9.798 0.922zM406.906 853.334c45.267 0 65.334-29.974 121.798-29.974 57.402 0 70 29.050 120.4 29.050 49.469 0 82.602-45.187 113.869-89.456 34.998-50.72 49.466-100.522 50.4-102.829-3.267-0.922-98-39.194-98-146.634 0-93.146 74.666-135.107 78.867-138.333-49.469-70.090-124.602-71.935-145.136-71.935-55.533 0-100.8 33.199-129.264 33.199-30.8 0-71.402-31.354-119.469-31.354-91.466 0-184.333 74.701-184.333 215.802 0 87.61 34.533 180.294 77 240.24 36.402 50.723 68.133 92.224 113.867 92.224z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["apple-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":236,"id":197,"name":"apple-monochromatic","prevSize":32,"code":59662},"setIdx":0,"setId":0,"iconIdx":14},{"icon":{"paths":["M498.694 141.561l-298.666 136.533c-11.39 5.207-18.696 16.58-18.696 29.103v386.844c0 11.818 6.513 22.675 16.941 28.237l298.667 159.286c9.411 5.021 20.707 5.021 30.118 0l298.666-159.286c10.429-5.562 16.941-16.419 16.941-28.237v-386.844c0-12.524-7.306-23.896-18.694-29.103l-298.666-136.533c-8.451-3.862-18.16-3.862-26.611 0zM245.333 357.011l234.667 107.277v335.709l-234.667-125.155v-317.83zM544 799.997l234.666-125.155v-317.83l-234.666 107.277v335.709zM512 408.544l-221.7-101.347 221.7-101.348 221.699 101.348-221.699 101.347z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["apps"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":166,"id":196,"name":"apps","prevSize":32,"code":59663},"setIdx":0,"setId":0,"iconIdx":15},{"icon":{"paths":["M374.627 297.372c-12.496-12.497-32.758-12.497-45.254 0l-192 192c-12.497 12.496-12.497 32.758 0 45.254l192 192c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-137.372-137.373h578.745v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-160c0-17.674-14.326-32-32-32h-610.745l137.372-137.373c12.496-12.496 12.496-32.758 0-45.255z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-back"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":167,"id":195,"name":"arrow-back","prevSize":32,"code":59664},"setIdx":0,"setId":0,"iconIdx":16},{"icon":{"paths":["M551.392 242.502c0.189-17.672 14.669-31.845 32.339-31.656 17.674 0.189 31.846 14.668 31.658 32.34l-1.318 123.489 193.44-193.439c12.496-12.497 32.755-12.497 45.254 0 12.496 12.497 12.496 32.758 0 45.255l-193.44 193.439 123.488-1.318c17.674-0.189 32.154 13.984 32.339 31.654 0.189 17.674-13.984 32.154-31.654 32.342l-201.92 2.154c-8.605 0.093-16.886-3.283-22.97-9.37-6.086-6.083-9.462-14.365-9.373-22.97l2.157-201.92zM475.981 782.147c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.342l1.318-123.488-193.438 193.44c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l193.438-193.44-123.488 1.318c-17.672 0.189-32.151-13.984-32.34-31.654-0.189-17.674 13.984-32.154 31.656-32.342l201.922-2.154c8.605-0.093 16.883 3.283 22.966 9.37 6.086 6.083 9.462 14.365 9.373 22.97l-2.157 201.92z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-collapse"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":168,"id":194,"name":"arrow-collapse","prevSize":32,"code":59665},"setIdx":0,"setId":0,"iconIdx":17},{"icon":{"paths":["M576 672c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.674 0 32-14.326 32-32v-208c0-17.674-14.326-32-32-32s-32 14.326-32 32v130.746l-233.373-233.373c-12.496-12.496-32.758-12.496-45.254 0l-73.373 73.373-169.372-169.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.759 0 45.255l192 192c12.496 12.496 32.758 12.496 45.254 0l73.373-73.373 210.746 210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-decrease"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":169,"id":193,"name":"arrow-decrease","prevSize":32,"code":59666},"setIdx":0,"setId":0,"iconIdx":18},{"icon":{"paths":["M329.373 550.627c-12.497-12.496-12.497-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373v-418.746c0-17.673 14.326-32 32-32s32 14.327 32 32v418.746l105.373-105.373c12.496-12.496 32.758-12.496 45.254 0s12.496 32.758 0 45.254l-160 160c-12.496 12.496-32.758 12.496-45.254 0l-160-160zM112 864c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-512c0-17.674-14.326-32-32-32h-96c-17.674 0-32 14.326-32 32s14.326 32 32 32h64v448h-704v-448h64c17.673 0 32-14.326 32-32s-14.327-32-32-32h-96c-17.673 0-32 14.326-32 32v512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-down-box"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":170,"id":192,"name":"arrow-down-box","prevSize":32,"code":59667},"setIdx":0,"setId":0,"iconIdx":19},{"icon":{"paths":["M865.139 512c0-194.404-157.802-352-352.464-352-194.66 0-352.464 157.596-352.464 352s157.804 352 352.464 352c194.662 0 352.464-157.597 352.464-352zM929.226 512c0 229.75-186.496 416-416.55 416-230.053 0-416.548-186.25-416.548-416s186.495-416 416.548-416c230.054 0 416.55 186.25 416.55 416zM695.178 571.37l-160.182 155.715c-12.438 12.093-32.259 12.093-44.701 0l-160.179-155.715c-12.682-12.33-12.955-32.589-0.611-45.251 12.342-12.666 32.63-12.938 45.309-0.611l105.789 102.842 0.003-276.349c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v276.349l105.789-102.842c12.682-12.326 32.966-12.054 45.309 0.611 12.346 12.662 12.070 32.922-0.608 45.251z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-down-circle"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":171,"id":191,"name":"arrow-down-circle","prevSize":32,"code":59668},"setIdx":0,"setId":0,"iconIdx":20},{"icon":{"paths":["M726.88 526.064c12.355 12.637 12.128 32.896-0.509 45.254l-191.968 187.715c-12.438 12.163-32.31 12.163-44.746 0l-191.97-187.715c-12.636-12.358-12.863-32.618-0.507-45.254 12.356-12.634 32.615-12.861 45.252-0.506l137.597 134.55v-372.109c0-17.673 14.33-32 32-32 17.674 0 32 14.327 32 32v372.109l137.6-134.55c12.634-12.355 32.896-12.128 45.251 0.506z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-down"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":172,"id":190,"name":"arrow-down","prevSize":32,"code":59669},"setIdx":0,"setId":0,"iconIdx":21},{"icon":{"paths":["M859.978 398.15c-0.189 17.67-14.666 31.843-32.339 31.654-17.67-0.189-31.846-14.666-31.658-32.339l1.318-123.488-193.437 193.437c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.755 0-45.254l193.437-193.437-123.488 1.318c-17.67 0.189-32.15-13.984-32.339-31.656s13.984-32.151 31.658-32.34l201.92-2.156c8.605-0.092 16.883 3.286 22.97 9.371 6.083 6.085 9.462 14.364 9.37 22.969l-2.157 201.922zM167.394 626.522c0.189-17.674 14.668-31.846 32.34-31.658s31.845 14.669 31.657 32.339l-1.319 123.488 193.438-193.437c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-193.438 193.437 123.489-1.318c17.67-0.189 32.15 13.984 32.339 31.658 0.189 17.67-13.984 32.15-31.658 32.339l-201.92 2.157c-8.605 0.093-16.884-3.286-22.969-9.37-6.085-6.086-9.463-14.365-9.371-22.97l2.156-201.92z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-expand"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":173,"id":189,"name":"arrow-expand","prevSize":32,"code":59670},"setIdx":0,"setId":0,"iconIdx":22},{"icon":{"paths":["M576 352c-17.674 0-32-14.326-32-32s14.326-32 32-32h224c17.674 0 32 14.327 32 32v208c0 17.674-14.326 32-32 32s-32-14.326-32-32v-130.746l-233.373 233.373c-12.496 12.496-32.758 12.496-45.254 0l-73.373-73.373-169.372 169.373c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l192-192c12.496-12.496 32.758-12.496 45.254 0l73.373 73.373 210.746-210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-increase"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":174,"id":188,"name":"arrow-increase","prevSize":32,"code":59671},"setIdx":0,"setId":0,"iconIdx":23},{"icon":{"paths":["M297.766 105.372c12.513-12.497 32.801-12.497 45.316 0 12.512 12.497 12.512 32.758 0 45.255l-105.513 105.372h611.551c17.699 0 32.045 14.327 32.045 32v112c0 17.674-14.346 32-32.045 32-17.696 0-32.042-14.326-32.042-32v-80h-579.51l105.513 105.373c12.512 12.496 12.512 32.758 0 45.254-12.515 12.496-32.803 12.496-45.316 0l-160.212-160c-12.513-12.497-12.513-32.758 0-45.255l160.212-160zM711.568 918.627c-12.515 12.496-32.803 12.496-45.315 0-12.515-12.496-12.515-32.758 0-45.254l105.51-105.373h-611.552c-17.696 0-32.042-14.326-32.042-32v-112c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v80h579.509l-105.51-105.373c-12.515-12.496-12.515-32.758 0-45.254 12.512-12.496 32.8-12.496 45.315 0l160.211 160c12.512 12.496 12.512 32.758 0 45.254l-160.211 160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-looping"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":175,"id":187,"name":"arrow-looping","prevSize":32,"code":59672},"setIdx":0,"setId":0,"iconIdx":24},{"icon":{"paths":["M374.627 769.296c-12.496 12.496-32.758 12.496-45.254 0l-192-192c-12.497-12.496-12.497-32.758 0-45.254l192-192c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-137.372 137.373h578.745v-192h-192c-17.674 0-32-14.328-32-32.001s14.326-32 32-32h224c17.674 0 32 14.327 32 32v256.001c0 17.674-14.326 32-32 32h-610.745l137.372 137.373c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-return"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":176,"id":186,"name":"arrow-return","prevSize":32,"code":59673},"setIdx":0,"setId":0,"iconIdx":25},{"icon":{"paths":["M694.627 473.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373v418.746c0 17.674-14.326 32-32 32s-32-14.326-32-32v-418.746l-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.497-32.758 0-45.254l160-160c12.496-12.497 32.758-12.497 45.254 0l160 160zM912 160c0-17.673-14.326-32-32-32h-768c-17.673 0-32 14.327-32 32v512c0 17.674 14.327 32 32 32h96c17.673 0 32-14.326 32-32s-14.327-32-32-32h-64v-448h704v448h-64c-17.674 0-32 14.326-32 32s14.326 32 32 32h96c17.674 0 32-14.326 32-32v-512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-up-box"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":177,"id":185,"name":"arrow-up-box","prevSize":32,"code":59674},"setIdx":0,"setId":0,"iconIdx":26},{"icon":{"paths":["M297.181 498.090c-12.356-12.634-12.129-32.896 0.507-45.251l191.97-187.717c12.435-12.161 32.307-12.161 44.746 0l191.968 187.717c12.637 12.355 12.864 32.618 0.509 45.251-12.355 12.637-32.618 12.864-45.251 0.509l-137.6-134.55v372.109c0 17.674-14.326 32-32 32-17.67 0-32-14.326-32-32v-372.109l-137.597 134.55c-12.637 12.355-32.895 12.128-45.251-0.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow-up"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":178,"id":184,"name":"arrow-up","prevSize":32,"code":59675},"setIdx":0,"setId":0,"iconIdx":27},{"icon":{"paths":["M482.323 229.047c19.77-23.932 49.891-36.827 80.854-34.615l143.933 10.281c42.051 3.004 77.222 33.091 86.704 74.17l30.349 131.517c6.643 28.787-0.336 59.027-18.925 81.99l-252.368 311.744c-11.12 13.738-31.267 15.859-45.005 4.739s-15.856-31.27-4.736-45.008l252.365-311.744c6.195-7.654 8.522-17.734 6.307-27.331l-30.349-131.517c-3.162-13.693-14.883-23.722-28.902-24.723l-143.933-10.281c-10.323-0.737-20.362 3.561-26.95 11.538l-266 322c-5.438 6.582-8.020 15.066-7.17 23.562l7.581 75.814c1.636 16.358 15.401 28.816 31.841 28.816h104.305c9.44 0 18.397-4.166 24.477-11.386l227.594-270.269-10.048-70.346h-69.258l-230.406 276.486c-11.312 13.578-31.492 15.411-45.068 4.096-13.577-11.312-15.411-31.491-4.097-45.069l230.404-276.483c12.16-14.593 30.173-23.029 49.168-23.029h69.258c31.85 0 58.851 23.42 63.357 54.949l10.048 70.346c2.579 18.045-2.659 36.333-14.4 50.275l-227.594 270.266c-18.243 21.661-45.114 34.163-73.434 34.163h-104.305c-49.32 0-90.616-37.373-95.524-86.448l-7.581-75.811c-2.549-25.491 5.196-50.944 21.511-70.694l265.998-321.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["attach"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":179,"id":183,"name":"attach","prevSize":32,"code":59676},"setIdx":0,"setId":0,"iconIdx":28},{"icon":{"paths":["M866.128 153.127c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.245c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.245c12.496-12.497 12.496-32.758 0-45.255zM674.643 480.358l55.92-55.923c16.259 79.565 14.515 161.866-5.229 240.842l-11.622 46.49c-4.288 17.146-21.661 27.571-38.806 23.283-17.146-4.285-27.568-21.661-23.283-38.806l11.622-46.486c13.875-55.507 17.677-112.874 11.398-169.398zM817.162 385.923l-11.312-36.771 51.203-51.206 21.28 69.155c33.344 108.368 31.994 224.445-3.859 332.010l-33.45 100.342c-5.587 16.765-23.709 25.827-40.477 20.24-16.765-5.59-25.827-23.712-20.237-40.48l33.446-100.339c31.635-94.912 32.826-197.334 3.405-292.95zM490.666 664.333l64-64v210.346c0 23.562-19.101 42.666-42.666 42.666h-85.334c-35.459 0-68.394-10.816-95.683-29.325l46.611-46.611c14.701 7.629 31.395 11.936 49.072 11.936h64v-125.011zM128 682.678c0 19.738 13.403 36.346 31.604 41.216l62.552-62.55h-30.156v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v158.155l64-64v-115.488c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["audio-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":180,"id":182,"name":"audio-disabled","prevSize":32,"code":59677},"setIdx":0,"setId":0,"iconIdx":29},{"icon":{"paths":["M310.99 661.344h-118.99v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v554.667h-64c-49.613 0-91.466-33.933-103.309-79.952l-12.367-48.048zM170.667 725.344h90.71c18.946 73.61 85.766 128 165.289 128h85.334c23.565 0 42.666-19.104 42.666-42.666v-597.335c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334c0 23.562 19.103 42.666 42.667 42.666zM886.627 393.373c12.496 12.496 12.496 32.758 0 45.254l-73.373 73.373 73.373 73.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-73.373-73.373-73.373 73.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l73.373-73.373-73.373-73.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l73.373 73.373 73.373-73.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["audio-unavailable"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":181,"id":181,"name":"audio-unavailable","prevSize":32,"code":59678},"setIdx":0,"setId":0,"iconIdx":30},{"icon":{"paths":["M300.1 631.12h-113.433v-280.89h113.433l12.366-48.048c11.054-42.953 50.123-74.619 96.423-74.619h58.666v526.223h-58.666c-46.301 0-85.37-31.667-96.423-74.621l-12.366-48.045zM163.556 695.12h86.931c18.156 70.541 82.192 122.666 158.403 122.666h81.776c22.582 0 40.89-18.307 40.89-40.89v-572.444c0-22.582-18.307-40.889-40.89-40.889h-81.776c-76.211 0-140.247 52.124-158.403 122.667h-86.931c-22.582 0-40.889 18.306-40.889 40.89v327.11c0 22.582 18.307 40.89 40.889 40.89zM646.461 316.515c17.146-4.286 34.518 6.138 38.806 23.284l11.136 44.55c20.81 83.229 20.81 170.301 0 253.533l-11.136 44.55c-4.288 17.146-21.661 27.568-38.806 23.283-17.146-4.288-27.571-21.661-23.283-38.806l11.136-44.55c18.262-73.040 18.262-149.45 0.003-222.486l-11.139-44.55c-4.288-17.146 6.138-34.522 23.283-38.807zM807.472 235.936c-5.197-16.892-23.104-26.372-39.994-21.174-16.893 5.197-26.371 23.104-21.174 39.996l35.536 115.489c28.112 91.37 26.976 189.242-3.254 279.933l-32.054 96.16c-5.59 16.765 3.472 34.886 20.237 40.477 16.768 5.587 34.89-3.472 40.48-20.24l32.051-96.16c34.448-103.344 35.747-214.87 3.709-318.989l-35.536-115.491z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["audio"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":182,"id":180,"name":"audio","prevSize":32,"code":59679},"setIdx":0,"setId":0,"iconIdx":31},{"icon":{"paths":["M418.704 128c-35.344 0-64 28.654-64 64v226.637c20.774-2.822 42.134-3.456 64-1.526v-225.11h176v180.707c0 35.344 28.656 64 64 64h176v331.293h-120.554c-17.155 22.179-36.323 43.869-57.312 64h177.866c35.347 0 64-28.653 64-64v-363.293c0-6.413-1.923-12.675-5.526-17.978l-156.63-230.681c-11.914-17.544-31.741-28.049-52.947-28.049h-264.896zM658.704 372.707v-180.707h24.896l122.698 180.707h-147.594zM167.939 668.547c120.524 156.138 218.24 174.586 285.133 158.739 73.293-17.36 139.232-81.648 183.466-151.763-115.155-155.869-211.581-174.589-279.149-158.915-74.362 17.251-142.707 81.683-189.45 151.939zM104.428 649.037c100.621-162.8 337.62-357.19 593.252 1.789 9.072 12.739 10.32 29.818 2.422 43.315-95.27 162.854-326.394 358.346-593.234-0.224-9.745-13.094-11.022-30.995-2.44-44.88zM401.664 735.994c31.514 0 60.269-26.858 60.269-64 0-37.146-28.755-64-60.269-64-31.51 0-60.266 26.854-60.266 64 0 37.142 28.755 64 60.266 64zM401.664 799.994c68.634 0 124.269-57.309 124.269-128 0-70.694-55.635-128-124.269-128-68.63 0-124.267 57.306-124.267 128 0 70.691 55.636 128 124.267 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["auditing"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":183,"id":179,"name":"auditing","prevSize":32,"code":59680},"setIdx":0,"setId":0,"iconIdx":32},{"icon":{"paths":["M224 224c-17.673 0-32 14.327-32 32v544c0 17.674 14.327 32 32 32h544c17.674 0 32-14.326 32-32v-544c0-17.673-14.326-32-32-32h-544zM128 256c0-53.019 42.981-96 96-96h544c53.021 0 96 42.981 96 96v544c0 53.021-42.979 96-96 96h-544c-53.019 0-96-42.979-96-96v-544zM608 460.813c0 41.798-26.714 77.357-64 90.538v133.462h-64v-133.462c-37.286-13.181-64-48.739-64-90.538 0-53.021 42.979-96 96-96s96 42.979 96 96zM608 588.826c38.861-29.19 64-75.667 64-128.013 0-88.365-71.635-160-160-160s-160 71.636-160 160c0 52.346 25.139 98.822 64 128.013v127.987c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-127.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["auth"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":184,"id":178,"name":"auth","prevSize":32,"code":59681},"setIdx":0,"setId":0,"iconIdx":33},{"icon":{"paths":["M513.35 554.019c66.467 0 120.349-52.493 120.349-117.242 0-64.752-53.882-117.243-120.349-117.243-66.464 0-120.346 52.491-120.346 117.243 0 64.749 53.882 117.242 120.346 117.242zM513.35 490.019c-32.704 0-56.346-25.405-56.346-53.242 0-27.84 23.642-53.242 56.346-53.242 32.707 0 56.349 25.402 56.349 53.242 0 27.837-23.642 53.242-56.349 53.242z","M365.478 894.144h-172.126c-17.673 0-32-14.33-32-32v-702.144c0-17.673 14.327-32 32-32h640.001c17.674 0 32 14.327 32 32v702.144c0 17.67-14.326 32-32 32h-172.128c-6.24 1.274-12.701 1.942-19.318 1.942h-257.11c-6.618 0-13.078-0.669-19.318-1.942zM225.353 830.144h68.244c-3.114-9.456-4.799-19.558-4.799-30.058v-93.446c0-56.109 37.881-105.142 92.172-119.309 19.171-5.002 39.264-5.312 58.579-0.902l42.778 9.766c20.051 4.579 40.909 4.259 60.81-0.934l28.070-7.325c20.694-5.398 42.384-5.734 63.232-0.973 60.534 13.821 103.469 67.664 103.469 129.754v83.37c0 10.499-1.686 20.602-4.8 30.058h68.246v-638.144h-576.001v638.144zM652.918 830.144c12.246-4.49 20.989-16.253 20.989-30.058v-83.37c0-32.234-22.288-60.186-53.715-67.36-10.822-2.47-22.083-2.298-32.826 0.506l-28.070 7.325c-29.853 7.789-61.139 8.272-91.216 1.405l-42.774-9.766c-9.293-2.122-18.957-1.974-28.176 0.432-26.112 6.813-44.333 30.397-44.333 57.382v93.446c0 13.805 8.742 25.568 20.989 30.058h279.133z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["avatar"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":185,"id":177,"name":"avatar","prevSize":32,"code":59682},"setIdx":0,"setId":0,"iconIdx":34},{"icon":{"paths":["M737.779 361.376c12.499 12.496 12.499 32.758 0 45.254l-110.947 110.95 110.947 110.947c12.499 12.496 12.499 32.758 0 45.254-12.496 12.499-32.758 12.499-45.254 0l-110.947-110.947-110.95 110.947c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.758 0-45.254l110.95-110.947-110.95-110.95c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l110.95 110.95 110.947-110.95c12.496-12.496 32.758-12.496 45.254 0z","M312.246 218.073c12.061-16.393 31.2-26.073 51.552-26.073h468.202c35.347 0 64 28.654 64 64v512c0 35.347-28.653 64-64 64h-468.202c-20.352 0-39.491-9.68-51.552-26.074l-188.343-256c-16.598-22.56-16.598-53.293 0-75.853l188.343-256.001zM363.798 256l-188.343 256 188.343 256h468.202v-512h-468.202z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["backspace"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":186,"id":176,"name":"backspace","prevSize":32,"code":59683},"setIdx":0,"setId":0,"iconIdx":35},{"icon":{"paths":["M376 775.418c-13.254 0-24-10.746-24-24v-469.168c0-13.255 10.746-24 24-24h145.075c56.118 0 98.269 11.603 126.448 34.809 28.416 23.206 42.624 57.542 42.624 103.008 0 24.154-6.867 45.584-20.602 64.291-13.734 18.47-32.442 32.794-56.122 42.976 27.942 7.814 49.965 22.733 66.067 44.755 16.339 21.786 24.509 47.834 24.509 78.144 0 46.413-15.037 82.88-45.11 109.402s-72.579 39.782-127.517 39.782h-155.373zM420.198 533.526v186.125h112.595c31.731 0 56.714-8.17 74.947-24.509 18.47-16.576 27.706-39.309 27.706-68.198 0-62.278-33.862-93.418-101.587-93.418h-113.661zM420.198 478.829h103.008c29.834 0 53.632-7.459 71.392-22.378 17.997-14.918 26.995-35.165 26.995-60.739 0-28.416-8.288-49.018-24.864-61.805-16.576-13.024-41.795-19.536-75.654-19.536h-100.877v164.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["bold"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":187,"id":175,"name":"bold","prevSize":32,"code":59684},"setIdx":0,"setId":0,"iconIdx":36},{"icon":{"paths":["M352 445.437c0-17.67 14.326-32 32-32h256c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M352 322.557c0-17.672 14.326-31.999 32-31.999h256c17.674 0 32 14.327 32 31.999 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M864 679.68c0 17.674-14.326 32-32 32h-18.509c-8.218 40.547-8.218 82.333 0 122.88h19.789c16.966 0 30.72 13.754 30.72 30.72s-13.754 30.72-30.72 30.72h-545.28c-70.692 0-128-55.014-128-122.88v-453.12c0-106.038 85.961-192 192-192h480c17.674 0 32 14.327 32 32v519.68zM748.419 834.56c-6.787-40.678-6.787-82.202 0-122.88h-460.419c-35.346 0-64 27.507-64 61.44s28.654 61.44 64 61.44h460.419zM224 647.68h576v-455.68h-448c-70.692 0-128 57.308-128 128v327.68z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["book"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":188,"id":174,"name":"book","prevSize":32,"code":59685},"setIdx":0,"setId":0,"iconIdx":37},{"icon":{"paths":["M224 224h320v576h-96v-112c0-8.835-7.165-16-16-16h-96c-8.835 0-16 7.165-16 16v112h-96v-576zM608 448h192v352h-192v-352zM832 384h-224v-192c0-17.673-14.326-32-32-32h-384c-17.673 0-32 14.327-32 32v640c0 17.674 14.327 32 32 32h640c17.674 0 32-14.326 32-32v-416c0-17.674-14.326-32-32-32zM304 288c-8.836 0-16 7.164-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.836-7.165-16-16-16h-32zM288 432c0-8.835 7.164-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.836 0-16-7.165-16-16v-32zM304 544c-8.836 0-16 7.165-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 304c0-8.836 7.165-16 16-16h32c8.835 0 16 7.164 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM432 416c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 560c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM688 512c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM672 656c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["business"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":189,"id":173,"name":"business","prevSize":32,"code":59686},"setIdx":0,"setId":0,"iconIdx":38},{"icon":{"paths":["M277.831 157.44c0-16.259 13.181-29.44 29.44-29.44s29.439 13.181 29.439 29.44v58.876h353.28v-58.876c0-16.259 13.181-29.44 29.44-29.44s29.44 13.181 29.44 29.44v58.876h85.76c17.674 0 32 14.327 32 32v583.68c0 17.674-14.326 32-32 32h-642.559c-17.673 0-32-14.326-32-32v-583.68c0-1.105 0.056-2.196 0.165-3.272 1.639-16.136 15.266-28.728 31.835-28.728h85.76v-58.876zM802.63 392.957h-578.559v407.040h578.559v-407.040zM425.034 644.474c0-8.835 7.162-16 16-16h26.88c8.835 0 16 7.165 16 16v26.88c0 8.838-7.165 16-16 16h-26.88c-8.838 0-16-7.162-16-16v-26.88zM323.27 510.72c-8.836 0-15.999 7.162-15.999 16v26.88c0 8.835 7.163 16 15.999 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.838-7.162-16-16-16h-26.88zM542.79 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM323.27 628.474c-8.835 0-15.999 7.165-15.999 16v26.88c0 8.838 7.164 16 15.999 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM542.79 644.474c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.838-7.162 16-16 16h-26.88c-8.835 0-16-7.162-16-16v-26.88zM441.030 510.72c-8.835 0-16 7.165-16 16v26.88c0 8.835 7.165 16 16 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM660.55 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM676.55 628.474c-8.835 0-16 7.165-16 16v26.88c0 8.838 7.165 16 16 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calendar"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":190,"id":172,"name":"calendar","prevSize":32,"code":59687},"setIdx":0,"setId":0,"iconIdx":39},{"icon":{"paths":["M866.128 153.126c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.246c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.246c12.496-12.497 12.496-32.758 0-45.255zM298.667 170.671c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999zM574.173 309.327h-403.506c-41.237 0-74.667 33.428-74.667 74.667v384c0 6.010 0.71 11.856 2.051 17.453l61.949-61.949v-339.504c0-5.891 4.776-10.666 10.667-10.666h339.506l64-64.001zM376.339 778.659h306.326c5.891 0 10.669-4.774 10.669-10.666v-85.334c0-11.373 6.038-21.891 15.859-27.629s21.949-5.83 31.856-0.243l97.83 55.162c2.531 1.427 4.858 3.194 6.912 5.248 6.72 6.72 18.208 1.962 18.208-7.542v-263.322c0-9.501-11.488-14.262-18.208-7.542-2.054 2.054-4.381 3.821-6.912 5.248l-97.83 55.162c-9.907 5.587-22.035 5.494-31.856-0.243-9.821-5.734-15.859-16.256-15.859-27.629v-7.661l110.778-73.498c47.418-41.99 123.888-8.701 123.888 56.163v263.322c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.378v30.554c0 41.238-33.43 74.666-74.669 74.666h-370.327l64.001-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["camera-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":191,"id":171,"name":"camera-disabled","prevSize":32,"code":59688},"setIdx":0,"setId":0,"iconIdx":40},{"icon":{"paths":["M288 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.674 0 32-14.327 32-32s-14.326-32-32-32h-256z","M170.667 341.328c-23.564 0-42.667 19.104-42.667 42.666v384c0 23.565 19.102 42.669 42.667 42.669h511.999c23.565 0 42.669-19.104 42.669-42.669v-128l97.83 97.83c26.877 26.88 72.835 7.843 72.835-30.17v-263.318c0-38.013-45.958-57.050-72.835-30.173l-97.83 97.83v-128c0-23.562-19.104-42.666-42.669-42.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["camera-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":192,"id":170,"name":"camera-filled","prevSize":32,"code":59689},"setIdx":0,"setId":0,"iconIdx":41},{"icon":{"paths":["M196.731 191.997c0-15.807 12.814-28.622 28.622-28.622h128.001c15.805 0 28.621 12.814 28.621 28.622s-12.816 28.621-28.621 28.621h-128.001c-15.807 0-28.622-12.814-28.622-28.621z","M737.354 559.997c0 97.203-78.8 176-176 176-97.203 0-176-78.797-176-176s78.797-176 176-176c97.2 0 176 78.797 176 176zM673.354 559.997c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112z","M193.353 255.997c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h640.001c35.344 0 64-28.653 64-64v-448c0-35.346-28.656-64-64-64h-640.001zM833.354 319.997v448h-640.001v-448h640.001z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["camera-photo"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":193,"id":169,"name":"camera-photo","prevSize":32,"code":59690},"setIdx":0,"setId":0,"iconIdx":42},{"icon":{"paths":["M298.667 170.672c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999z","M545.712 503.453c11.267-11.267 11.19-29.61-0.17-40.97s-29.706-11.437-40.973-0.17l-71.402 71.402-71.994-71.997c-11.363-11.36-29.706-11.437-40.973-0.17s-11.19 29.61 0.17 40.97l71.997 71.997-71.402 71.402c-11.266 11.267-11.19 29.61 0.17 40.97 11.363 11.36 29.706 11.437 40.973 0.17l71.402-71.402 71.997 71.997c11.36 11.36 29.702 11.437 40.97 0.17s11.19-29.61-0.17-40.97l-71.997-71.997 71.402-71.402z","M96 383.994c0-41.235 33.429-74.666 74.667-74.666h511.999c41.238 0 74.669 33.43 74.669 74.666v30.554l46.778-26.378c47.418-41.99 123.888-8.698 123.888 56.166v263.318c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.374v30.55c0 41.238-33.43 74.669-74.669 74.669h-511.999c-41.237 0-74.667-33.43-74.667-74.669v-384zM170.667 373.328c-5.891 0-10.667 4.774-10.667 10.666v384c0 5.891 4.776 10.669 10.667 10.669h511.999c5.891 0 10.669-4.778 10.669-10.669v-85.331c0-11.376 6.038-21.894 15.859-27.632s21.949-5.83 31.856-0.243l97.83 55.165c2.531 1.427 4.858 3.19 6.912 5.245 6.72 6.72 18.208 1.962 18.208-7.542v-263.318c0-9.504-11.488-14.262-18.208-7.546-2.054 2.058-4.381 3.821-6.912 5.248l-97.83 55.165c-9.907 5.587-22.035 5.494-31.856-0.243s-15.859-16.256-15.859-27.632v-85.334c0-5.891-4.778-10.666-10.669-10.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["camera-unavailable"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":194,"id":168,"name":"camera-unavailable","prevSize":32,"code":59691},"setIdx":0,"setId":0,"iconIdx":43},{"icon":{"paths":["M256 202.672c0-17.673 19.102-32 42.667-32h255.999c23.565 0 42.669 14.327 42.669 32s-19.104 32-42.669 32h-255.999c-23.564 0-42.667-14.327-42.667-32zM160 383.994c0-5.891 4.776-10.666 10.667-10.666h511.999c5.891 0 10.669 4.774 10.669 10.666v85.334c0 11.376 6.038 21.894 15.859 27.632s21.949 5.83 31.856 0.243l97.83-55.165c2.531-1.427 4.858-3.19 6.912-5.248 6.72-6.717 18.208-1.958 18.208 7.546v263.318c0 9.504-11.488 14.262-18.208 7.542-2.054-2.054-4.381-3.818-6.912-5.245l-97.83-55.165c-9.907-5.587-22.035-5.494-31.856 0.243s-15.859 16.256-15.859 27.632v85.331c0 5.891-4.778 10.669-10.669 10.669h-511.999c-5.891 0-10.667-4.778-10.667-10.669v-384zM170.667 309.328c-41.237 0-74.667 33.43-74.667 74.666v384c0 41.238 33.429 74.669 74.667 74.669h511.999c41.238 0 74.669-33.43 74.669-74.669v-30.55l46.778 26.374c47.418 41.99 123.888 8.701 123.888-56.163v-263.318c0-64.864-76.47-98.157-123.888-56.166l-46.778 26.378v-30.554c0-41.235-33.43-74.666-74.669-74.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["camera"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":195,"id":167,"name":"camera","prevSize":32,"code":59692},"setIdx":0,"setId":0,"iconIdx":44},{"icon":{"paths":["M224.248 304.026c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.702 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.152 83.731 244.197 93.958 91.965 10.218 193.27 1.446 273.306-15.482 40.022-8.461 73.616-18.733 97.443-29.075 9.245-4.013 16.438-7.786 21.734-11.126-2.464-1.565-5.446-3.306-9.002-5.197-9.222-4.912-19.779-9.578-30.733-14.368l-1.914-0.835c-9.667-4.221-20.47-8.941-28.656-13.517-14.835-8.298-29.389-17.734-40.006-27.776-5.222-4.941-11.165-11.571-15.146-19.827-4.208-8.742-7.226-21.792-1.306-35.597 31.978-74.621 47.178-115.494 54.538-142.483 6.874-25.2 6.874-37.888 6.874-58.064v-0.182c0-16.035-9.318-89.517-55.811-158.032-45.018-66.338-125.99-129.968-274.854-129.968-134.637 0-215.698 55.382-264.165 122.698zM172.309 266.63c60.333-83.796 160.606-149.302 316.103-149.302 171.136 0 271.494 75.037 327.811 158.032 54.842 80.819 66.854 167.338 66.854 193.968 0 22.384-0.022 41.696-9.126 75.088-8.131 29.805-23.485 70.928-51.946 137.923 5.261 4.166 13.072 9.306 23.36 15.062 5.315 2.97 13.485 6.55 24.963 11.568 10.653 4.659 23.437 10.266 35.174 16.515 11.258 5.994 24.416 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.056 15.168-16.794 25.939-26.576 33.094-10.63 7.776-23.818 14.762-38.253 21.030-29.008 12.589-67.030 23.962-109.683 32.982-85.309 18.038-193.581 27.587-293.616 16.474-99.955-11.107-202.74-44.634-278.468-108.71-76.833-65.011-123.811-159.994-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904zM493.744 320c17.674 0 32 14.326 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.674 14.326-32 32-32zM525.744 672c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["canned-response"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":196,"id":166,"name":"canned-response","prevSize":32,"code":59693},"setIdx":0,"setId":0,"iconIdx":45},{"icon":{"paths":["M193.352 181.331c-53.020 0-96 42.981-96 96v469.335c0 53.018 42.98 96 96 96h639.999c53.021 0 96-42.982 96-96v-469.335c0-53.019-42.979-96-96-96h-639.999zM161.352 277.331c0-17.673 14.327-32 32-32h639.999c17.674 0 32 14.327 32 32v202.673h-703.999v-202.673zM161.352 544.003h703.999v202.662c0 17.67-14.326 32-32 32h-639.999c-17.673 0-32-14.33-32-32v-202.662zM812.016 661.331c0-35.347-28.653-64-64-64-35.344 0-64 28.653-64 64s28.656 64 64 64c35.347 0 64-28.653 64-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["card"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":197,"id":165,"name":"card","prevSize":32,"code":59694},"setIdx":0,"setId":0,"iconIdx":46},{"icon":{"paths":["M338.704 304c0-97.202 78.8-176 176-176 97.203 0 176 78.798 176 176v142.477h16c53.021 0 96 42.979 96 96v257.523c0 53.021-42.979 96-96 96h-384c-53.018 0-95.999-42.979-95.999-96v-257.523c0-53.021 42.981-96 95.999-96h16v-142.477zM402.704 446.477h224v-142.477c0-61.856-50.144-112-112-112s-112 50.144-112 112v142.477zM322.704 510.477c-17.672 0-31.999 14.326-31.999 32v257.523c0 17.674 14.327 32 31.999 32h384c17.674 0 32-14.326 32-32v-257.523c0-17.674-14.326-32-32-32h-384z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["channel-private"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":198,"id":164,"name":"channel-private","prevSize":32,"code":59695},"setIdx":0,"setId":0,"iconIdx":47},{"icon":{"paths":["M336 128c17.674 0 32 14.327 32 32v144h288v-144c0-17.673 14.326-32 32-32s32 14.327 32 32v144h144c17.674 0 32 14.327 32 32s-14.326 32-32 32h-144v288h144c17.674 0 32 14.326 32 32s-14.326 32-32 32h-144v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-288v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-288h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-144c0-17.673 14.327-32 32-32zM368 368v288h288v-288h-288z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["channel-public"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":199,"id":163,"name":"channel-public","prevSize":32,"code":59696},"setIdx":0,"setId":0,"iconIdx":48},{"icon":{"paths":["M886.627 105.372c12.496 12.497 12.496 32.758 0 45.255l-89.373 89.372 89.373 89.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-89.373-89.372-89.373 89.372c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l89.373-89.373-89.373-89.372c-12.496-12.497-12.496-32.758 0-45.255s32.758-12.497 45.254 0l89.373 89.373 89.373-89.373c12.496-12.497 32.758-12.497 45.254 0zM226.501 304.042c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.701 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.151 83.731 244.196 93.958 91.968 10.218 193.27 1.446 273.309-15.482 40.019-8.461 73.613-18.733 97.44-29.075 9.245-4.013 16.438-7.786 21.738-11.126-2.467-1.565-5.446-3.306-9.005-5.2-9.222-4.909-19.776-9.574-30.733-14.365l-1.917-0.838c-9.667-4.221-20.47-8.938-28.653-13.517-14.835-8.294-29.389-17.731-40.003-27.773-5.226-4.941-11.168-11.571-15.146-19.827-4.211-8.742-7.226-21.792-1.309-35.6 42.086-98.205 54.957-137.722 59.219-163.318 2.906-17.434 19.392-29.21 36.822-26.307 17.434 2.906 29.213 19.389 26.307 36.822-5.453 32.749-20.333 76.41-58.006 165.088 5.261 4.166 13.069 9.306 23.357 15.059 5.315 2.973 13.485 6.554 24.963 11.571 10.656 4.656 23.437 10.266 35.174 16.515 11.261 5.994 24.419 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.053 15.168-16.794 25.939-26.576 33.094-10.627 7.776-23.814 14.762-38.253 21.027-29.005 12.592-67.027 23.965-109.68 32.986-85.312 18.038-193.584 27.587-293.616 16.47-99.955-11.104-202.742-44.63-278.471-108.707-76.833-65.014-123.811-159.997-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904 60.333-83.796 160.605-149.302 316.103-149.302 17.674 0 32 14.327 32 32s-14.326 32-32 32c-134.637 0-215.697 55.382-264.164 122.698z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chat-close"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":200,"id":162,"name":"chat-close","prevSize":32,"code":59697},"setIdx":0,"setId":0,"iconIdx":49},{"icon":{"paths":["M778 93.833c-11.795-13.162-32.026-14.271-45.187-2.477s-14.272 32.025-2.477 45.187l81.222 90.645h-216.358c-17.674 0-32 14.327-32 32s14.326 32 32 32h216.358l-81.222 90.646c-11.795 13.162-10.685 33.392 2.477 45.187 13.162 11.792 33.392 10.685 45.187-2.477l129.030-144.001c10.893-12.154 10.893-30.556 0-42.71l-129.030-144zM159.999 512.010c0-55.322 16.86-139.021 66.502-207.968 48.467-67.316 129.527-122.698 264.164-122.698 17.674 0 32-14.327 32-32s-14.326-32-32-32c-155.498 0-255.77 65.507-316.102 149.302-58.72 81.555-78.275 178.355-78.561 243.904-11.151 127.229 35.827 222.211 112.66 287.222 75.729 64.077 178.516 97.603 278.471 108.707 100.032 11.117 208.304 1.568 293.616-16.47 42.653-9.021 80.675-20.394 109.68-32.982 14.438-6.269 27.626-13.254 38.253-21.030 9.782-7.155 21.523-17.926 26.579-33.094 7.67-23.018-3.069-41.872-13.302-52.864-9.782-10.509-22.941-18.544-34.202-24.538-11.738-6.25-24.518-11.859-35.171-16.515-11.482-5.018-19.651-8.598-24.966-11.571-10.288-5.754-18.096-10.89-23.357-15.059 37.674-88.678 52.554-132.339 58.010-165.088 2.902-17.43-8.877-33.917-26.31-36.822-17.43-2.902-33.917 8.877-36.822 26.307-4.262 25.597-17.133 65.114-59.219 163.318-5.917 13.808-2.902 26.858 1.309 35.6 3.978 8.256 9.92 14.886 15.146 19.827 10.614 10.042 25.171 19.478 40.003 27.776 8.186 4.576 18.989 9.296 28.656 13.517v0l1.914 0.835c10.957 4.79 21.51 9.456 30.733 14.368 3.558 1.891 6.541 3.632 9.005 5.197-5.299 3.341-12.493 7.114-21.738 11.126-23.827 10.342-57.421 20.614-97.44 29.075-80.038 16.928-181.341 25.699-273.309 15.482-92.045-10.227-181.258-40.704-244.196-93.958-61.545-52.077-99.836-127.29-90.135-234.006l0.132-1.446v-1.453z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chat-forward"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":201,"id":161,"name":"chat-forward","prevSize":32,"code":59698},"setIdx":0,"setId":0,"iconIdx":50},{"icon":{"paths":["M854.506 233.252c12.563 12.429 12.672 32.691 0.243 45.254l-474.877 480c-6.013 6.077-14.208 9.498-22.755 9.494-8.55-0.003-16.742-3.427-22.752-9.507l-165.126-167.088c-12.423-12.57-12.303-32.832 0.268-45.254s32.831-12.304 45.254 0.269l142.375 144.067 452.115-456.992c12.429-12.564 32.691-12.672 45.254-0.243z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["check"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":202,"id":160,"name":"check","prevSize":32,"code":59699},"setIdx":0,"setId":0,"iconIdx":51},{"icon":{"paths":["M281.372 436.042c12.497-12.499 32.758-12.499 45.255 0l185.373 185.373 185.373-185.373c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-208 208c-12.496 12.496-32.758 12.496-45.254 0l-208-208c-12.497-12.496-12.497-32.758 0-45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chevron-down"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":203,"id":159,"name":"chevron-down","prevSize":32,"code":59700},"setIdx":0,"setId":0,"iconIdx":52},{"icon":{"paths":["M670.17 183.165c16.662 16.662 16.662 43.677 0 60.34l-268.496 268.495 268.496 268.499c16.662 16.662 16.662 43.677 0 60.339s-43.677 16.662-60.339 0l-298.668-298.669c-8.002-8-12.497-18.851-12.497-30.17 0-11.315 4.495-22.166 12.497-30.17l298.668-298.666c16.662-16.662 43.677-16.662 60.339 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chevron-left-big"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":204,"id":158,"name":"chevron-left-big","prevSize":32,"code":59701},"setIdx":0,"setId":0,"iconIdx":53},{"icon":{"paths":["M587.962 281.372c12.496 12.497 12.496 32.758 0 45.255l-185.373 185.373 185.373 185.373c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-208-208c-12.496-12.496-12.496-32.758 0-45.254l208-208c12.499-12.497 32.758-12.497 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chevron-left"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":205,"id":157,"name":"chevron-left","prevSize":32,"code":59702},"setIdx":0,"setId":0,"iconIdx":54},{"icon":{"paths":["M436.038 742.627c-12.496-12.496-12.496-32.758 0-45.254l185.373-185.373-185.373-185.373c-12.496-12.497-12.496-32.758 0-45.254 12.499-12.497 32.758-12.497 45.254 0l208 208c12.499 12.496 12.499 32.758 0 45.254l-207.997 208c-12.499 12.496-32.758 12.496-45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chevron-right"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":206,"id":156,"name":"chevron-right","prevSize":32,"code":59703},"setIdx":0,"setId":0,"iconIdx":55},{"icon":{"paths":["M742.627 587.958c-12.496 12.499-32.758 12.499-45.254 0l-185.373-185.373-185.373 185.373c-12.496 12.499-32.758 12.499-45.254 0-12.497-12.496-12.497-32.758 0-45.254l208-208c12.496-12.496 32.758-12.496 45.254 0l208 208c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chevron-up"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":207,"id":155,"name":"chevron-up","prevSize":32,"code":59704},"setIdx":0,"setId":0,"iconIdx":56},{"icon":{"paths":["M512 864c194.403 0 352-157.597 352-352 0-46.522-9.024-90.931-25.418-131.581l48.518-48.518c26.211 54.496 40.899 115.581 40.899 180.099 0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416 95.376 0 183.254 32.096 253.424 86.076l-45.712 45.712c-58.221-42.623-130.029-67.788-207.712-67.788-194.404 0-352 157.596-352 352s157.596 352 352 352zM902.63 230.623c12.496-12.499 12.493-32.76-0.006-45.255s-32.762-12.491-45.254 0.008l-345.386 345.503-105.341-105.491c-12.486-12.506-32.749-12.522-45.254-0.032-12.506 12.486-12.522 32.749-0.032 45.254l127.971 128.157c6 6.006 14.144 9.386 22.634 9.389 8.493 0 16.637-3.373 22.64-9.376l368.029-368.157z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-check"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":208,"id":154,"name":"circle-check","prevSize":32,"code":59705},"setIdx":0,"setId":0,"iconIdx":57},{"icon":{"paths":["M608 192c0-53.019-42.979-96-96-96s-96 42.981-96 96h-192c-17.673 0-32 14.327-32 32v672c0 17.674 14.327 32 32 32h576c17.674 0 32-14.326 32-32v-672c0-17.673-14.326-32-32-32h-192zM256 864v-608h96v64c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-64h96v608h-512zM512 224c17.674 0 32-14.327 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["clipboard"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":209,"id":153,"name":"clipboard","prevSize":32,"code":59706},"setIdx":0,"setId":0,"iconIdx":58},{"icon":{"paths":["M864 512c0 194.403-157.597 352-352 352s-352-157.597-352-352c0-194.404 157.596-352 352-352s352 157.596 352 352zM928 512c0-229.75-186.25-416-416-416s-416 186.25-416 416c0 229.75 186.25 416 416 416s416-186.25 416-416zM544 288c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["clock"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":210,"id":152,"name":"clock","prevSize":32,"code":59707},"setIdx":0,"setId":0,"iconIdx":59},{"icon":{"paths":["M806.627 262.628c12.496-12.497 12.496-32.758 0-45.255s-32.758-12.497-45.254 0l-249.373 249.373-249.372-249.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.758 0 45.255l249.373 249.372-249.373 249.373c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l249.372-249.373 249.373 249.373c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-249.373-249.373 249.373-249.372z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["close"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":211,"id":151,"name":"close","prevSize":32,"code":59708},"setIdx":0,"setId":0,"iconIdx":60},{"icon":{"paths":["M273.129 356.678c6.747-28.298 25.696-52.004 51.21-67.152 25.6-15.2 56.323-20.858 84.698-14.53 27.642 6.163 55.117 24.12 74.874 60.339l22.541 41.325 30.134-36.16c27.238-32.689 85.126-39.713 134.714-14.064 23.562 12.186 42.208 30.618 52.064 53.488 9.654 22.406 12.112 51.898-1.434 89.149l-15.616 42.938h45.686c53.606 0 82.419 15.882 97.642 33.75 15.651 18.374 21.898 44.646 18.557 74.714-3.344 30.083-16.054 60.518-33.456 82.89-17.939 23.066-36.646 32.646-50.742 32.646h-543.998c-18.791 0-37.068-10.362-52.195-31.578-15.217-21.344-24.978-51.050-25.818-81.312-0.84-30.227 7.237-57.914 23.733-77.491 15.796-18.746 42.268-33.619 86.279-33.619h59.791l-33.165-49.75c-27.882-41.824-32.118-77.814-25.498-105.581zM518.218 272.084c-26.339-32.073-59.667-51.619-95.251-59.554-45.626-10.174-92.902-0.833-131.301 21.965-38.487 22.85-69.538 60.142-80.791 107.342-8.278 34.72-5.369 72.758 10.731 111.77-35.67 8.464-64.099 26.186-84.825 50.784-29.004 34.422-39.927 78.733-38.766 120.506 1.159 41.738 14.399 84.032 37.682 116.688 23.373 32.784 59.097 58.426 104.306 58.426h543.999c41.907 0 77.2-26.419 101.261-57.354 24.598-31.629 41.888-73.197 46.544-115.114 4.659-41.933-3.094-87.658-33.443-123.283-24.106-28.301-59.504-46.774-105.616-53.456 5.83-35.194 1.686-67.674-10.605-96.205-16.646-38.628-46.998-67.197-81.437-85.010-54.902-28.397-128.733-32.652-182.486 2.495zM512 437.331c17.674 0 32 14.33 32 32v53.328h53.334c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-53.334v53.341c0 17.674-14.326 32-32 32s-32-14.326-32-32v-53.341h-53.331c-17.674 0-32-14.326-32-32 0-17.67 14.326-32 32-32h53.331v-53.328c0-17.67 14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["cloud-connectivity"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":212,"id":150,"name":"cloud-connectivity","prevSize":32,"code":59709},"setIdx":0,"setId":0,"iconIdx":61},{"icon":{"paths":["M630.154 204.798c16.496 6.344 24.723 24.859 18.381 41.355l-213.334 554.667c-6.342 16.496-24.858 24.723-41.354 18.381-16.496-6.346-24.723-24.861-18.381-41.357l213.334-554.666c6.346-16.495 24.858-24.724 41.354-18.38zM321.293 361.37c12.499 12.499 12.499 32.758 0 45.258l-105.371 105.37 105.371 105.373c12.499 12.499 12.499 32.758 0 45.258-12.495 12.496-32.756 12.496-45.253 0l-128-128c-12.497-12.499-12.497-32.758 0-45.258l128-128c12.497-12.496 32.758-12.496 45.253 0zM702.707 361.37c12.496-12.496 32.758-12.496 45.254 0l128 128c12.496 12.499 12.496 32.758 0 45.258l-128 128c-12.496 12.496-32.758 12.496-45.254 0-12.499-12.499-12.499-32.758 0-45.258l105.373-105.373-105.373-105.37c-12.499-12.499-12.499-32.758 0-45.258z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["code"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":213,"id":149,"name":"code","prevSize":32,"code":59710},"setIdx":0,"setId":0,"iconIdx":62},{"icon":{"paths":["M770.704 224c17.674 0 32 14.327 32 32v544c0 17.674-14.326 32-32 32h-543.999c-17.673 0-32-14.326-32-32v-128c17.673 0 32-14.326 32-32s-14.327-32-32-32v-192c17.673 0 32-14.326 32-32s-14.327-32-32-32v-96c0-17.673 14.327-32 32-32h543.999zM130.705 608c-17.673 0-32 14.326-32 32s14.327 32 32 32v128c0 53.021 42.981 96 96 96h543.999c53.021 0 96-42.979 96-96v-544c0-53.019-42.979-96-96-96h-543.999c-53.019 0-96 42.981-96 96v96c-17.673 0-32 14.326-32 32s14.327 32 32 32v192zM427.91 514.266c13.315-3.568 27.309-3.789 40.73-0.643l31.52 7.389c8.73 2.045 17.83 1.904 26.49-0.416l22.186-5.942c14.285-3.827 29.328-4.042 43.683-0.675 40.429 9.475 69.325 45.584 69.325 87.277v24.336c0 31.811-25.789 57.6-57.6 57.6h-180.739c-31.811 0-57.6-25.789-57.6-57.6v-30.525c0-37.862 25.434-71.005 62.006-80.8zM456.957 563.472c-5.206-1.219-10.634-1.133-15.798 0.25-14.189 3.798-24.054 16.656-24.054 31.344v30.525c0 3.536 2.867 6.4 6.4 6.4h180.739c3.533 0 6.4-2.864 6.4-6.4v-24.336c0-17.75-12.365-33.341-29.808-37.427-6.186-1.45-12.662-1.35-18.752 0.282l-22.186 5.942c-16.813 4.502-34.474 4.781-51.421 0.81l-31.52-7.389zM539.155 420.48c0-13.962-11.318-25.28-25.28-25.28s-25.283 11.318-25.283 25.28c0 13.962 11.322 25.28 25.283 25.28s25.28-11.318 25.28-25.28zM590.355 420.48c0 42.24-34.243 76.48-76.48 76.48-42.24 0-76.483-34.24-76.483-76.48s34.243-76.48 76.483-76.48c42.237 0 76.48 34.24 76.48 76.48z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["contacts"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":214,"id":148,"name":"contacts","prevSize":32,"code":59711},"setIdx":0,"setId":0,"iconIdx":63},{"icon":{"paths":["M464 272c-35.347 0-64 28.654-64 64v480c0 35.347 28.653 64 64 64h352c35.347 0 64-28.653 64-64v-304c0-6.509-1.984-12.864-5.69-18.214l-134.458-194.215c-11.952-17.267-31.619-27.571-52.621-27.571h-223.232zM464 336h144v144c0 35.347 28.653 64 64 64h144v272h-352v-480zM672 480v-144h15.232l99.693 144h-114.925zM144 208c0-35.346 28.654-64 64-64h241.844c18.032 0 35.229 7.607 47.357 20.949l39.136 43.051h-328.336v480h128v64h-128c-35.346 0-64-28.653-64-64v-480z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["copy"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":215,"id":147,"name":"copy","prevSize":32,"code":59712},"setIdx":0,"setId":0,"iconIdx":64},{"icon":{"paths":["M824.682 183.521c-37.19-37.986-98.202-38.583-136.131-1.333l-348.48 342.237c-12.739 12.512-21.733 28.32-25.976 45.654l-23.681 96.749c-6.94 28.355 16.754 54.845 45.747 51.142l90.691-11.578c20.224-2.582 39.104-11.52 53.907-25.52l360.486-340.922c38.986-36.868 40.173-98.482 2.637-136.82l-19.2-19.61zM733.485 227.821c12.643-12.417 32.979-12.218 45.376 0.444l19.2 19.61c12.512 12.78 12.115 33.317-0.88 45.607l-69.965 66.169-63.446-63.364 69.715-68.466zM618.074 341.162l62.592 62.512-243.971 230.73c-4.934 4.666-11.229 7.645-17.968 8.506l-58.307 7.443 15.926-65.075c1.414-5.779 4.413-11.046 8.659-15.219l233.069-228.896zM193.608 265.602c0-17.673 14.346-32 32.042-32h281.332c17.696 0 32.042-14.327 32.042-32s-14.346-32-32.042-32h-281.332c-53.089 0-96.127 42.981-96.127 96v534.402c0 53.018 43.037 95.997 96.127 95.997h529.764c53.091 0 96.128-42.979 96.128-96v-279.414c0-17.67-14.346-32-32.042-32s-32.042 14.33-32.042 32v279.414c0 17.674-14.346 32-32.045 32h-529.764c-17.696 0-32.042-14.326-32.042-31.997v-534.402z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["create"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":216,"id":146,"name":"create","prevSize":32,"code":59713},"setIdx":0,"setId":0,"iconIdx":65},{"icon":{"paths":["M717.373 298.663c0-17.673-14.326-32-32-32s-32 14.327-32 32v426.665c0 17.674 14.326 32 32 32s32-14.326 32-32v-426.665z","M514.704 394.672c17.674 0 32 14.326 32 32v298.666c0 17.674-14.326 32-32 32s-32-14.326-32-32v-298.666c0-17.674 14.326-32 32-32z","M376.038 554.672c0-17.674-14.326-32-32-32s-32 14.326-32 32v170.669c0 17.67 14.327 32 32 32s32-14.33 32-32v-170.669z","M130.705 199.556v624.889c0 39.52 32.036 71.555 71.556 71.555h624.888c39.52 0 71.555-32.035 71.555-71.555v-624.889c0-39.519-32.035-71.556-71.555-71.556h-624.888c-39.519 0-71.556 32.036-71.556 71.556zM202.26 192h624.888c4.173 0 7.555 3.383 7.555 7.556v624.889c0 4.173-3.382 7.555-7.555 7.555h-624.888c-4.173 0-7.556-3.382-7.556-7.555v-624.889c0-4.173 3.383-7.556 7.556-7.556z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["dashboard"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":217,"id":145,"name":"dashboard","prevSize":32,"code":59714},"setIdx":0,"setId":0,"iconIdx":66},{"icon":{"paths":["M739.68 864v-448h-448.593v448h448.593zM227.003 864v-448c-35.393 0-64.084-28.653-64.084-64v-128c0-35.346 28.692-64 64.084-64h224.297c0-35.346 28.691-64 64.083-64 35.395 0 64.086 28.654 64.086 64h224.294c35.395 0 64.086 28.654 64.086 64v128c0 35.347-28.691 64-64.086 64v448c0 35.347-28.691 64-64.083 64h-448.593c-35.393 0-64.085-28.653-64.085-64zM803.763 224h-576.761v128h576.761v-128zM419.258 544v192c0 17.674 14.346 32 32.042 32s32.042-14.326 32.042-32v-192c0-17.674-14.346-32-32.042-32s-32.042 14.326-32.042 32zM579.469 512c17.696 0 32.042 14.326 32.042 32v192c0 17.674-14.346 32-32.042 32s-32.042-14.326-32.042-32v-192c0-17.674 14.346-32 32.042-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["delete"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":218,"id":144,"name":"delete","prevSize":32,"code":59715},"setIdx":0,"setId":0,"iconIdx":67},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.327 32 32 32h341.334c17.67 0 32-14.326 32-32s-14.33-32-32-32h-341.334z","M85.334 298.672c0-70.692 57.308-128 128-128h597.335c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.335c-70.692 0-128-57.306-128-128v-298.666zM213.334 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.335c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.335z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["desktop"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":219,"id":143,"name":"desktop","prevSize":32,"code":59716},"setIdx":0,"setId":0,"iconIdx":68},{"icon":{"paths":["M325.837 160c0-17.673-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.327-32.042 32v64c0 17.673 14.346 32 32.042 32h64.085c17.696 0 32.043-14.327 32.043-32v-64zM325.837 586.666c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64zM454.006 160c0-17.673 14.346-32 32.042-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.327-32.042-32v-64zM582.173 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM454.006 586.666c0-17.674 14.346-32 32.042-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.326-32.042-32v-64zM582.173 800c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 160c0-17.673 14.346-32 32.045-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.327-32.045-32v-64zM838.512 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.699 0-32.045 14.326-32.045 32v64c0 17.674 14.346 32 32.045 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 586.666c0-17.674 14.346-32 32.045-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.326-32.045-32v-64zM325.837 373.334c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["dialpad"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":220,"id":142,"name":"dialpad","prevSize":32,"code":59717},"setIdx":0,"setId":0,"iconIdx":69},{"icon":{"paths":["M514.704 96c80.096 0 154.906 22.636 218.378 61.859l-46.746 46.746c-24.739-13.843-51.322-24.785-79.286-32.368 12.166 22.395 23.078 49.095 32.403 79.249l-51.997 51.999c-5.654-22.994-12.17-44.005-19.347-62.666-12.822-33.339-26.522-55.927-38.474-69.070-8.4-9.235-13.43-11.291-14.928-11.698-1.501 0.407-6.531 2.463-14.931 11.698-11.949 13.143-25.651 35.731-38.474 69.070-16.298 42.377-29.174 96.867-36.339 159.18h65.974l-63.997 64h-7.117c-0.115 2.47-0.221 4.95-0.32 7.437l-64.538 64.538c-0.173-7.933-0.259-15.926-0.259-23.974 0-16.234 0.355-32.25 1.053-48h-189.81c-2.14 15.696-3.245 31.718-3.245 48 0 33.28 4.619 65.485 13.251 96h106.984l-64 64h-17.852c2.004 3.92 4.078 7.798 6.223 11.629l-46.746 46.749c-39.223-63.475-61.859-138.282-61.859-218.378 0-229.75 186.25-416 415.999-416zM868.845 293.623l-46.746 46.748c10.56 18.87 19.434 38.816 26.413 59.629h-86.045l-64 64h164.992c2.141 15.696 3.245 31.718 3.245 48 0 33.28-4.618 65.485-13.248 96h-183.030c2.8-30.816 4.282-62.957 4.282-96 0-8.045-0.090-16.042-0.262-23.974l-64.538 64.534c-0.752 19.008-2.022 37.523-3.763 55.44h-51.677l-64 64h107.091c-7.37 42.458-17.488 80.083-29.45 111.184-12.822 33.338-26.522 55.926-38.474 69.069-8.397 9.235-13.43 11.29-14.928 11.699-1.501-0.41-6.531-2.464-14.931-11.699-11.949-13.142-25.651-35.731-38.474-69.069-7.178-18.662-13.693-39.677-19.347-62.669l-52 51.997c9.328 30.154 20.24 56.854 32.406 79.251-27.965-7.584-54.547-18.525-79.286-32.368l-46.747 46.746c63.348 39.146 137.985 61.77 217.899 61.859h0.957c229.53-0.259 415.52-186.41 415.52-416 0-80.096-22.634-154.902-61.859-218.377zM422.362 172.237c-113.55 30.788-204.31 116.98-241.464 227.763h179.676c10-93.226 32.176-173.252 61.789-227.763zM607.050 851.763c24.397-44.902 43.741-107.117 55.395-179.763h165.878c-44.653 87.35-124.723 153.584-221.274 179.763zM828.077 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-671.999 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l671.999-672z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["directory-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":221,"id":141,"name":"directory-disabled","prevSize":32,"code":59718},"setIdx":0,"setId":0,"iconIdx":70},{"icon":{"paths":["M866.493 512c0 33.28-4.624 65.485-13.267 96h-183.27c2.803-30.816 4.285-62.957 4.285-96 0-16.234-0.358-32.25-1.053-48h190.058c2.141 15.696 3.248 31.718 3.248 48zM609.037 464c0.736 15.67 1.12 31.686 1.12 48 0 33.398-1.606 65.555-4.57 96h-183.117c-2.96-30.445-4.566-62.602-4.566-96 0-16.314 0.381-32.33 1.12-48h190.013zM668.368 400c-10.013-93.226-32.218-173.252-61.872-227.763 113.699 30.788 204.579 116.981 241.782 227.763h-179.91zM421.565 172.237c-29.654 54.51-51.859 134.537-61.872 227.763h-179.913c37.204-110.782 128.083-196.975 241.785-227.763zM424.17 400c7.171-62.314 20.067-116.804 36.387-159.18 12.838-33.339 26.557-55.927 38.525-69.070 8.41-9.235 13.446-11.291 14.947-11.698 1.501 0.407 6.541 2.463 14.95 11.698 11.965 13.143 25.683 35.731 38.525 69.070 16.32 42.377 29.213 96.867 36.387 159.18h-179.722zM354.874 464c-0.698 15.75-1.056 31.766-1.056 48 0 33.043 1.485 65.184 4.288 96h-183.274c-8.643-30.515-13.268-62.72-13.268-96 0-16.282 1.107-32.304 3.249-48h190.060zM366.096 672c11.667 72.646 31.040 134.861 55.466 179.763-96.675-26.179-176.853-92.413-221.565-179.763h166.099zM514.509 928c229.834-0.259 416.070-186.41 416.070-416 0-229.75-186.496-416-416.55-416s-416.549 186.25-416.549 416c0 229.59 186.237 415.741 416.073 416 0.16 0 0.317 0 0.477 0s0.32 0 0.48 0zM606.496 851.763c24.426-44.902 43.798-107.117 55.466-179.763h166.099c-44.71 87.35-124.886 153.584-221.565 179.763zM596.992 672c-7.379 42.458-17.51 80.083-29.488 111.184-12.842 33.338-26.56 55.926-38.525 69.069-8.41 9.235-13.45 11.29-14.95 11.699-1.501-0.41-6.538-2.464-14.947-11.699-11.968-13.142-25.686-35.731-38.525-69.069-11.978-31.101-22.112-68.726-29.491-111.184h165.926z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["directory"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":222,"id":140,"name":"directory","prevSize":32,"code":59719},"setIdx":0,"setId":0,"iconIdx":71},{"icon":{"paths":["M561.667 127.992c-121.696 0-200.973 50.509-248.813 115.801-46.216 63.073-61.638 137.752-61.933 188.616-8.705 98.746 28.601 172.896 89.422 223.469 59.686 49.626 140.202 75.258 217.85 83.738 77.75 8.486 161.715 1.197 227.856-12.547 33.066-6.87 62.774-15.581 85.642-25.331 11.366-4.848 22.029-10.368 30.797-16.669 7.875-5.661 18.541-14.976 23.242-28.835 7.286-21.475-3.133-38.784-11.965-48.102-8.41-8.877-19.427-15.405-28.24-20.016-9.306-4.867-19.379-9.206-27.533-12.707-8.973-3.856-14.858-6.4-18.56-8.432-4.845-2.662-8.842-5.088-12.026-7.203 20.256-47.142 31.549-77.043 37.696-99.19 7.293-26.272 7.315-41.725 7.315-58.909 0-21.523-9.603-88.542-52.81-151.108-44.701-64.73-124.074-122.573-257.939-122.573zM314.916 433.898c0-40.416 12.607-101.84 49.564-152.277 35.782-48.836 95.882-89.628 197.187-89.628 112.086 0 172.090 46.886 205.277 94.94 34.678 50.219 41.472 104.040 41.472 114.741v0.198c0 14.918 0 23.638-4.982 41.594-5.491 19.779-16.963 50.189-41.539 106.538-5.802 13.296-2.762 25.77 1.155 33.754 3.664 7.478 9.005 13.242 13.331 17.261 8.835 8.211 20.653 15.686 32.224 22.045 6.618 3.638 15.238 7.334 22.563 10.477l1.562 0.672c5.904 2.534 11.52 4.97 16.688 7.418-0.909 0.406-1.856 0.819-2.835 1.238-17.741 7.568-43.078 15.206-73.555 21.539-60.947 12.666-138.064 19.21-207.888 11.587-69.926-7.635-136.982-30.336-183.878-69.328-45.459-37.798-73.674-92.064-66.481-169.821l0.136-1.469v-1.478zM819.162 553.354l-0.074-0.086c0 0.003 0.010 0.013 0.029 0.035 0.010 0.013 0.026 0.029 0.045 0.051z","M178.552 502.474c7.496-11.258 16.26-22.259 26.436-32.592 0.876 31.747 6.169 61.226 15.216 88.358-15.094 30.877-18.374 59.315-18.374 65.357v0.186c0 11.382 0 17.536 3.524 30.701 3.993 14.918 12.441 38.211 30.867 82.022 5.256 12.496 2.48 24.099-0.985 31.43-3.249 6.874-7.925 12.058-11.512 15.514-7.319 7.053-16.852 13.254-25.75 18.326-5.008 2.854-11.333 5.706-16.546 8.029 11.182 3.939 24.98 7.814 40.802 11.226 44.977 9.693 101.833 14.669 153.062 8.87 51.28-5.808 99.776-23.014 133.35-51.965l0.608-0.528c14.794 2.784 29.53 4.938 44.051 6.525 10.886 1.187 21.862 2.086 32.877 2.72-10.122 14.797-22.163 28.045-35.741 39.754-46.362 39.974-108.547 60.362-167.946 67.088-59.45 6.73-123.405 0.947-173.744-9.901-25.17-5.424-48.056-12.352-65.901-20.243-8.86-3.92-17.458-8.502-24.686-13.891-6.431-4.794-15.831-13.171-20.001-25.92-6.422-19.632 2.792-35.443 10.458-43.834 7.193-7.872 16.405-13.462 23.248-17.174 7.309-3.965 15.158-7.466 21.235-10.173 6.907-3.078 10.854-4.858 13.183-6.186 1.349-0.768 2.591-1.501 3.727-2.195-13.937-33.885-21.976-56.118-26.48-72.947-5.68-21.222-5.7-33.875-5.7-47.434 0-17.712 7.436-71.139 40.721-121.123zM155.337 797.248c-0.012 0 0.084 0.102 0.317 0.301-0.19-0.202-0.306-0.301-0.317-0.301zM179.587 737.085c-0.004 0-0.052 0.051-0.137 0.15l0.112-0.118c0.019-0.022 0.027-0.032 0.025-0.032z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["discussions"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":223,"id":139,"name":"discussions","prevSize":32,"code":59720},"setIdx":0,"setId":0,"iconIdx":72},{"icon":{"paths":["M160 256c0-17.673 14.327-32 32-32h640c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.327-32-32zM160 421.162c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 602.838c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 768c0-17.674 14.327-32 32-32h344.614c17.674 0 32 14.326 32 32s-14.326 32-32 32h-344.614c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["document"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":224,"id":138,"name":"document","prevSize":32,"code":59721},"setIdx":0,"setId":0,"iconIdx":73},{"icon":{"paths":["M128.169 352c0-17.674 14.346-32 32.042-32h704.928c17.696 0 32.045 14.326 32.045 32s-14.349 32-32.045 32h-704.928c-17.696 0-32.042-14.326-32.042-32zM213.615 522.669c0-17.674 14.346-32 32.042-32h534.036c17.699 0 32.045 14.326 32.045 32s-14.346 32-32.045 32h-534.036c-17.697 0-32.042-14.326-32.042-32zM331.104 661.331c-17.698 0-32.043 14.326-32.043 32s14.346 32 32.043 32h363.146c17.696 0 32.042-14.326 32.042-32s-14.346-32-32.042-32h-363.146z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["donner"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":225,"id":137,"name":"donner","prevSize":32,"code":59722},"setIdx":0,"setId":0,"iconIdx":74},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l21.374 32.061v17.69h-48c-44.011 0-70.483 14.874-86.278 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h79.999v64h-80c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.304-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.613 53.456 30.349 35.626 38.106 81.35 33.446 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-80v-64h80c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 787.222c12.298-12.691 11.981-32.95-0.707-45.251-12.691-12.298-32.95-11.981-45.251 0.707l-41.021 42.326v-273.005c0-17.674-14.326-32-32-32s-32 14.326-32 32v273.005l-41.021-42.326c-12.301-12.688-32.56-13.005-45.251-0.707-12.688 12.301-13.005 32.56-0.707 45.251l96 99.050c6.029 6.218 14.32 9.728 22.979 9.728s16.95-3.51 22.979-9.728l96-99.050z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["download"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":226,"id":136,"name":"download","prevSize":32,"code":59723},"setIdx":0,"setId":0,"iconIdx":75},{"icon":{"paths":["M795.648 132.004c-25.027-25.027-65.603-25.027-90.63-0l-530.467 530.469c-9.577 9.574-15.873 21.939-17.985 35.318l-19.611 124.186c-1.386 8.771-0.942 17.299 1.006 25.261 7.597 31.037 38.083 53.44 72.291 48.038l124.184-19.613c13.379-2.112 25.744-8.41 35.322-17.984l530.467-530.47c12.512-12.513 18.768-28.914 18.768-45.316 0-10.379-2.506-20.757-7.517-30.15-2.906-5.451-6.656-10.57-11.251-15.164l-104.576-104.575zM630.675 296.979l119.658-119.658 104.576 104.574-119.658 119.657-104.576-104.573zM200.255 831.974l19.611-124.186 365.494-365.494 104.576 104.573-365.494 365.494-124.187 19.613z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["edit"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":227,"id":135,"name":"edit","prevSize":32,"code":59724},"setIdx":0,"setId":0,"iconIdx":76},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM353.226 720c8.963 0 17.526-3.53 24.272-9.437 21.603-18.918 42.64-31.958 62.701-40.509 36.563-15.59 71.805-17.107 104.794-9.939 37.632 8.176 72.659 27.808 102.109 51.341 6.726 5.376 14.995 8.544 23.606 8.544 30.218 0 45.616-34.256 22.397-53.594-36.912-30.742-82.79-57.59-134.522-68.832-44.794-9.734-93.67-7.632-143.485 13.606-28.79 12.275-57.232 30.653-85.024 55.933-21.572 19.619-6.010 52.886 23.152 52.886z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["emoji-bad-mood"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":228,"id":134,"name":"emoji-bad-mood","prevSize":32,"code":59725},"setIdx":0,"setId":0,"iconIdx":77},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM384 640h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["emoji-neutral-mood"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":229,"id":133,"name":"emoji-neutral-mood","prevSize":32,"code":59726},"setIdx":0,"setId":0,"iconIdx":78},{"icon":{"paths":["M330.074 644.886c-21.572-19.619-6.010-52.886 23.152-52.886 8.963 0 17.526 3.53 24.272 9.437 21.603 18.918 42.64 31.958 62.701 40.509 36.563 15.59 71.805 17.107 104.794 9.939 37.632-8.176 72.659-27.808 102.109-51.341 6.726-5.376 14.995-8.544 23.606-8.544 30.218 0 45.616 34.256 22.397 53.594-36.912 30.742-82.79 57.59-134.522 68.832-44.794 9.734-93.67 7.632-143.485-13.606-28.79-12.275-57.232-30.653-85.024-55.933z","M400.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M624.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["emoji"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":230,"id":132,"name":"emoji","prevSize":32,"code":59727},"setIdx":0,"setId":0,"iconIdx":79},{"icon":{"paths":["M655.744 512c88.365 0 160-71.635 160-160s-71.635-160-160-160c-88.368 0-160 71.635-160 160 0 26.934 6.653 52.314 18.41 74.582l-11.914 11.914 0.128 0.131-299.135 299.136c-3.533 9.926-6.41 20.976-7.738 31.606-1.652 13.219-0.563 22.966 1.874 28.938 1.768 4.333 4.22 7.232 10.772 9.014 8.316 2.262 24.518 2.794 52.822-5.501 8.524-3.808 27.721-16.285 45.132-35.382 18.18-19.939 29.648-41.856 29.648-62.438 0-15.642 11.309-28.992 26.736-31.565l91.75-15.293c3.766-2.656 18.768-15.693 10.134-58.867-2.099-10.49 1.184-21.338 8.749-28.902l88.198-88.195c26.467 19.379 59.114 30.822 94.432 30.822zM439.571 410.915c-5.104-18.771-7.827-38.525-7.827-58.915 0-123.712 100.288-224 224-224 123.709 0 224 100.288 224 224s-100.291 224-224 224c-29.29 0-57.264-5.619-82.906-15.843l-43.008 43.008c7.158 65.494-23.99 104.534-55.968 115.194l-2.384 0.794-74.854 12.477c-7.085 31.405-25.174 58.122-43.235 77.933-23.123 25.357-50.958 44.627-69.762 52.15l-1.324 0.528-1.365 0.41c-34.714 10.416-64.73 13.19-89.594 6.429-26.782-7.286-44.33-24.784-53.228-46.586-8.23-20.163-8.473-42.282-6.126-61.062 2.402-19.216 7.899-37.958 14.042-53.315 1.61-4.022 4.020-7.677 7.084-10.742l286.456-286.458zM623.744 336c0 26.509 21.488 48 48 48 26.509 0 48-21.491 48-48s-21.491-48-48-48c-26.512 0-48 21.49-48 48z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["encrypted"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":231,"id":131,"name":"encrypted","prevSize":32,"code":59728},"setIdx":0,"setId":0,"iconIdx":80},{"icon":{"paths":["M536.89 64c233.677 0 423.11 189.433 423.11 423.11h-423.11v-423.11z","M64 536.89c0-233.678 189.433-423.112 423.11-423.112v423.112h423.11c0 233.677-189.43 423.11-423.11 423.11-233.677 0-423.11-189.434-423.11-423.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["engagement-dashboard"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":232,"id":130,"name":"engagement-dashboard","prevSize":32,"code":59729},"setIdx":0,"setId":0,"iconIdx":81},{"icon":{"paths":["M416 586.445v177.232l75.514-62.928c11.869-9.888 29.104-9.888 40.973 0l75.514 62.928v-177.232c-29.098 13.821-61.645 21.555-96 21.555s-66.902-7.734-96-21.555zM352 540.768v291.232c0 12.416 7.184 23.712 18.426 28.979 11.245 5.267 24.522 3.552 34.061-4.397l107.514-89.594 107.514 89.594c9.539 7.949 22.816 9.664 34.061 4.397 11.242-5.267 18.426-16.563 18.426-28.979v-291.232c39.59-40.403 64-95.734 64-156.768 0-123.712-100.288-224.001-224-224.001s-224 100.288-224 224.001c0 61.034 24.41 116.365 64 156.768zM416 512.013l-0.016-0.013c-38.854-29.19-63.984-75.661-63.984-128 0-88.366 71.635-160.001 160-160.001s160 71.635 160 160.001c0 52.339-25.13 98.81-63.984 128l-0.016 0.013c-26.742 20.083-59.981 31.987-96 31.987s-69.258-11.904-96-31.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["enterprise-feature"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":233,"id":129,"name":"enterprise-feature","prevSize":32,"code":59730},"setIdx":0,"setId":0,"iconIdx":82},{"icon":{"paths":["M500.64 128c213.35 0 386.336 172.985 386.336 386.336 0 192.87-141.254 352.707-325.974 381.664v-269.958h90.022l17.114-111.706h-107.136v-72.47c0-11.462 2.102-22.822 7.274-32.544 2.474-4.656 5.651-8.934 9.635-12.666 9.866-9.245 24.688-15.152 46.058-15.152h48.733v-95.080c0 0-44.224-7.552-86.493-7.552-84.698 0-141.258 49.313-145.651 138.907-0.182 3.738-0.275 7.546-0.275 11.424v85.133h-98.122v111.706h98.122v269.958c-184.721-29.011-325.978-188.848-325.978-381.664 0-213.351 172.985-386.336 386.336-386.336z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["facebook-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":30,"id":126,"name":"facebook-monochromatic","prevSize":32,"code":59731},"setIdx":0,"setId":0,"iconIdx":83},{"icon":{"paths":["M373.334 448c0-17.674 14.326-32 32-32h213.331c17.674 0 32 14.326 32 32s-14.326 32-32 32h-213.331c-17.674 0-32-14.326-32-32z","M405.334 544c-17.674 0-32 14.326-32 32s14.326 32 32 32h213.331c17.674 0 32-14.326 32-32s-14.326-32-32-32h-213.331z","M256 128c-17.673 0-32 14.327-32 32v704c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-501.744c0-6.672-2.083-13.174-5.962-18.602l-144.467-202.254c-6.006-8.409-15.706-13.4-26.038-13.4h-367.533zM736 372.509v459.491h-448v-640h319.066l128.934 180.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["file-document"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":29,"id":125,"name":"file-document","prevSize":32,"code":59732},"setIdx":0,"setId":0,"iconIdx":84},{"icon":{"paths":["M128 192c-17.673 0-32 14.327-32 32v576.019c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-576.019c0-17.673-14.326-32-32-32h-768zM160 378.301v-122.301h149.333v122.301h-149.333zM160 442.301h149.333v141.722h-149.333v-141.722zM160 648.022h149.333v119.997h-149.333v-119.997zM373.334 768.019v-119.997h490.666v119.997h-490.666zM864 584.022h-490.666v-141.722h490.666v141.722zM864 378.301h-490.666v-122.301h490.666v122.301z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["file-sheet"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":28,"id":124,"name":"file-sheet","prevSize":32,"code":59733},"setIdx":0,"setId":0,"iconIdx":85},{"icon":{"paths":["M206.667 293.692c-30.421-42.402-0.116-101.442 52.070-101.442h518.572c51.174 0 81.706 57.026 53.334 99.615l-180.678 271.207v220.762c0 46.352-47.693 77.373-90.067 58.582l-121.424-53.85c-23.168-10.275-38.102-33.238-38.102-58.582v-166.304l-193.704-269.988zM777.309 256.334h-518.572l193.705 269.989c7.811 10.89 12.013 23.955 12.013 37.357v166.304l121.424 53.85v-220.762c0-12.646 3.741-25.008 10.752-35.533l180.678-271.205z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["filter"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":27,"id":123,"name":"filter","prevSize":32,"code":59734},"setIdx":0,"setId":0,"iconIdx":86},{"icon":{"paths":["M623.091 896c-2.806 0-5.296-0.624-7.168-0.938-62-16.858-102.816-39.648-145.811-80.858-55.149-54.010-85.37-125.814-85.37-202.301 0-65.875 56.704-119.571 126.496-119.571s126.496 53.696 126.496 119.571c0 34.963 31.469 63.373 69.792 63.373s69.789-28.41 69.789-63.373c0-135.808-119.642-246.637-266.701-246.637-104.998 0-200.338 57.133-243.334 145.795-14.332 29.347-21.498 63.066-21.498 100.842 0 28.72 2.492 73.363 24.925 131.744 2.804 7.181 2.492 14.675-0.623 21.856-3.116 6.867-9.035 11.862-16.201 14.358-2.804 1.251-6.231 1.562-9.659 1.562-11.84 0-22.433-7.181-26.484-18.106-19.005-50.266-28.353-99.904-28.353-151.728 0-46.205 9.036-88.352 26.795-125.504 52.343-108.019 167.936-177.638 294.432-177.638 178.528 0 323.718 135.804 323.718 302.828 0 65.875-56.704 119.571-126.806 119.571s-126.81-53.696-126.81-119.571c0-34.963-31.469-63.373-69.792-63.373-38.634 0-69.789 28.41-69.789 63.373 0 61.504 24.301 119.261 68.544 162.342 35.206 34.029 68.858 53.072 120.576 67.123 7.168 1.872 13.398 6.557 17.136 13.11 3.741 6.557 4.675 14.362 2.806 21.229-2.806 11.866-14.022 20.918-27.107 20.918zM426.803 888.195c-7.789 0-15.267-3.123-20.253-8.742-33.338-32.781-51.718-54.010-77.891-100.525-26.795-47.142-41.127-105.21-41.127-167.338 0-116.448 100.948-211.357 224.951-211.357s224.954 94.909 224.954 211.357c0 15.61-12.464 28.096-28.352 28.096-15.891 0-28.666-12.173-28.666-28.096 0-85.542-75.398-155.162-168.246-155.162s-168.246 69.619-168.246 155.162c0 52.448 11.84 100.528 34.272 139.552 23.366 41.52 38.947 59.005 68.858 88.662 10.902 11.238 10.902 28.723 0 39.648-5.92 5.933-13.088 8.742-20.253 8.742zM699.738 818.886c-47.36 0-88.797-11.862-123.382-34.963-59.197-39.651-94.717-103.962-94.717-172.333 0-15.61 12.464-28.099 28.352-28.099 15.891 0 28.355 12.49 28.355 28.099 0 49.638 26.17 96.781 69.789 125.501 25.238 16.861 55.149 24.976 91.603 24.976 7.789 0 22.432-0.934 38.010-3.744 1.558-0.314 3.427-0.314 4.986-0.314 13.709 0 25.238 9.99 27.728 23.414 1.248 7.181-0.31 14.672-4.362 20.605-4.362 6.243-10.902 10.614-18.694 11.862-23.366 4.685-43.93 4.995-47.667 4.995zM188.765 435.824c-5.608 0-11.217-1.562-16.202-4.995-6.543-4.058-10.593-10.614-12.151-18.106-1.246-7.494 0.311-14.986 4.985-21.232 38.635-53.696 87.862-95.843 146.125-125.501 60.132-30.595 129.613-46.829 200.961-46.829 71.037 0 140.205 15.922 200.029 46.205 58.573 29.659 107.802 71.492 146.125 124.567 4.362 5.93 6.23 13.424 4.986 20.915-1.248 7.494-5.61 14.048-11.84 18.419-4.986 3.437-10.595 4.995-16.515 4.995-9.034 0-17.757-4.371-23.056-11.862-33.338-45.891-75.709-82.109-125.562-107.083-52.342-26.224-112.787-40.273-174.477-40.273-62.314 0-122.758 14.049-175.101 40.585-49.852 25.913-92.537 62.128-126.186 108.643-3.739 6.87-12.463 11.552-22.121 11.552zM733.696 239.141c-4.672 0-9.347-1.249-13.395-3.434-71.35-35.902-133.354-51.512-207.504-51.512-74.467 0-144.256 17.483-207.817 51.824-4.050 2.185-8.724 3.122-13.397 3.122-10.282 0-19.629-5.62-24.925-14.361-3.739-6.556-4.673-14.361-2.492-21.541s7.166-13.424 13.709-16.859c72.594-38.712 151.733-58.38 234.924-58.38 82.563 0 154.848 17.795 233.987 58.068 6.854 3.434 11.84 9.366 14.33 16.859 2.182 7.18 1.248 14.673-2.179 21.229-4.986 9.054-14.643 14.985-25.238 14.985z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["fingerprint"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":26,"id":122,"name":"fingerprint","prevSize":32,"code":59735},"setIdx":0,"setId":0,"iconIdx":87},{"icon":{"paths":["M266.667 170.664c0-17.673 14.327-32 32-32h500.623c12.122 0 23.2 6.848 28.621 17.689s4.253 23.814-3.021 33.511l-122.134 162.843 122.134 162.845c7.274 9.696 8.442 22.672 3.021 33.51-5.421 10.842-16.499 17.69-28.621 17.69h-468.624v286.579c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-682.667zM330.666 502.752h404.624l-98.134-130.845c-8.531-11.376-8.531-27.021 0-38.4l98.134-130.843h-404.624v300.088z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["flag"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":25,"id":121,"name":"flag","prevSize":32,"code":59736},"setIdx":0,"setId":0,"iconIdx":88},{"icon":{"paths":["M140.020 213.336c0-17.673 14.327-32 32-32h234.057c7.181 0 14.157 2.416 19.798 6.86l88.813 69.94h339.997c17.674 0 32 14.327 32 32v520.533c0 17.674-14.326 32-32 32h-682.665c-17.673 0-32-14.326-32-32v-597.333zM204.020 245.336v533.333h618.665v-456.534h-319.085c-7.181 0-14.154-2.415-19.798-6.858l-88.813-69.94h-190.969z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["folder"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":24,"id":120,"name":"folder","prevSize":32,"code":59737},"setIdx":0,"setId":0,"iconIdx":89},{"icon":{"paths":["M370.704 544c0-17.674-14.326-32-32-32s-31.999 14.326-31.999 32v32h-32c-17.673 0-32 14.326-32 32s14.327 32 32 32h32v32c0 17.674 14.325 32 31.999 32s32-14.326 32-32v-32h32c17.674 0 32-14.326 32-32s-14.326-32-32-32h-32v-32z","M746.704 624c30.928 0 56-25.072 56-56s-25.072-56-56-56c-30.928 0-56 25.072-56 56s25.072 56 56 56z","M674.704 664c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-30.928 25.072-56 56-56s56 25.072 56 56z","M706.704 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v96h-128c-17.674 0-32 14.327-32 32v96h-191.999c-106.038 0-192 85.962-192 192v128c0 106.038 85.961 192 192 192h447.999c106.038 0 192-85.962 192-192v-128c0-106.038-85.962-192-192-192h-192v-64h128c17.674 0 32-14.327 32-32v-128zM866.704 544v128c0 70.691-57.306 128-128 128h-447.999c-70.692 0-128-57.309-128-128v-128c0-70.691 57.308-128 128-128h447.999c70.694 0 128 57.309 128 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["game"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":23,"id":119,"name":"game","prevSize":32,"code":59738},"setIdx":0,"setId":0,"iconIdx":90},{"icon":{"paths":["M494.31 170.648l23.037 24.005 23.629-24.005 74.669 0.041v75.854h74.669v75.856h74.666v26.518h0.003v504.419h-522.678v-682.689h252.006zM540.976 246.503h-224.004v530.979h373.341v-379.229h-149.338v-151.75z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["giphy-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":21,"id":117,"name":"giphy-monochromatic","prevSize":32,"code":59739},"setIdx":0,"setId":0,"iconIdx":91},{"icon":{"paths":["M634.803 170.664h-256.112l-264.387 460.802 124.984 221.866h534.916l124.982-221.866-264.384-460.802zM367.814 631.466l138.931-239.789 138.934 239.789h-277.866z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["google-drive-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":19,"id":115,"name":"google-drive-monochromatic","prevSize":32,"code":59756},"setIdx":0,"setId":0,"iconIdx":92},{"icon":{"paths":["M129.354 272c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32s-14.326 32-32 32h-704c-17.673 0-32-14.327-32-32zM289.354 432c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM289.354 752c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM449.354 624c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.326-32 32s14.326 32 32 32zM385.354 400c-17.674 0-32 14.326-32 32s14.326 32 32 32h480c17.674 0 32-14.326 32-32s-14.326-32-32-32h-480zM353.354 752c0-17.674 14.326-32 32-32h480c17.674 0 32 14.326 32 32s-14.326 32-32 32h-480c-17.674 0-32-14.326-32-32zM577.354 560c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.674 0 32-14.326 32-32s-14.326-32-32-32h-288z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["group-by-type"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":150,"id":113,"name":"group-by-type","prevSize":32,"code":59757},"setIdx":0,"setId":0,"iconIdx":93},{"icon":{"paths":["M170.668 245.336c0-17.673 14.327-32 32-32h640.846c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640.846c-17.673 0-32-14.327-32-32zM170.668 501.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32zM170.668 757.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["hamburguer"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":148,"id":111,"name":"hamburguer","prevSize":32,"code":59758},"setIdx":0,"setId":0,"iconIdx":94},{"icon":{"paths":["M832 512c0 176.73-143.27 320-320 320s-320-143.27-320-320h-64c0 212.077 171.923 384 384 384s384-171.923 384-384c0-212.077-171.923-384-384-384-123.718 0-233.772 58.508-304 149.364v-101.364c0-17.673-14.327-32-32-32s-32 14.327-32 32v192c0 17.674 14.327 32 32 32h176c17.674 0 32-14.326 32-32s-14.326-32-32-32h-107.295c57.24-86.756 155.583-144 267.295-144 176.73 0 320 143.27 320 320z","M544 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["history"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":145,"id":110,"name":"history","prevSize":32,"code":59759},"setIdx":0,"setId":0,"iconIdx":95},{"icon":{"paths":["M522.042 195.354l224.464 260.044v366.234c0 5.856-4.752 10.605-10.614 10.605h-136.416v-149.821c0-23.424-19.014-42.413-42.47-42.413h-85.955c-23.453 0-42.467 18.989-42.467 42.413v149.821h-136.41c-5.864 0-10.617-4.749-10.617-10.605v-366.307l224.403-259.971c4.237-4.907 11.85-4.907 16.083 0zM560.57 895.856h175.322c41.043 0 74.32-33.232 74.32-74.224v-244.205h56.227c12.454 0 23.766-7.251 28.954-18.557 5.19-11.309 3.302-24.602-4.829-34.022l-320.272-371.033c-29.648-34.347-82.934-34.347-112.582 0l-320.27 371.033c-8.132 9.421-10.020 22.714-4.831 34.022 5.188 11.306 16.501 18.557 28.956 18.557h56.288v244.205c0 40.992 33.274 74.224 74.32 74.224h175.316c1.174 0.096 2.362 0.147 3.562 0.147h85.955c1.2 0 2.39-0.051 3.565-0.147z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["home"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":146,"id":109,"name":"home","prevSize":32,"code":59760},"setIdx":0,"setId":0,"iconIdx":96},{"icon":{"paths":["M406.685 405.334c0 47.126-38.205 85.331-85.334 85.331-47.127 0-85.332-38.205-85.332-85.331 0-47.13 38.205-85.334 85.332-85.334 47.13 0 85.334 38.205 85.334 85.334z","M97.352 192c0-17.673 14.327-32 32-32h767.999c17.674 0 32 14.327 32 32v640c0 17.674-14.326 32-32 32h-767.999c-17.673 0-32-14.326-32-32v-640zM161.352 764.163l151.704-176.989c9.271-10.813 24.57-14.202 37.536-8.307l153.123 69.603 160.474-204.24c6.010-7.651 15.174-12.15 24.902-12.23s18.963 4.272 25.098 11.821l151.162 186.048v-405.869h-703.999v540.163zM214.927 800h650.423v-68.64l-175.581-216.099-166.781 212.269-176.989-80.448-131.073 152.918z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":147,"id":108,"name":"image","prevSize":32,"code":59761},"setIdx":0,"setId":0,"iconIdx":97},{"icon":{"paths":["M512 873.027c-199.389 0-361.026-161.635-361.026-361.024s161.636-361.026 361.026-361.026c199.389 0 361.024 161.637 361.024 361.026s-161.635 361.024-361.024 361.024zM512 938.669c235.642 0 426.666-191.024 426.666-426.666s-191.024-426.667-426.666-426.667c-235.642 0-426.667 191.025-426.667 426.667s191.025 426.666 426.667 426.666zM544.819 347.901c0 18.125-14.694 32.819-32.819 32.819-18.128 0-32.822-14.694-32.822-32.819 0-18.128 14.694-32.821 32.822-32.821 18.125 0 32.819 14.693 32.819 32.821zM512 413.542c-18.128 0-32.822 14.694-32.822 32.819v229.744c0 18.125 14.694 32.819 32.822 32.819 18.125 0 32.819-14.694 32.819-32.819v-229.744c0-18.125-14.694-32.819-32.819-32.819z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["info"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":144,"id":107,"name":"info","prevSize":32,"code":59762},"setIdx":0,"setId":0,"iconIdx":98},{"icon":{"paths":["M512 864c-194.404 0-352-157.597-352-352s157.596-352 352-352c194.403 0 352 157.596 352 352s-157.597 352-352 352zM512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.75 0-416 186.25-416 416s186.25 416 416 416zM662.627 361.373c12.496 12.496 12.496 32.758 0 45.254l-105.373 105.373 105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l105.373-105.373-105.373-105.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373 105.373-105.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["input-clear"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":143,"id":106,"name":"input-clear","prevSize":32,"code":59763},"setIdx":0,"setId":0,"iconIdx":99},{"icon":{"paths":["M384 288c-17.674 0-32 14.327-32 32s14.326 32 32 32h256c17.674 0 32-14.326 32-32s-14.326-32-32-32h-256z","M352 448c0-17.674 14.326-32 32-32h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M512 640c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M224 224v576c0 35.347 28.654 64 64 64h448c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-448c-35.346 0-64 28.654-64 64zM288 800v-576h448v576h-448z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["instance"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":18,"id":105,"name":"instance","prevSize":32,"code":59764},"setIdx":0,"setId":0,"iconIdx":100},{"icon":{"paths":["M544 352c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32zM559.61 436.995c2.755-17.456-9.162-33.843-26.618-36.598-17.456-2.758-33.843 9.162-36.598 26.618l-48 304c-2.758 17.456 9.158 33.843 26.618 36.598 17.456 2.755 33.84-9.162 36.598-26.618l48-304z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["italic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":17,"id":104,"name":"italic","prevSize":32,"code":59765},"setIdx":0,"setId":0,"iconIdx":101},{"icon":{"paths":["M497.136 169.372c12.499 12.497 12.499 32.758 0 45.255l-35.958 35.96c1.078-0.016 2.163-0.025 3.245-0.025h191.152c115.11 0 208.426 93.316 208.426 208.426 0 115.107-93.315 208.422-208.426 208.422h-15.574v-64h15.574c79.763 0 144.426-64.659 144.426-144.422 0-79.766-64.662-144.426-144.426-144.426h-191.152c-1.030 0-2.058 0.011-3.082 0.032l35.795 35.796c12.499 12.499 12.499 32.758 0 45.258-12.496 12.496-32.758 12.496-45.254 0l-90.509-90.511c-12.496-12.497-12.496-32.758 0-45.255l90.509-90.51c12.496-12.497 32.758-12.497 45.254 0zM201.318 500.746h56.159v325.818h-59.023v-268.387h-1.909l-76.204 48.682v-54.090l80.977-52.022zM570.41 719.494c0 64.749-48.045 111.523-116.931 111.523-63.638 0-110.886-38.979-112.48-93.069h57.274c2.070 26.726 25.773 45.341 55.206 45.341 34.838 0 59.978-25.933 59.818-62.365 0.16-36.909-25.613-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.024-168h188.998v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.184 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["jump-backward"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":16,"id":103,"name":"jump-backward","prevSize":32,"code":59766},"setIdx":0,"setId":0,"iconIdx":102},{"icon":{"paths":["M494.861 169.372c-12.496 12.497-12.496 32.758 0 45.255l35.962 35.96c-1.082-0.016-2.163-0.025-3.248-0.025h-191.149c-115.111 0-208.426 93.316-208.426 208.426 0 115.107 93.315 208.422 208.426 208.422h15.574v-64h-15.574c-79.764 0-144.426-64.659-144.426-144.422 0-79.766 64.661-144.426 144.426-144.426h191.149c1.030 0 2.061 0.011 3.085 0.032l-35.798 35.796c-12.496 12.499-12.496 32.758 0 45.258 12.499 12.496 32.758 12.496 45.258 0l90.509-90.511c12.496-12.497 12.496-32.758 0-45.255l-90.509-90.51c-12.499-12.497-32.758-12.497-45.258 0zM521.318 500.746h56.157v325.818h-59.021v-268.387h-1.91l-76.205 48.682v-54.090l80.979-52.022zM890.41 719.494c0 64.749-48.048 111.523-116.934 111.523-63.635 0-110.886-38.979-112.477-93.069h57.274c2.067 26.726 25.773 45.341 55.203 45.341 34.842 0 59.978-25.933 59.821-62.365 0.157-36.909-25.616-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.021-168h189.002v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.181 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["jump-forward"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":15,"id":102,"name":"jump-forward","prevSize":32,"code":59767},"setIdx":0,"setId":0,"iconIdx":103},{"icon":{"paths":["M769.296 649.373c12.496 12.496 12.496 32.758 0 45.254l-192 192c-12.499 12.496-32.758 12.496-45.258 0l-192-192c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.258 0l137.37 137.373v-578.746h-192v192c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-224c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v610.746l137.373-137.373c12.499-12.496 32.758-12.496 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["jump-to-message"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":14,"id":101,"name":"jump-to-message","prevSize":32,"code":59768},"setIdx":0,"setId":0,"iconIdx":104},{"icon":{"paths":["M576 256c0 35.346-28.653 64-64 64s-64-28.654-64-64c0-35.346 28.653-64 64-64s64 28.654 64 64z","M576 512c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z","M576 768c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["kebab"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":13,"id":100,"name":"kebab","prevSize":32,"code":59769},"setIdx":0,"setId":0,"iconIdx":105},{"icon":{"paths":["M160 224c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h704c35.347 0 64-28.653 64-64v-448c0-35.346-28.653-64-64-64h-704zM160 288h704v448h-704v-448zM256 352c-17.673 0-32 14.326-32 32s14.327 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM256 512c0-17.674 14.327-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.673 0-32-14.326-32-32zM480 480c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM640 512c0-17.674 14.326-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.674 0-32-14.326-32-32zM480 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM320 640c0-17.674 14.326-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-320c-17.674 0-32-14.326-32-32zM704 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["keyboard"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":12,"id":99,"name":"keyboard","prevSize":32,"code":59770},"setIdx":0,"setId":0,"iconIdx":106},{"icon":{"paths":["M681.904 256c0-17.673-14.326-32-32-32s-32 14.327-32 32v56.875l-80.346 13.998c-17.411 3.034-29.069 19.61-26.035 37.021 3.034 17.408 19.61 29.066 37.021 26.032l69.36-12.086v69.373c-30.384 6.851-60.461 20.074-84.154 43.139-27.923 27.184-44.070 65.238-44.070 113.808 0 25.741 6.262 48.262 18.451 66.621 12.186 18.349 29.062 30.682 47.251 38 35.357 14.221 76.72 10.173 108.128-4.579l1.206-0.566c31.126-14.621 62.493-29.354 90.723-57.818 21.325-21.507 39.709-49.539 56.848-88.678 5.654 9.498 9.594 20.966 10.285 34.339 1.632 31.526-14.275 82.813-87.955 153.418-12.758 12.227-13.19 32.483-0.963 45.245 12.227 12.758 32.486 13.19 45.245 0.963 80.192-76.851 110.586-145.034 107.59-202.934-2.986-57.658-38.586-96.022-70.675-113.955-20.774-13.014-50.214-22.826-81.216-28.288-16.624-2.931-34.47-4.749-52.694-4.995v-74.243l101.718-17.722c17.411-3.034 29.066-19.61 26.032-37.019-3.034-17.411-19.606-29.066-37.018-26.032l-90.733 15.809v-45.724zM578.394 536.208c10.163-9.891 23.565-17.475 39.51-22.704v138.653c-13.443 2.547-27.485 1.731-38.634-2.752-7.712-3.104-13.658-7.757-17.824-14.029-4.157-6.262-7.766-15.997-7.766-31.216 0-33.35 10.563-54.176 24.714-67.952zM709.994 600.752c-8.682 8.755-17.782 15.706-28.090 22.074v-117.888c14.125 0.24 28.224 1.661 41.587 4.016 13.587 2.397 25.683 5.622 35.763 9.165-16.88 42.038-33.069 66.304-49.261 82.634zM247.704 565.334h98.386l-49.193-184.883-49.193 184.883zM390.851 733.562l-27.734-104.227h-132.442l-27.732 104.227c-4.544 17.078-22.073 27.242-39.152 22.694-17.079-4.544-27.24-22.070-22.696-39.152l106.323-399.598c13.494-50.714 85.462-50.713 98.956 0l106.323 399.598c4.544 17.082-5.616 34.608-22.694 39.152-17.078 4.547-34.608-5.616-39.152-22.694z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["language"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":11,"id":98,"name":"language","prevSize":32,"code":59771},"setIdx":0,"setId":0,"iconIdx":107},{"icon":{"paths":["M253.489 275.612l-13.972 14.271c-37.092 37.883-36.45 98.664 1.435 135.758l145.62 142.573c37.885 37.091 98.666 36.448 135.757-1.437l13.971-14.269c0.723-0.739 1.434-1.488 2.128-2.243l0.102 0.099c5.805-5.904 13.885-9.568 22.822-9.568 17.674 0 32 14.326 32 32 0 9.6-4.227 18.211-10.922 24.077l-0.4 0.41-13.971 14.269c-61.821 63.142-163.12 64.214-226.262 2.394l-145.62-142.576c-63.141-61.818-64.212-163.119-2.392-226.26l13.972-14.27c61.82-63.141 163.121-64.212 226.26-2.392l74.694 73.131c0.976 0.847 1.901 1.752 2.768 2.71l0.374 0.366-0.026 0.026c4.931 5.63 7.923 13.005 7.923 21.078 0 17.674-14.326 32-32 32-7.83 0-15.005-2.813-20.566-7.482l-0.106 0.109-77.837-76.206c-37.882-37.092-98.664-36.45-135.756 1.435zM789.213 768.003l13.974-14.269c37.091-37.885 36.448-98.666-1.437-135.757l-145.619-142.576c-37.885-37.091-98.666-36.448-135.757 1.437l-13.974 14.269c-0.723 0.739-1.43 1.488-2.125 2.243l-0.102-0.099c-5.805 5.907-13.885 9.568-22.822 9.568-17.674 0-32-14.326-32-32 0-9.6 4.227-18.211 10.922-24.077l0.397-0.406 13.974-14.272c61.818-63.142 163.12-64.211 226.259-2.39l145.622 142.573c63.139 61.821 64.211 163.12 2.39 226.262l-13.971 14.269c-61.821 63.142-163.12 64.211-226.262 2.394l-74.691-73.133c-0.976-0.845-1.901-1.75-2.768-2.71l-0.374-0.365 0.026-0.026c-4.934-5.629-7.923-13.005-7.923-21.078 0-17.674 14.326-32 32-32 7.83 0 15.005 2.813 20.566 7.482l0.106-0.109 77.834 76.208c37.885 37.091 98.666 36.448 135.757-1.437z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["link"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":10,"id":97,"name":"link","prevSize":32,"code":59772},"setIdx":0,"setId":0,"iconIdx":108},{"icon":{"paths":["M439.274 704.374c0-33.645 26.278-47.677 72.726-47.677s72.73 14.032 72.73 47.677c0 32.96-13.19 111.069-23.914 149.76-4.963 17.808-22.080 25.171-48.816 25.171s-43.85-7.363-48.813-25.174c-10.717-38.666-23.914-116.688-23.914-149.757zM616.778 870.374l0.026-0.090c6.176-22.291 12.566-53.869 17.386-83.453 4.688-28.787 8.72-60.707 8.72-82.458 0-35.891-15.811-67.802-46.797-87.114-26.035-16.227-57.152-19.926-84.112-19.926-26.957 0-58.077 3.699-84.112 19.926-30.982 19.312-46.797 51.222-46.797 87.114 0 21.805 4.035 53.728 8.726 82.515 4.819 29.578 11.21 61.123 17.379 83.392l0.026 0.086c7.402 26.557 24.982 45.664 46.87 56.467 19.472 9.61 40.426 11.834 57.907 11.834 17.485 0 38.435-2.224 57.907-11.83 21.888-10.8 39.469-29.907 46.87-56.464zM459.635 460.8c0-28.275 23.446-51.2 52.365-51.2s52.365 22.925 52.365 51.2c0 28.278-23.446 51.2-52.365 51.2s-52.365-22.922-52.365-51.2zM512 341.334c-67.478 0-122.182 53.488-122.182 119.466 0 65.981 54.704 119.469 122.182 119.469s122.182-53.488 122.182-119.469c0-65.978-54.704-119.466-122.182-119.466zM677.802 537.254c-6.662 13.792-3.882 31.11 6.278 42.573 14.086 15.894 39.85 17.939 50.205-0.602 19.642-35.174 30.806-75.526 30.806-118.426 0-136.672-113.315-247.465-253.091-247.465-139.779 0-253.092 110.793-253.092 247.465 0 42.899 11.164 83.251 30.806 118.426 10.354 18.541 36.119 16.496 50.205 0.602 10.16-11.462 12.938-28.781 6.275-42.573-11.203-23.187-17.469-49.104-17.469-76.454 0-98.97 82.054-179.199 183.274-179.199s183.27 80.229 183.27 179.199c0 27.35-6.262 53.267-17.469 76.454zM730.16 699.795c-0.304-10.659 3.542-21.072 10.928-28.762 52.771-54.957 85.094-128.902 85.094-210.234 0-169.661-140.666-307.199-314.182-307.199s-314.182 137.538-314.182 307.199c0 81.331 32.323 155.28 85.093 210.234 7.386 7.69 11.234 18.102 10.928 28.762-0.833 29.018-31.273 47.917-52.121 27.715-70.223-68.042-113.718-162.41-113.718-266.71 0-207.363 171.923-375.465 384-375.465s384 168.102 384 375.465c0 104.304-43.498 198.672-113.722 266.714-20.848 20.202-51.286 1.302-52.118-27.718z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["live-streaming"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":9,"id":96,"name":"live-streaming","prevSize":32,"code":59773},"setIdx":0,"setId":0,"iconIdx":109},{"icon":{"paths":["M700.144 361.891c4.685-24.973 34.704-34.093 49.13-13.171 31.994 46.403 50.726 102.653 50.726 163.28s-18.733 116.88-50.726 163.283c-14.426 20.922-44.445 11.802-49.13-13.174l-1.706-9.101c-1.581-8.429 0.384-17.082 4.858-24.403 20.749-33.965 32.704-73.888 32.704-116.605 0-42.714-11.955-82.637-32.704-116.605-4.474-7.318-6.438-15.971-4.858-24.4l1.706-9.104z","M320.704 395.395c-20.748 33.968-32.704 73.891-32.704 116.605 0 42.717 11.956 82.64 32.704 116.605 4.474 7.322 6.438 15.974 4.858 24.403l-1.706 9.101c-4.684 24.976-34.705 34.096-49.128 13.174-31.994-46.403-50.728-102.656-50.728-163.283s18.733-116.877 50.728-163.28c14.424-20.922 44.444-11.802 49.128 13.171l1.706 9.104c1.581 8.429-0.384 17.082-4.858 24.4z","M728.765 209.256l-0.515 2.747c-2.234 11.911 2.534 23.967 11.763 31.821 75.866 64.565 123.987 160.751 123.987 268.175 0 107.427-48.122 203.613-123.987 268.176-9.229 7.856-13.997 19.914-11.763 31.824l0.515 2.746c4.192 22.362 29.69 33.194 47.261 18.746 92.794-76.294 151.974-191.981 151.974-321.491 0-129.507-59.181-245.193-151.974-321.489-17.571-14.448-43.069-3.615-47.261 18.745z","M283.986 243.825c9.228-7.854 13.998-19.911 11.764-31.821l-0.515-2.747c-4.192-22.359-29.69-33.193-47.262-18.745-92.793 76.296-151.973 191.981-151.973 321.489 0 129.51 59.18 245.197 151.973 321.491 17.572 14.448 43.070 3.616 47.262-18.746l0.515-2.746c2.233-11.91-2.536-23.968-11.764-31.824-75.864-64.563-123.986-160.749-123.986-268.176 0-107.424 48.122-203.61 123.986-268.175z","M608 512c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.018 42.979-96 96-96s96 42.982 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["live"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":8,"id":95,"name":"live","prevSize":32,"code":59774},"setIdx":0,"setId":0,"iconIdx":110},{"icon":{"paths":["M397.011 527.334c26.576 0 48.122-21.587 48.122-48.214s-21.546-48.214-48.122-48.214c-26.576 0-48.118 21.587-48.118 48.214s21.542 48.214 48.118 48.214z","M589.491 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M733.853 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M88.039 813.683l119.625 31.283c85.312 22.307 173.45-16.256 238.691-79.709 29.501 4.794 59.875 7.242 90.678 7.242 218.294 0 404.339-122.864 404.339-294.518 0-171.664-186.042-294.52-404.339-294.52-218.314 0-404.351 122.852-404.34 294.523 0 65.072 27.642 125.014 75.655 173.587-2.847 24.835-14.596 44.73-36.049 68.55l-84.261 93.562zM537.034 258.997c183.13 0 331.6 98.043 331.6 218.984 0 120.931-148.47 218.982-331.6 218.982-40.781 0-79.834-4.877-115.91-13.763-36.669 45.6-117.335 109.008-195.697 88.518 25.489-28.304 63.251-76.131 55.168-154.909-46.968-37.779-75.162-86.134-75.162-138.829-0.008-120.95 148.461-218.984 331.6-218.984z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["livechat-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":31,"id":93,"name":"livechat-monochromatic","prevSize":32,"code":59775},"setIdx":0,"setId":0,"iconIdx":111},{"icon":{"paths":["M430.842 103.994c80.698-16.052 164.339-7.813 240.355 23.673 76.013 31.486 140.982 84.806 186.694 153.217s70.109 148.842 70.109 231.117h-64c0-69.619-20.643-137.674-59.322-195.561s-93.654-103.003-157.974-129.645c-64.32-26.642-135.094-33.613-203.376-20.031s-131.002 47.107-180.23 96.335c-49.228 49.228-82.753 111.948-96.335 180.229s-6.611 139.056 20.031 203.376c26.642 64.32 71.759 119.296 129.645 157.974s125.941 59.322 195.561 59.322v64c-82.278 0-162.707-24.397-231.117-70.109-68.411-45.709-121.731-110.682-153.217-186.694v0c-31.486-76.013-39.724-159.658-23.673-240.355 16.052-80.694 55.672-154.819 113.85-212.998s132.304-97.799 212.998-113.85z","M593.158 920.006c-80.698 16.051-164.339 7.814-240.355-23.674-76.014-31.485-140.984-84.806-186.695-153.216s-70.108-148.842-70.108-231.117h64c0 69.619 20.644 137.674 59.323 195.562 38.678 57.885 93.653 103.002 157.973 129.645 64.32 26.64 135.094 33.613 203.376 20.029 68.282-13.581 131.002-47.107 180.23-96.333 49.229-49.229 82.752-111.949 96.333-180.23 13.584-68.282 6.611-139.056-20.029-203.376-26.643-64.32-71.76-119.295-129.645-157.973-57.888-38.678-125.942-59.323-195.562-59.323v-64c82.278 0 162.707 24.398 231.117 70.109 68.413 45.711 121.731 110.681 153.216 186.695v0c31.488 76.013 39.725 159.658 23.674 240.355-16.051 80.694-55.67 154.819-113.85 212.998s-132.304 97.798-212.998 113.85z"],"attrs":[{"fill":"rgb(228, 231, 234)"},{"fill":"rgb(9, 90, 210)"}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["loading"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":10},{"f":1}]}},"attrs":[{"fill":"rgb(228, 231, 234)"},{"fill":"rgb(9, 90, 210)"}],"properties":{"order":32,"id":92,"name":"loading","prevSize":32,"code":59776,"codes":[59776,59777]},"setIdx":0,"setId":0,"iconIdx":112},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.326 32 32 32h341.334c17.674 0 32-14.326 32-32s-14.326-32-32-32h-341.334zM85.335 298.672c0-70.692 57.308-128 128-128h597.334c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.334c-70.692 0-128-57.306-128-128v-298.666zM213.335 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.334c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.334zM256 320c0-11.782 9.551-21.333 21.333-21.333h170.667c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.667c-11.782 0-21.333-9.552-21.333-21.334zM277.333 554.666c-11.782 0-21.333 9.552-21.333 21.334s9.551 21.334 21.333 21.334h85.332c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-85.332zM554.666 320c0-11.782 9.552-21.333 21.334-21.333h170.666c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.666c-11.782 0-21.334-9.552-21.334-21.334zM448 554.666c-11.782 0-21.334 9.552-21.334 21.334s9.552 21.334 21.334 21.334h298.666c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-298.666zM256 448c0-11.782 9.551-21.334 21.333-21.334h213.332c11.782 0 21.334 9.552 21.334 21.334s-9.552 21.334-21.334 21.334h-213.332c-11.782 0-21.333-9.552-21.333-21.334zM618.666 426.666c-11.782 0-21.331 9.552-21.331 21.334s9.549 21.334 21.331 21.334h128c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["log-view"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":33,"id":91,"name":"log-view","prevSize":32,"code":59778},"setIdx":0,"setId":0,"iconIdx":113},{"icon":{"paths":["M176 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM521.373 329.373c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.254l-105.373 105.373h418.746c17.674 0 32 14.326 32 32s-14.326 32-32 32h-418.746l105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-160-160c-12.496-12.496-12.496-32.758 0-45.254l160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["login"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":34,"id":90,"name":"login","prevSize":32,"code":59779},"setIdx":0,"setId":0,"iconIdx":114},{"icon":{"paths":["M268.099 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM994.726 489.373l-160-160c-12.496-12.497-32.758-12.497-45.254 0s-12.496 32.758 0 45.254l105.373 105.373h-418.746c-17.674 0-32 14.326-32 32s14.326 32 32 32h418.746l-105.373 105.373c-12.496 12.496-12.496 32.758 0 45.254s32.758 12.496 45.254 0l160-160c12.496-12.496 12.496-32.758 0-45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["logout"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":35,"id":89,"name":"logout","prevSize":32,"code":59780},"setIdx":0,"setId":0,"iconIdx":115},{"icon":{"paths":["M192 736h640v-448h-640v448zM128 256c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32v512c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512zM305.304 389.082c-14.866-9.555-34.665-5.251-44.222 9.613-9.557 14.867-5.253 34.666 9.613 44.224l241.304 155.123 241.306-155.123c14.864-9.558 19.168-29.357 9.613-44.224-9.558-14.864-29.357-19.168-44.224-9.613l-206.694 132.877-206.696-132.877z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["mail"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":36,"id":88,"name":"mail","prevSize":32,"code":59781},"setIdx":0,"setId":0,"iconIdx":116},{"icon":{"paths":["M302.769 192h418.463l23.187 72.727h-0.211l23.792 63.999c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818l23.794-63.999h-0.213l23.188-72.727zM212.406 264.727l36.491-114.448c4.231-13.27 16.56-22.279 30.488-22.279h465.23c13.93 0 26.259 9.009 30.49 22.279l56.896 178.447c0 33.939-12.083 64.925-32 88.515v350.778c0 53.018-42.979 96-96 96h-384c-53.019 0-96-42.982-96-96v-350.778c-19.916-23.59-32-54.576-32-88.515l20.406-63.999zM288 458.33v309.69c0 17.67 14.327 32 32 32h128v-192.019h128v192.019h128c17.674 0 32-14.33 32-32v-309.69c-10.227 2.752-20.95 4.214-32 4.214-38.23 0-72.547-17.52-96-45.302-23.453 27.782-57.77 45.302-96 45.302s-72.547-17.52-96-45.302c-23.453 27.782-57.77 45.302-96 45.302-11.050 0-21.772-1.462-32-4.214z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["marketplace"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":37,"id":87,"name":"marketplace","prevSize":32,"code":59782},"setIdx":0,"setId":0,"iconIdx":117},{"icon":{"paths":["M773.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M517.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M261.073 576c-35.346 0-64-28.653-64-64s28.654-64 64-64c35.346 0 63.999 28.653 63.999 64s-28.652 64-63.999 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["meatballs"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":38,"id":86,"name":"meatballs","prevSize":32,"code":59783},"setIdx":0,"setId":0,"iconIdx":118},{"icon":{"paths":["M651.36 116.071c-57.242-19.989-105.792-20.069-138.358-20.071v64l-1.002-64c-92.006 0.342-297.345 47.824-381.242 242.995-17.897 38.97-34.758 103.344-34.758 173.005 0 69.958 17.020 146.285 52.216 207.875 23.229 40.653 92.799 131.376 191.179 173.536 94.861 40.656 206.368 52.349 296.49 16.301 16.41-6.563 24.39-25.187 17.827-41.597s-25.187-24.39-41.597-17.827c-69.878 27.952-163.171 20.445-247.51-15.699-80.819-34.64-141.384-112.451-160.821-146.464-28.804-50.41-43.784-115.418-43.784-176.125 0-60.765 15.020-116.182 29.055-146.589l0.184-0.4 0.173-0.406c69.507-162.181 243.823-204.604 323.589-204.605 31.594 0.002 70.877 0.296 117.258 16.493 46.147 16.114 101.389 48.779 161.824 116.767 43.658 49.115 63.533 114.977 69.389 177.713 5.891 63.12-2.854 118.189-11.546 142.093-6.4 17.6-20.429 45.44-59.392 45.699-18.259-0.806-72.822-14.672-83.12-69.568v-235.062c0-17.674-3.414-34.134-29.014-34.134-19.338 0-26.454 16.461-26.454 34.134v34.131c-35.181-39.859-95.402-68.266-152.746-68.266-106.038 0-192 85.962-192 192s85.962 192 192 192c62.179 0 117.658-29.555 152.746-75.386 25.715 71.078 102.57 93.027 137.014 94.134l0.515 0.016h0.512c82.643 0 111.715-64.806 120.086-87.83 12.64-34.762 21.674-99.696 15.12-169.907-6.589-70.595-29.379-151.401-85.277-214.287-66.902-75.265-131.075-114.597-188.557-134.67zM627.2 512c0 70.691-57.309 128-128 128s-128-57.309-128-128c0-70.691 57.309-128 128-128s128 57.309 128 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["mention"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":142,"id":85,"name":"mention","prevSize":32,"code":59784},"setIdx":0,"setId":0,"iconIdx":119},{"icon":{"paths":["M477.84 128c104.256 0 181.251 29.018 237.494 70.652l-44.317 44.317c-45.52-31.22-107.747-53.057-193.178-53.057-129.725 0-207.83 53.576-254.529 118.696-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-7.328 80.928 13.761 143.126 51.784 190.499l-43.879 43.878c-50.179-59.901-78.131-139.043-69.441-238.595 0.276-63.411 19.117-157.053 75.696-235.948 58.132-81.063 154.749-144.433 304.573-144.433zM822.848 332.499l-47.008 47.008c16.502 42.634 20.608 78.525 20.608 89.011v0.179c0 19.517 0 31.792-6.621 56.17-7.094 26.109-21.738 65.648-52.554 137.834-5.699 13.357-2.794 25.981 1.261 34.435 3.834 7.99 9.562 14.403 14.595 19.184 10.227 9.712 24.253 18.842 38.544 26.867 7.888 4.429 18.298 8.995 27.613 13.078l1.843 0.81c10.554 4.634 20.726 9.146 29.613 13.894 3.427 1.834 6.298 3.517 8.672 5.030-5.104 3.229-12.035 6.883-20.941 10.765-22.96 10.003-55.328 19.939-93.888 28.128-77.12 16.371-174.73 24.858-263.341 14.973-43.744-4.88-86.826-14.525-126.534-29.229l-47.542 47.542c52.771 23.018 110.492 36.886 167.267 43.222 96.387 10.752 200.71 1.517 282.909-15.936 41.098-8.726 77.731-19.731 105.68-31.907 13.91-6.064 26.618-12.822 36.858-20.342 9.427-6.925 20.739-17.344 25.61-32.016 7.392-22.269-2.957-40.509-12.816-51.139-9.427-10.166-22.106-17.939-32.954-23.738-11.309-6.048-23.626-11.472-33.891-15.978-11.059-4.854-18.934-8.317-24.054-11.194-9.914-5.565-17.437-10.538-22.506-14.57 27.421-64.81 42.214-104.589 50.048-133.424 8.774-32.304 8.797-50.986 8.797-72.64 0-20.106-7.053-75.501-35.267-136.019zM836.038 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-682.665 682.665c-12.497 12.499-32.758 12.499-45.255 0-12.497-12.496-12.497-32.755 0-45.254l682.666-682.666z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["message-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":57,"id":84,"name":"message-disabled","prevSize":32,"code":59785},"setIdx":0,"setId":0,"iconIdx":120},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.643 51.52 146.602 80.998 235.29 90.893 88.614 9.885 186.224 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.944-10.765-2.378-1.514-5.248-3.197-8.675-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.395-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.83 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.123 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.946 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["message"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":58,"id":83,"name":"message","prevSize":32,"code":59786},"setIdx":0,"setId":0,"iconIdx":121},{"icon":{"paths":["M512 128c75.546 0 138.861 52.356 155.645 122.762l-59.645 59.644v-22.405c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 24.067 8.858 46.067 23.488 62.915l-45.322 45.325c-26.182-28.49-42.166-66.499-42.166-108.24v-128c0-88.365 71.635-160 160-160zM561.35 568.243l102.893-102.893c-15.763 48.672-54.221 87.13-102.893 102.893zM288 416c0 72.154 23.181 123.101 55.328 159.078l-45.304 45.302c-43.428-47.35-74.024-113.99-74.024-204.381 0-17.674 14.327-32 32-32s32 14.326 32 32zM478.659 650.938l-51.808 51.808c18.56 6.374 36.579 10.806 53.149 13.635v115.619h-160c-17.673 0-32 14.326-32 32s14.327 32 32 32h384c17.674 0 32-14.326 32-32s-14.326-32-32-32h-160v-115.619c44.64-7.619 99.818-26.896 147.722-64.381 60.704-47.501 108.278-123.286 108.278-236 0-17.674-14.326-32-32-32s-32 14.326-32 32c0 92.086-37.757 149.632-83.722 185.6-46.464 36.358-102.736 51.581-140.278 54.326-9.971-0.73-21.264-2.339-33.341-4.989zM825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["microphone-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":59,"id":82,"name":"microphone-disabled","prevSize":32,"code":59787},"setIdx":0,"setId":0,"iconIdx":122},{"icon":{"paths":["M608 288c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 53.021 42.979 96 96 96s96-42.979 96-96v-128zM352 288c0-88.365 71.635-160 160-160s160 71.635 160 160v128c0 88.365-71.635 160-160 160s-160-71.635-160-160v-128zM256 384c17.673 0 32 14.326 32 32 0 92.086 37.757 149.632 83.722 185.6 46.464 36.358 102.736 51.581 140.278 54.326 37.542-2.746 93.814-17.968 140.278-54.326 45.962-35.968 83.722-93.514 83.722-185.6 0-17.674 14.326-32 32-32s32 14.326 32 32c0 112.714-47.574 188.499-108.278 236-47.904 37.485-103.082 56.762-147.722 64.381v115.619h160c17.674 0 32 14.326 32 32s-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32s14.327-32 32-32h160v-115.619c-44.64-7.619-99.818-26.896-147.722-64.381-60.703-47.501-108.278-123.286-108.278-236 0-17.674 14.327-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["microphone"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":60,"id":81,"name":"microphone","prevSize":32,"code":59788},"setIdx":0,"setId":0,"iconIdx":123},{"icon":{"paths":["M234.666 170.661c0-47.128 38.205-85.333 85.333-85.333h384.001c47.126 0 85.331 38.205 85.331 85.333v682.667c0 47.13-38.205 85.334-85.331 85.334h-384.001c-47.128 0-85.333-38.205-85.333-85.334v-682.667zM298.666 170.661v682.667c0 11.782 9.551 21.334 21.333 21.334h384.001c11.782 0 21.331-9.552 21.331-21.334v-682.667c0-11.782-9.549-21.333-21.331-21.333h-96.291c-2.653 24.002-23.002 42.672-47.709 42.672h-96c-24.707 0-45.056-18.67-47.709-42.672h-96.292c-11.782 0-21.333 9.551-21.333 21.333z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["mobile"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":61,"id":80,"name":"mobile","prevSize":32,"code":59789},"setIdx":0,"setId":0,"iconIdx":124},{"icon":{"paths":["M319.247 231.566c-62.882 49.504-135.086 136.549-141.94 266.127-5.762 108.922 37.404 187.184 89.915 241.51 53.258 55.098 115.702 84.925 144.25 94.438 41.859 13.955 114.269 29.536 234.643-15.603 34.858-13.072 73.165-42.096 108.304-78.426 14.272-14.755 27.616-30.294 39.6-45.773-28.778 9.293-61.699 17.754-96.589 23.594-56.192 9.405-119.29 12.32-179.411-0.237-2.49-0.518-4.96-1.030-7.408-1.536-22.195-4.576-42.733-8.816-62.589-17.648-23.091-10.275-43.805-25.891-69.299-51.386-42.096-42.096-89.142-107.222-89.371-213.843-1.569-34.080 4.622-81.878 13.764-129.216 4.624-23.946 10.142-48.465 16.132-72.003zM345.562 138.217c32.8-17.15 63.709 15.843 53.875 45.907-12.234 37.414-24.586 85.511-33.482 131.58-9.024 46.732-13.949 88.633-12.643 114.7l0.038 0.797v0.8c0 84.915 36.173 134.918 70.627 169.373 22.509 22.509 36.835 32.278 50.064 38.166 13.229 5.885 26.832 8.717 51.085 13.763 1.923 0.4 3.917 0.816 5.978 1.248 49.914 10.426 104.534 8.336 155.76-0.237 65.434-10.954 122.384-31.981 152.374-47.386 17.562-9.021 34.992-2.47 44.477 5.965 9.661 8.589 19.376 27.152 8.886 46.954-20.637 38.95-53.645 84.419-92.182 124.259-38.211 39.51-84.317 76.038-131.834 93.859-135.626 50.858-223.216 34.438-277.354 16.394-36.515-12.173-108.392-46.912-170.026-110.675-62.381-64.534-114.684-159.427-107.81-289.373 10.79-203.979 157.583-317.098 232.165-356.093z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["moon"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":62,"id":79,"name":"moon","prevSize":32,"code":59790},"setIdx":0,"setId":0,"iconIdx":125},{"icon":{"paths":["M144 160c-17.673 0-32 14.327-32 32s14.327 32 32 32h192c17.674 0 32-14.327 32-32s-14.326-32-32-32h-192zM700.4 346.646c11.795-13.165 32.026-14.272 45.187-2.48 13.162 11.795 14.272 32.026 2.477 45.187l-81.222 90.646h216.358c17.674 0 32 14.326 32 32s-14.326 32-32 32h-216.358l81.222 90.646c11.795 13.162 10.685 33.392-2.477 45.187-13.162 11.792-33.392 10.685-45.187-2.48l-129.030-144c-10.893-12.154-10.893-30.554 0-42.707l129.030-144zM112 512c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 640c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192zM112 352c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 800c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["move-to-the-queue"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":63,"id":78,"name":"move-to-the-queue","prevSize":32,"code":59791},"setIdx":0,"setId":0,"iconIdx":126},{"icon":{"paths":["M809.002 166.758c7.782 6.063 12.333 15.377 12.333 25.242v448h-0.112c0.074 1.734 0.112 3.478 0.112 5.229 0 69.053-57.309 125.030-128 125.030-70.694 0-128-55.978-128-125.030s57.306-125.030 128-125.030c23.312 0 45.171 6.090 64 16.73v-303.86l-384 96.798v409.136c0 69.053-57.309 125.037-128.001 125.037s-128-55.978-128-125.030c0-69.050 57.308-125.027 128-125.027 23.314 0 45.173 6.086 64 16.726v-325.777c0-14.66 9.962-27.446 24.177-31.029l448-112.93c9.568-2.411 19.709-0.276 27.491 5.788z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["musical-note"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":64,"id":77,"name":"musical-note","prevSize":32,"code":59792},"setIdx":0,"setId":0,"iconIdx":127},{"icon":{"paths":["M208 176c-35.346 0-64 28.654-64 64v576c0 35.347 28.654 64 64 64h576c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-576zM208 240h576v576h-576v-576zM698.627 558.15c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.339l1.318-123.594-309.341 308.774c-12.51 12.483-32.771 12.464-45.256-0.042-12.485-12.509-12.467-32.771 0.042-45.258l309.195-308.624-123.382 1.315c-17.674 0.189-32.154-13.984-32.339-31.654-0.189-17.674 13.984-32.15 31.654-32.339l201.92-2.157c8.605-0.093 16.886 3.286 22.97 9.37 6.086 6.086 9.462 14.365 9.373 22.97l-2.157 201.92z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["new-window"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":65,"id":76,"name":"new-window","prevSize":32,"code":59793},"setIdx":0,"setId":0,"iconIdx":128},{"icon":{"paths":["M781.837 402.634c0-5.245-0.154-10.454-0.461-15.622l-63.539 63.539v265.363h-265.363l-66.979 66.979h425.363c12.944 0 24.611-7.795 29.565-19.754 4.954-11.955 2.214-25.722-6.938-34.874l-51.648-51.648v-273.984zM704.765 217.373l-45.254 45.255c-35.638-35.351-84.704-57.189-138.867-57.189-108.909 0-197.194 88.287-197.194 197.195v196.054l-64.001 64v-260.054c0-144.254 116.941-261.195 261.194-261.195 71.837 0 136.899 29.001 184.122 75.934zM433.578 808.934c0 48.086 38.982 87.066 87.066 87.066s87.066-38.979 87.066-87.066h-174.131zM854.275 190.982c-11.334-11.334-29.709-11.334-41.043 0l-612.732 612.733c-11.333 11.331-11.333 29.709 0 41.040 11.334 11.334 29.709 11.334 41.043 0l612.732-612.731c11.334-11.333 11.334-29.709 0-41.043z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["notification-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":66,"id":75,"name":"notification-disabled","prevSize":32,"code":59794},"setIdx":0,"setId":0,"iconIdx":129},{"icon":{"paths":["M601.331 808.928h-174.154c0.003 48.090 38.989 87.072 87.078 87.072s87.075-38.982 87.075-87.072zM815.597 731.677c7.274 9.696 8.442 22.669 3.021 33.51s-16.499 17.69-28.621 17.69h-565.996c-12.943 0-24.611-7.798-29.564-19.757-4.953-11.955-2.215-25.718 6.937-34.87l51.653-51.654v-274.032c0-144.272 116.957-261.228 261.229-261.228s261.229 116.956 261.229 261.228v275.629l40.112 53.485zM711.485 715.894v-313.331c0-108.926-88.304-197.228-197.229-197.228-108.928 0-197.229 88.302-197.229 197.228v313.331h394.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["notification"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":67,"id":74,"name":"notification","prevSize":32,"code":59795},"setIdx":0,"setId":0,"iconIdx":130},{"icon":{"paths":["M712.051 512.675v54.89c-0.195 76.736-43.741 143.283-107.44 176.445-5.53-25.67-28.362-44.906-55.683-44.906h-72.502c-31.459 0-56.963 25.501-56.963 56.963v41.427c0 31.462 25.504 56.963 56.963 56.963h72.502c28.509 0 52.128-20.944 56.307-48.288 69.261-26.829 123.962-82.883 148.966-153.030 4.723 1.27 9.69 1.946 14.813 1.946h28.483c31.459 0 56.963-25.504 56.963-56.963v-85.446c0-31.459-25.504-56.963-56.963-56.963h-28.483v-28.483c0-141.572-114.765-256.338-256.336-256.338s-256.339 114.766-256.339 256.338v23.302h-28.483c-31.46 0-56.964 25.504-56.964 56.966v103.571c0 31.459 25.504 56.963 56.964 56.963h28.482c31.46 0 56.964-25.504 56.964-56.963v-36.253h0.149c-0.099-2.576-0.148-5.165-0.148-7.766v-139.821c0-110.111 89.263-199.374 199.375-199.374s199.373 89.263 199.373 199.374v85.446z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["omnichannel"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":123,"id":73,"name":"omnichannel","prevSize":32,"code":59796},"setIdx":0,"setId":0,"iconIdx":131},{"icon":{"paths":["M705.578 633.158c9.507-9.235 24.701-9.018 33.939 0.486 9.238 9.507 9.021 24.701-0.486 33.939l-208.275 202.387c-9.312 9.050-24.138 9.050-33.45 0l-208.276-202.387c-9.506-9.238-9.724-24.432-0.487-33.939 9.237-9.504 24.432-9.722 33.937-0.486l191.549 186.134 191.549-186.134zM705.578 411.584c9.507 9.238 24.701 9.021 33.939-0.486s9.021-24.701-0.486-33.939l-208.275-202.385c-9.312-9.051-24.138-9.051-33.45 0l-208.276 202.385c-9.506 9.238-9.724 24.432-0.487 33.939 9.237 9.504 24.432 9.725 33.937 0.486l191.549-186.134 191.549 186.134z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["order"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":124,"id":72,"name":"order","prevSize":32,"code":59797},"setIdx":0,"setId":0,"iconIdx":132},{"icon":{"paths":["M742.317 652.566c12.666-12.323 12.944-32.582 0.618-45.248-12.323-12.669-32.582-12.944-45.251-0.621l44.634 45.869zM512 832.019l-22.317 22.934c12.422 12.086 32.211 12.086 44.634 0l-22.317-22.934zM326.317 606.698c-12.667-12.323-32.927-12.048-45.252 0.621-12.324 12.666-12.047 32.925 0.619 45.248l44.632-45.869zM697.683 606.698l-208 202.387 44.634 45.869 208-202.387-44.634-45.869zM534.317 809.085l-208-202.387-44.632 45.869 207.999 202.387 44.634-45.869z","M742.317 371.456c12.666 12.323 12.944 32.582 0.618 45.251-12.323 12.666-32.582 12.944-45.251 0.618l44.634-45.869zM512 192.004l-22.317-22.935c12.422-12.087 32.211-12.087 44.634 0l-22.317 22.935zM326.317 417.325c-12.668 12.326-32.927 12.048-45.252-0.618-12.325-12.669-12.048-32.928 0.619-45.251l44.633 45.869zM697.683 417.325l-208-202.386 44.634-45.87 208 202.387-44.634 45.869zM534.317 214.939l-208 202.386-44.633-45.869 207.999-202.387 44.634 45.87z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"grid":0,"tags":["ordering-ascending"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":125,"id":71,"name":"ordering-ascending","prevSize":32,"code":59798,"codes":[59798,59799]},"setIdx":0,"setId":0,"iconIdx":133},{"icon":{"paths":["M281.684 371.434c-12.667 12.323-12.944 32.582-0.619 45.248 12.324 12.669 32.584 12.944 45.252 0.621l-44.633-45.869zM512 191.981l22.317-22.935c-12.422-12.087-32.211-12.087-44.634 0l22.317 22.935zM697.683 417.302c12.669 12.323 32.928 12.048 45.251-0.621 12.326-12.666 12.048-32.925-0.618-45.248l-44.634 45.869zM326.317 417.302l208-202.387-44.634-45.869-207.999 202.387 44.633 45.869zM489.683 214.916l208 202.387 44.634-45.869-208-202.387-44.634 45.869z","M281.684 652.544c-12.667-12.323-12.944-32.582-0.619-45.251 12.324-12.666 32.584-12.944 45.252-0.618l-44.633 45.869zM512 831.997l22.317 22.934c-12.422 12.086-32.211 12.086-44.634 0l22.317-22.934zM697.683 606.675c12.669-12.326 32.928-12.048 45.251 0.618 12.326 12.669 12.048 32.928-0.618 45.251l-44.634-45.869zM326.317 606.675l208 202.384-44.634 45.872-207.999-202.387 44.633-45.869zM489.683 809.059l208-202.384 44.634 45.869-208 202.387-44.634-45.872z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"grid":0,"tags":["ordering-descending"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":126,"id":70,"name":"ordering-descending","prevSize":32,"code":59800,"codes":[59800,59801]},"setIdx":0,"setId":0,"iconIdx":134},{"icon":{"paths":["M512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.752 0-416.001 186.25-416.001 416s186.25 416 416.001 416zM399.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256zM559.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["pause-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":128,"id":68,"name":"pause-filled","prevSize":32,"code":59802},"setIdx":0,"setId":0,"iconIdx":135},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352-194.405 0-352.001 157.596-352.001 352s157.596 352 352.001 352c194.403 0 352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416-229.752 0-416.001-186.25-416.001-416s186.25-416 416.001-416c229.75 0 416 186.25 416 416zM399.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32zM559.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["pause"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":129,"id":67,"name":"pause","prevSize":32,"code":59803},"setIdx":0,"setId":0,"iconIdx":136},{"icon":{"paths":["M825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672zM575.613 569.069l-44.707 44.707c7.846 5.904 15.846 11.453 23.533 16.016 9.2 5.459 22.838 12.579 36.973 13.222 16.224 0.736 31.446-5.302 42.47-10.976 11.741-6.042 22.79-13.824 31.744-20.944 1.053-0.838 2.134-1.232 2.883-1.341 0.403-0.061 0.611-0.032 0.688-0.013l121.094 59.075c-5.578 29.331-20.381 66.771-42.39 92.621-11.229 13.187-23.197 22.038-35.389 26.32-11.597 4.074-25.402 4.762-42.653-1.677-48.422-18.070-103.405-53.152-151.69-89.261-14.026-10.49-27.299-20.922-39.469-30.842l-44.387 44.39c14.186 11.683 29.84 24.061 46.445 36.48 49.808 37.248 110.448 76.56 167.261 97.76 30.275 11.299 59.149 11.238 85.197 2.086 25.45-8.938 46.090-25.786 62.246-44.755 31.866-37.424 50.634-88.144 57.059-126.246 4.72-27.987-11.776-51.77-33.136-62.192l-122.81-59.91c-24.41-11.907-51.462-6-69.834 8.611-7.008 5.571-14.544 10.739-21.443 14.291-5.574 2.867-8.931 3.741-10.314 4.003l-0.093-0.038c-0.992-0.4-3.731-1.514-8.57-4.387-3.277-1.942-6.87-4.301-10.71-7.002zM313.636 589.683l44.389-44.387c-9.92-12.17-20.349-25.44-30.838-39.466-36.109-48.285-71.192-103.267-89.263-151.69-6.437-17.251-5.748-31.056-1.675-42.652 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.291-36.814 92.622-42.392l59.075 121.095c0.019 0.077 0.048 0.285-0.013 0.688-0.109 0.752-0.502 1.83-1.341 2.883-7.12 8.954-14.902 20.003-20.944 31.744-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.134 7.763 27.773 13.222 36.973 4.563 7.686 10.109 15.683 16.013 23.53l44.707-44.707c-2.701-3.837-5.056-7.434-7.002-10.707-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.739 4.006-10.314 3.552-6.899 8.72-14.435 14.291-21.443 14.611-18.371 20.518-45.424 8.611-69.834l-59.91-122.809c-10.422-21.362-34.205-37.856-62.192-33.137-38.103 6.425-88.824 25.194-126.246 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.921 2.087 85.196 21.202 56.813 60.513 117.453 97.761 167.261 12.417 16.605 24.795 32.256 36.478 46.442z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":130,"id":66,"name":"phone-disabled","prevSize":32,"code":59804},"setIdx":0,"setId":0,"iconIdx":137},{"icon":{"paths":["M801.123 657.59c22.474 7.734 50.954 2.582 67.408-20.544 22.4-31.488 44.992-80.624 48.922-129.619 1.99-24.838-0.691-51.344-12.368-75.661-11.949-24.89-32.32-45.35-61.718-58.768-55.165-25.181-125.84-40.262-187.398-49.146-61.946-8.936-117.494-11.98-143.965-11.98v62.469c23.2 0 75.757 2.787 135.043 11.341 59.677 8.611 123.36 22.682 170.381 44.144 16.749 7.645 26.022 17.894 31.344 28.973 5.59 11.651 7.795 26.371 6.413 43.635-2.717 33.843-18.723 70.784-35.52 95.469l-127.398-43.853c-0.067-0.042-0.237-0.17-0.48-0.496-0.451-0.608-0.934-1.651-1.088-2.989-1.296-11.363-3.606-24.678-7.635-37.254-3.786-11.808-10.278-26.842-22.272-37.792-10.451-9.539-25.126-14.15-35.494-16.794-11.914-3.040-25.568-5.181-38.944-6.717-26.858-3.088-55.773-4.093-74.352-4.093v62.47c16.902 0 43.338 0.938 67.219 3.683 11.99 1.379 22.554 3.123 30.64 5.187 5.45 1.389 8.173 2.541 9.162 2.957l0.093 0.038c0.79 1.165 2.544 4.154 4.458 10.125 2.368 7.392 4.045 16.374 5.059 25.267 2.659 23.325 17.61 46.63 43.29 55.469l129.203 44.477zM222.875 657.584c-22.474 7.738-50.954 2.586-67.407-20.544-22.4-31.485-44.993-80.621-48.922-129.616-1.992-24.838 0.691-51.344 12.366-75.664 11.949-24.886 32.321-45.347 61.719-58.765 55.165-25.181 125.841-40.262 187.4-49.146 61.946-8.937 117.494-11.98 143.965-11.98v62.47c-23.2 0-75.757 2.787-135.046 11.341-59.674 8.608-123.358 22.682-170.378 44.144-16.748 7.645-26.024 17.894-31.343 28.973-5.593 11.651-7.797 26.371-6.412 43.635 2.714 33.843 18.721 70.784 35.518 95.469l127.4-43.856c0.067-0.038 0.234-0.166 0.477-0.493 0.454-0.611 0.938-1.651 1.091-2.989 1.296-11.363 3.606-24.682 7.635-37.254 3.786-11.808 10.275-26.842 22.272-37.792 10.448-9.542 25.126-14.15 35.491-16.794 11.917-3.040 25.568-5.181 38.947-6.717 26.858-3.088 55.77-4.093 74.349-4.093v62.47c-16.899 0-43.338 0.938-67.216 3.683-11.99 1.376-22.554 3.123-30.64 5.187-5.453 1.389-8.176 2.541-9.162 2.957l-0.093 0.038c-0.79 1.162-2.547 4.154-4.458 10.125-2.371 7.389-4.045 16.371-5.059 25.267-2.659 23.322-17.61 46.627-43.293 55.469l-129.202 44.474z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone-end"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":131,"id":65,"name":"phone-end","prevSize":32,"code":59805},"setIdx":0,"setId":0,"iconIdx":138},{"icon":{"paths":["M410.502 204.616c-10.419-21.362-34.202-37.856-62.189-33.137-38.104 6.425-88.825 25.194-126.247 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.919 2.087 85.195 21.202 56.816 60.513 117.456 97.761 167.264 37.482 50.122 74.609 91.552 93.329 110.269l44.173-44.173c-16.406-16.403-51.6-55.536-87.472-103.51-36.11-48.285-71.192-103.264-89.264-151.69-6.437-17.248-5.748-31.056-1.675-42.651 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.292-36.814 92.623-42.392l59.075 121.097c0.019 0.074 0.045 0.285-0.013 0.688-0.112 0.749-0.502 1.827-1.344 2.883-7.117 8.95-14.899 20-20.941 31.741-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.138 7.76 27.773 13.222 36.973 6.275 10.576 14.416 21.741 22.79 32.291 16.806 21.171 36.541 42.326 49.68 55.466l44.173-44.173c-11.952-11.952-29.981-31.309-44.928-50.134-7.504-9.453-13.738-18.157-17.997-25.334-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.736 4.006-10.31 3.552-6.902 8.717-14.438 14.291-21.443 14.611-18.374 20.518-45.424 8.611-69.837l-59.914-122.808zM819.386 613.504c21.36 10.419 37.856 34.202 33.136 62.189-6.426 38.106-25.194 88.826-57.059 126.246-16.157 18.973-36.797 35.818-62.246 44.758-26.048 9.149-54.922 9.21-85.197-2.086-56.813-21.203-117.453-60.515-167.261-97.763-50.122-37.482-91.555-74.608-110.272-93.328l44.173-44.173c16.403 16.406 55.539 51.6 103.51 87.472 48.285 36.109 103.267 71.194 151.69 89.264 17.248 6.435 31.056 5.747 42.653 1.674 12.192-4.282 24.16-13.133 35.386-26.317 22.013-25.85 36.816-63.293 42.394-92.624l-121.094-59.075c-0.077-0.019-0.288-0.048-0.688 0.013-0.752 0.112-1.83 0.502-2.886 1.344-8.95 7.117-20 14.899-31.741 20.941-11.024 5.674-26.246 11.715-42.47 10.976-14.134-0.643-27.773-7.76-36.973-13.222-10.576-6.275-21.741-14.416-32.288-22.79-21.174-16.806-42.33-36.541-55.469-49.68l44.173-44.173c11.952 11.952 31.309 29.981 50.134 44.928 9.453 7.504 18.16 13.738 25.334 17.997 4.838 2.87 7.578 3.984 8.57 4.387l0.093 0.038c1.382-0.266 4.739-1.139 10.314-4.006 6.899-3.552 14.435-8.717 21.44-14.291 18.374-14.611 45.427-20.518 69.837-8.611l122.81 59.914z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":68,"id":64,"name":"phone","prevSize":32,"code":59806},"setIdx":0,"setId":0,"iconIdx":139},{"icon":{"paths":["M512.608 128.019c-72.378-1.376-144.906 25.78-199.307 80.524-54.654 54.999-89.301 136.056-89.301 239.464 0 80.234 44.5 174.87 97.546 252.806 53.066 77.965 120.829 148.157 176.141 175.821l15.194 7.6 14.81-8.326c217.158-122.154 272.31-333.882 272.31-427.898 0-101.731-27.923-181.776-80.179-236.932-52.346-55.248-125.296-81.503-207.213-83.060zM288 448.006c0-88.589 29.353-152.745 70.698-194.351 41.6-41.862 97.072-62.705 152.694-61.648 68.992 1.311 124.038 23.054 161.968 63.088 38.019 40.126 62.64 102.649 62.64 192.914 0 74.55-44.691 253.677-224.176 363.030-39.683-25.61-92.186-79.853-137.37-146.237-50.954-74.864-86.454-156.221-86.454-216.797zM544 416c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32zM608 416c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.021 42.979-96 96-96s96 42.979 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["pin-map"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":69,"id":63,"name":"pin-map","prevSize":32,"code":59807},"setIdx":0,"setId":0,"iconIdx":140},{"icon":{"paths":["M428.346 199.399c17.542-17.543 45.984-17.543 63.53 0 17.542 17.543 17.542 45.986 0 63.53l-43.661 43.659 177.83 177.828 60.339-60.339c24.992-24.995 65.517-24.995 90.509 0l45.254 45.254-331.869 331.869-45.254-45.254c-24.992-24.995-24.992-65.517 0-90.509l60.339-60.339-177.827-177.83-43.661 43.661c-17.543 17.542-45.987 17.542-63.53 0s-17.543-45.987 0-63.53l208.001-207.999zM175.090 362.144c-42.537 42.538-42.537 111.501 0 154.038 42.001 42.003 109.771 42.531 152.42 1.587l87.334 87.334-15.075 15.075c-49.987 49.987-49.987 131.034 0 181.021l67.882 67.882c12.496 12.496 32.758 12.496 45.254 0l167.936-167.933 88.013 92.003c12.218 12.771 32.474 13.219 45.245 1.002 12.771-12.214 13.219-32.47 1.002-45.242l-88.995-93.030 163.923-163.923c12.499-12.496 12.499-32.758 0-45.254l-67.882-67.882c-49.987-49.987-131.030-49.987-181.018 0l-15.907 15.907-87.325-87.323c41.766-42.596 41.51-110.983-0.768-153.262-42.538-42.537-111.504-42.537-154.042 0l-207.998 208z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["pin"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":70,"id":62,"name":"pin","prevSize":32,"code":59808},"setIdx":0,"setId":0,"iconIdx":141},{"icon":{"paths":["M513.354 160c17.674 0 32 13.133 32 29.333v645.332c0 16.202-14.326 29.334-32 29.334s-32-13.133-32-29.334v-645.332c0-16.2 14.326-29.333 32-29.333z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Pipe"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":71,"id":61,"name":"Pipe","prevSize":32,"code":59809},"setIdx":0,"setId":0,"iconIdx":142},{"icon":{"paths":["M512 928.003c229.75 0 416-186.25 416-416s-186.25-415.999-416-415.999c-229.75 0-416 186.25-416 415.999s186.25 416 416 416zM451.846 357.19l195.258 136.768c14.205 9.952 18.496 30.874 9.578 46.73-2.429 4.323-5.706 7.978-9.578 10.691l-195.258 136.768c-14.205 9.952-32.95 5.165-41.866-10.691-3.037-5.398-4.646-11.645-4.646-18.019v-273.536c0-18.72 13.597-33.894 30.368-33.894 5.712 0 11.309 1.795 16.144 5.184z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["play-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":72,"id":60,"name":"play-filled","prevSize":32,"code":59810},"setIdx":0,"setId":0,"iconIdx":143},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM451.85 357.187l195.254 136.768c14.208 9.949 18.496 30.87 9.581 46.726-2.432 4.326-5.706 7.981-9.581 10.694l-195.254 136.768c-14.208 9.952-32.954 5.165-41.869-10.694-3.037-5.398-4.646-11.642-4.646-18.016v-273.536c0-18.723 13.597-33.898 30.371-33.898 5.709 0 11.306 1.798 16.144 5.187z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["play"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":73,"id":59,"name":"play","prevSize":32,"code":59811},"setIdx":0,"setId":0,"iconIdx":144},{"icon":{"paths":["M448 192c-17.674 0-32 14.327-32 32v128c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-128c0-17.673-14.326-32-32-32h-128z","M416 448c0-17.674 14.326-32 32-32h128c17.674 0 32 14.326 32 32v128c0 17.674-14.326 32-32 32h-128c-17.674 0-32-14.326-32-32v-128z","M416 672c0-17.674 14.326-32 32-32h128c17.674 0 32 14.326 32 32v128c0 17.674-14.326 32-32 32h-128c-17.674 0-32-14.326-32-32v-128z"],"attrs":[{"fill":"rgb(245, 69, 92)"},{"fill":"rgb(245, 69, 92)"},{"fill":"rgb(245, 69, 92)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["priority-high"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":6},{"f":6},{"f":6}]}},"attrs":[{"fill":"rgb(245, 69, 92)"},{"fill":"rgb(245, 69, 92)"},{"fill":"rgb(245, 69, 92)"}],"properties":{"order":74,"id":58,"name":"priority-high","prevSize":32,"code":59812},"setIdx":0,"setId":0,"iconIdx":145},{"icon":{"paths":["M440 640h144c13.255 0 24 10.745 24 24v144c0 13.255-10.745 24-24 24h-144c-13.255 0-24-10.745-24-24v-144c0-13.255 10.745-24 24-24z","M440 192c-13.254 0-24 10.745-24 24v144c0 13.254 10.746 24 24 24h144c13.254 0 24-10.746 24-24v-144c0-13.255-10.746-24-24-24h-144zM440 416c-13.254 0-24 10.746-24 24v144c0 13.254 10.746 24 24 24h144c13.254 0 24-10.746 24-24v-144c0-13.254-10.746-24-24-24h-144z"],"attrs":[{"fill":"rgb(45, 224, 165)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["priority-low"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":4},{"f":2}]}},"attrs":[{"fill":"rgb(45, 224, 165)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":75,"id":57,"name":"priority-low","prevSize":32,"code":59813,"codes":[59813,59814]},"setIdx":0,"setId":0,"iconIdx":146},{"icon":{"paths":["M440 416c-13.254 0-24 10.746-24 24v144c0 13.254 10.746 24 24 24h144c13.254 0 24-10.746 24-24v-144c0-13.254-10.746-24-24-24h-144zM440 640c-13.254 0-24 10.746-24 24v144c0 13.254 10.746 24 24 24h144c13.254 0 24-10.746 24-24v-144c0-13.254-10.746-24-24-24h-144z","M440 192h144c13.255 0 24 10.745 24 24v144c0 13.255-10.745 24-24 24h-144c-13.255 0-24-10.745-24-24v-144c0-13.255 10.745-24 24-24z"],"attrs":[{"fill":"rgb(243, 190, 8)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["priority-medium"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":3},{"f":2}]}},"attrs":[{"fill":"rgb(243, 190, 8)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":76,"id":56,"name":"priority-medium","prevSize":32,"code":59815,"codes":[59815,59816]},"setIdx":0,"setId":0,"iconIdx":147},{"icon":{"paths":["M325.686 430.88l224.49 224.49-126.118 126.118-224.491-224.49 126.12-126.118zM370.941 385.626l192.115-192.117 224.49 224.491-192.115 192.115-224.49-224.49zM585.683 125.627c-12.496-12.497-32.758-12.497-45.254 0l-408.745 408.745c-12.497 12.496-12.497 32.758 0 45.254l269.746 269.747c5.229 5.229 11.818 8.269 18.63 9.123v0.067h0.57c2.278 0.243 4.576 0.243 6.851 0h440.579c17.674 0 32-14.33 32-32 0-17.674-14.326-32.003-32-32.003h-366.566l353.936-353.933c12.496-12.496 12.496-32.758 0-45.254l-269.747-269.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["prune"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":77,"id":55,"name":"prune","prevSize":32,"code":59817},"setIdx":0,"setId":0,"iconIdx":148},{"icon":{"paths":["M230.486 636.688c-14.92-9.472-34.694-5.056-44.167 9.862-9.473 14.922-5.057 34.694 9.862 44.166l298.666 189.632c10.47 6.646 23.837 6.646 34.304 0l298.669-189.632c14.918-9.472 19.334-29.245 9.862-44.166-9.475-14.918-29.248-19.334-44.166-9.862l-281.517 178.739-281.514-178.739zM186.319 494.848c9.473-14.922 29.247-19.334 44.167-9.862l281.514 178.739 281.517-178.739c14.918-9.472 34.691-5.059 44.166 9.862 9.472 14.918 5.056 34.694-9.862 44.166l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-14.92-9.472-19.335-29.248-9.862-44.166zM529.152 143.657l298.669 189.629c9.245 5.872 14.848 16.064 14.848 27.014 0 10.954-5.603 21.146-14.848 27.014l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-9.246-5.869-14.848-16.061-14.848-27.014 0-10.95 5.602-21.142 14.848-27.014l298.666-189.629c10.47-6.647 23.837-6.647 34.304 0zM273.035 360.301l238.965 151.725 238.966-151.725-238.966-151.724-238.965 151.724z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["queue"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":78,"id":54,"name":"queue","prevSize":32,"code":59818},"setIdx":0,"setId":0,"iconIdx":149},{"icon":{"paths":["M161.352 800c-11.706 0-22.477-6.39-28.087-16.666s-5.161-22.79 1.169-32.64l112.304-174.694h-69.387c-17.673 0-32-14.326-32-32v-288c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-143.999 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM332.269 561.306l-112.304 174.694h51.916l129.469-201.398v-246.602h-191.999v224h96c11.706 0 22.479 6.39 28.085 16.666 5.61 10.275 5.162 22.79-1.168 32.64zM577.35 800c-11.706 0-22.477-6.39-28.086-16.666s-5.162-22.79 1.171-32.64l112.304-174.694h-69.389c-17.67 0-32-14.326-32-32v-288c0-17.673 14.33-32 32-32h256c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-144 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM748.269 561.306l-112.304 174.694h51.917l129.469-201.398v-246.602h-192v224h96c11.706 0 22.48 6.39 28.086 16.666 5.61 10.275 5.162 22.79-1.168 32.64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["quote"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":79,"id":53,"name":"quote","prevSize":32,"code":59819},"setIdx":0,"setId":0,"iconIdx":150},{"icon":{"paths":["M800 544c0 176.73-143.27 320-320 320-176.731 0-320-143.27-320-320s143.269-320 320-320v-64c-212.077 0-384 171.923-384 384s171.923 384 384 384c212.077 0 384-171.923 384-384 0-10.778-0.445-21.45-1.315-32h-64.266c1.046 10.525 1.581 21.2 1.581 32zM800 112c0-17.673-14.326-32-32-32s-32 14.327-32 32v112h-112c-17.674 0-32 14.327-32 32s14.326 32 32 32h112v112c0 17.674 14.326 32 32 32s32-14.326 32-32v-112h112c17.674 0 32-14.327 32-32s-14.326-32-32-32h-112v-112zM384 512c35.347 0 64-28.653 64-64s-28.653-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64zM640 448c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64zM329.805 589.075c-10.451-14.25-30.477-17.331-44.728-6.88s-17.333 30.477-6.882 44.73c37.658 51.35 77.754 84.624 119.178 102.662 41.741 18.179 82.797 19.99 120.362 11.651 73.469-16.307 132.211-70.87 164.070-114.314 10.451-14.253 7.37-34.278-6.88-44.73-14.253-10.451-34.278-7.37-44.73 6.88-26.81 36.557-73.664 77.994-126.33 89.686-25.501 5.661-52.643 4.474-80.938-7.85-28.608-12.461-60.381-37.187-93.123-81.837z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["reaction-add"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":132,"id":52,"name":"reaction-add","prevSize":32,"code":59820},"setIdx":0,"setId":0,"iconIdx":151},{"icon":{"paths":["M832 512c0-176.73-143.27-320-320-320s-320 143.27-320 320c0 176.73 143.27 320 320 320s320-143.27 320-320zM896 512c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384s384 171.923 384 384zM512 704c-106.038 0-192-85.962-192-192s85.962-192 192-192c106.038 0 192 85.962 192 192s-85.962 192-192 192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["record"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":133,"id":51,"name":"record","prevSize":32,"code":59821},"setIdx":0,"setId":0,"iconIdx":152},{"icon":{"paths":["M896 512h-63.984c0-175.414-145.754-320-328.518-320-115.27 0-215.818 57.513-274.362 144h110.768c17.674 0 32 14.326 32 32s-14.326 32-32 32h-179.904c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v102.32c71.751-91.401 184.589-150.32 311.498-150.32 216.781 0 392.502 171.923 392.502 384 0 1.114 0.010 2.227 0 3.338v-3.338z","M127.997 512h63.986c0 175.414 145.751 320 328.519 320 115.27 0 215.818-57.514 274.358-144h-110.768c-17.67 0-32-14.326-32-32s14.33-32 32-32h179.907c17.67 0 32 14.326 32 32v192c0 17.674-14.33 32-32 32-17.674 0-32-14.326-32-32v-102.32c-71.754 91.402-184.592 150.32-311.498 150.32-216.782 0-392.505-171.923-392.505-384 0-1.082-0.009-2.166 0-3.245v3.245z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["refresh"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":134,"id":50,"name":"refresh","prevSize":32,"code":59822},"setIdx":0,"setId":0,"iconIdx":153},{"icon":{"paths":["M713.718 450.362c0-142.689-115.824-258.362-258.701-258.362-142.878 0-258.704 115.673-258.704 258.362 0 142.691 115.826 258.365 258.704 258.365 142.877 0 258.701-115.674 258.701-258.365zM659.302 699.965c-55.645 45.475-126.774 72.762-204.285 72.762-178.271 0-322.788-144.326-322.788-322.365 0-178.035 144.517-322.362 322.788-322.362 178.269 0 322.787 144.327 322.787 322.362 0 77.408-27.318 148.442-72.854 204.013l186.838 186.592c12.608 12.589 12.608 33.002 0 45.59-12.605 12.589-33.043 12.589-45.648 0l-186.838-186.592z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["search"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":136,"id":48,"name":"search","prevSize":32,"code":59823},"setIdx":0,"setId":0,"iconIdx":154},{"icon":{"paths":["M891.494 238.96l-297.475 637.446c-16.854 36.115-69.622 31.459-79.891-7.050l-66-247.498 151.248-189.059-219.994 109.997-226.833-113.418c-35.43-17.715-29.696-69.949 8.733-79.555l681.197-170.3c34.842-8.71 64.202 26.892 49.014 59.436z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["send-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":137,"id":47,"name":"send-filled","prevSize":32,"code":59824},"setIdx":0,"setId":0,"iconIdx":155},{"icon":{"paths":["M878.022 192.974c7.85 9.521 9.526 22.708 4.31 33.891l-298.669 640.002c-5.69 12.195-18.403 19.526-31.811 18.342-13.405-1.184-24.637-10.627-28.106-23.632l-81.619-306.070-285.772-142.886c-11.978-5.987-18.959-18.8-17.498-32.112s11.056-24.307 24.048-27.552l682.665-170.668c11.974-2.993 24.598 1.165 32.451 10.686zM505.821 545.968l57.082 214.051 233.027-499.35-533.58 133.395 203.606 101.802 69.51-52.131c14.141-10.605 34.198-7.741 44.8 6.4 10.605 14.138 7.741 34.195-6.4 44.8l-68.045 51.034z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["send"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":138,"id":46,"name":"send","prevSize":32,"code":59825},"setIdx":0,"setId":0,"iconIdx":156},{"icon":{"paths":["M421.334 256c0-44.183-35.818-80-80-80s-80 35.817-80 80c0 44.183 35.817 80 80 80s80-35.817 80-80zM465.302 288c-14.211 55.206-64.326 96-123.968 96-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.327-32-32s14.327-32 32-32h89.367c14.209-55.207 64.324-96 123.968-96 59.642 0 109.757 40.793 123.968 96h430.698c17.674 0 32 14.327 32 32s-14.326 32-32 32h-430.698zM96 768c0-17.674 14.327-32 32-32h89.367c14.209-55.206 64.324-96 123.968-96 60.781 0 111.67 42.365 124.742 99.181 4.208-2.038 8.934-3.181 13.923-3.181h416c17.674 0 32 14.326 32 32s-14.326 32-32 32h-416c-4.989 0-9.715-1.142-13.923-3.181-13.072 56.816-63.962 99.181-124.742 99.181-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.326-32-32zM341.334 848c44.182 0 80-35.818 80-80s-35.818-80-80-80c-44.183 0-80 35.818-80 80s35.817 80 80 80zM796.029 543.757c-14.122 55.331-64.298 96.243-124.029 96.243s-109.904-40.912-124.029-96.243c-1.302 0.16-2.627 0.243-3.971 0.243h-416c-17.673 0-32-14.326-32-32s14.327-32 32-32h416c1.344 0 2.669 0.083 3.971 0.243 14.125-55.331 64.298-96.243 124.029-96.243s109.907 40.912 124.029 96.243c1.302-0.16 2.627-0.243 3.971-0.243h96c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96c-1.344 0-2.669-0.083-3.971-0.243zM752 512c0-44.182-35.818-80-80-80s-80 35.818-80 80c0 44.182 35.818 80 80 80s80-35.818 80-80z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["settings"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":139,"id":45,"name":"settings","prevSize":32,"code":59826},"setIdx":0,"setId":0,"iconIdx":157},{"icon":{"paths":["M690.176 301.708c11.645-11.977 11.645-31.396 0-43.374l-149.091-153.351c-11.645-11.977-30.525-11.977-42.17 0l-149.091 153.351c-11.645 11.977-11.645 31.397 0 43.374s30.525 11.978 42.17 0l98.189-100.993v401.343c0 16.938 13.35 30.669 29.818 30.669s29.818-13.731 29.818-30.669v-401.343l98.189 100.993c11.645 11.978 30.525 11.978 42.17 0z","M221.818 379.274h149.091v59.635h-119.272v387.635h536.728v-387.635h-119.274v-59.635h149.091c16.467 0 29.818 13.35 29.818 29.818v447.274c0 16.467-13.35 29.818-29.818 29.818h-596.364c-16.468 0-29.818-13.35-29.818-29.818v-447.274c0-16.467 13.35-29.818 29.818-29.818z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["share"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":244,"id":44,"name":"share","prevSize":32,"code":59827},"setIdx":0,"setId":0,"iconIdx":158},{"icon":{"paths":["M664.083 405.072c11.638-13.299 10.288-33.517-3.011-45.155s-33.517-10.288-45.155 3.011l-125.251 143.142-39.917-45.619c-11.638-13.299-31.853-14.646-45.155-3.011-13.299 11.638-14.646 31.856-3.008 45.155l64 73.142c6.077 6.944 14.854 10.928 24.080 10.928 9.229 0 18.006-3.984 24.083-10.928l149.334-170.666z","M541.99 143.050c-12.854-3.634-26.448-3.753-39.363-0.345l-264.724 69.849c-29.793 7.861-52.548 33.743-54.753 65.633-23.589 341.205 187.752 520.29 276.51 579.794 33.136 22.211 75.363 22.144 108.416-0.259 88.218-59.792 297.117-239.072 272.611-580.214-2.25-31.321-24.339-56.895-53.504-65.14l-245.194-69.318zM518.957 204.587c1.843-0.487 3.786-0.47 5.622 0.049l245.194 69.318c4.294 1.214 6.838 4.781 7.082 8.139 22.15 308.362-165.306 468.851-244.685 522.65-11.437 7.754-25.363 7.792-36.87 0.077-80.086-53.686-269.606-214.054-248.301-522.218 0.234-3.389 2.833-7.004 7.233-8.164l264.725-69.849z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["shield-check"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":80,"id":43,"name":"shield-check","prevSize":32,"code":59828},"setIdx":0,"setId":0,"iconIdx":159},{"icon":{"paths":["M513.302 142.705c12.915-3.408 26.509-3.289 39.36 0.345l245.197 69.318c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.142-184.397 520.422-272.611 580.214-33.053 22.403-75.28 22.47-108.416 0.259-88.762-59.504-300.101-238.589-276.511-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.725-69.849zM535.251 204.637c-1.834-0.519-3.776-0.536-5.622-0.050l-264.723 69.849c-4.4 1.161-6.999 4.775-7.234 8.164-21.305 308.164 168.216 468.532 248.299 522.218 11.507 7.715 25.434 7.677 36.874-0.077 79.379-53.798 266.832-214.288 244.682-522.65-0.24-3.358-2.784-6.925-7.078-8.139l-245.197-69.317z","M490.672 337.334c-19.76 4.672-47.245 12.31-81.149 24.554 20.81 108.771 53.219 187.014 81.149 238.832v-263.386zM492.867 271.316c33.77-6.898 61.805 19.742 61.805 51.125v360.963c0 17.024-10.333 31.747-25.642 37.52-15.67 5.91-33.779 1.331-44.861-12.675-32.656-41.267-106.323-152.95-141.19-354.563-3.242-18.746 7.066-37.695 25.328-44.726 56.186-21.63 99.094-32.442 124.56-37.644z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["shield"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":81,"id":42,"name":"shield-alt","prevSize":32,"code":59829},"setIdx":0,"setId":0,"iconIdx":160},{"icon":{"paths":["M778.64 213.336c-17.674 0-32 14.327-32 32v533.333c0 17.674 14.326 32 32 32s32-14.326 32-32v-533.333c0-17.673-14.326-32-32-32z","M600.87 341.334c-17.674 0-32 14.33-32 32v405.334c0 17.674 14.326 32 32 32s32-14.326 32-32v-405.334c0-17.67-14.326-32-32-32z","M423.104 810.669c-17.674 0-32-14.326-32-32v-277.334c0-17.67 14.326-32 32-32 17.67 0 32 14.33 32 32v277.334c0 17.674-14.33 32-32 32z","M245.333 597.334c-17.673 0-32 14.33-32 32v149.334c0 17.674 14.327 32 32 32s32-14.326 32-32v-149.334c0-17.67-14.327-32-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["signal"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":82,"id":41,"name":"signal","prevSize":32,"code":59830},"setIdx":0,"setId":0,"iconIdx":161},{"icon":{"paths":["M289.362 192c13.364 0 25.321 8.305 29.987 20.829l96.001 257.699c6.17 16.56-2.256 34.986-18.816 41.155-16.563 6.17-34.989-2.253-41.158-18.816l-20.477-54.963h-91.074l-20.476 54.963c-6.17 16.563-24.597 24.986-41.158 18.816s-24.986-24.595-18.816-41.155l96-257.699c4.666-12.524 16.622-20.829 29.987-20.829zM311.058 373.904l-21.695-58.238-21.695 58.238h43.391z","M522.131 626.435c-12.154 12.829-11.606 33.082 1.222 45.238l160 151.587c12.342 11.693 31.674 11.693 44.016 0l160-151.587c12.832-12.157 13.376-32.41 1.222-45.238s-32.41-13.376-45.238-1.222l-105.99 100.419v-501.632c0-17.673-14.326-32-32-32s-32 14.327-32 32v501.632l-105.994-100.419c-12.829-12.154-33.082-11.606-45.238 1.222z","M193.362 570.947c-17.673 0-32 14.326-32 32 0 17.67 14.327 32 32 32h116.145l-139.065 142.73c-8.979 9.216-11.565 22.915-6.564 34.771 5.001 11.853 16.617 19.562 29.484 19.562h192.001c17.674 0 32-14.326 32-32s-14.326-32-32-32h-116.146l139.064-142.733c8.979-9.216 11.565-22.915 6.563-34.768-4.998-11.856-16.614-19.562-29.482-19.562h-192.001z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["sort-az"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":83,"id":40,"name":"sort-az","prevSize":32,"code":59831},"setIdx":0,"setId":0,"iconIdx":162},{"icon":{"paths":["M919.258 667.229c12.605-12.253 12.877-32.394 0.605-44.982-12.269-12.589-32.435-12.858-45.040-0.605l-106.112 103.155v-500.8c0-17.568-14.259-31.81-31.853-31.81-17.59 0-31.85 14.242-31.85 31.81v500.8l-106.115-103.155c-12.605-12.253-32.768-11.984-45.040 0.605-12.269 12.589-11.997 32.73 0.608 44.982l160.179 155.718c12.368 12.019 32.070 12.019 44.435 0l160.182-155.718zM560.659 333.667c17.59 0 31.85-14.243 31.85-31.811s-14.259-31.809-31.85-31.809h-432.49c-17.591 0-31.852 14.242-31.852 31.809s14.26 31.811 31.852 31.811h432.49zM464.55 536.099c17.59 0 31.85-14.243 31.85-31.811 0-17.565-14.259-31.808-31.85-31.808h-336.381c-17.591 0-31.852 14.24-31.852 31.808s14.26 31.811 31.852 31.811h336.381zM384.458 722.96c17.594 0 31.853-14.24 31.853-31.808s-14.259-31.811-31.853-31.811h-256.289c-17.591 0-31.852 14.243-31.852 31.811s14.26 31.808 31.852 31.808h256.289z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["sort"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":84,"id":39,"name":"sort","prevSize":32,"code":59832},"setIdx":0,"setId":0,"iconIdx":163},{"icon":{"paths":["M593.939 170.244c-20.867-57.726-103.155-55.816-121.322 2.815l-58.976 190.348h-221.513c-58.947 0-86.549 72.944-42.37 111.968l157.591 139.206-53.209 216.928c-14.17 57.77 51.25 101.936 99.533 67.197l177.741-127.875 177.741 127.875c48.285 34.739 113.706-9.427 99.536-67.197l-53.386-217.651 147.888-139.968c42.032-39.779 13.878-110.483-43.99-110.483h-195.443l-69.821-193.164z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":85,"id":38,"name":"star-filled","prevSize":32,"code":59833},"setIdx":0,"setId":0,"iconIdx":164},{"icon":{"paths":["M472.618 173.508c18.166-58.554 100.454-60.461 121.322-2.812l69.821 192.91h195.44c57.872 0 86.026 70.611 43.994 110.336l-147.888 139.782 53.386 217.363c14.17 57.696-51.251 101.805-99.536 67.11l-177.741-127.709-177.741 127.709c-48.283 34.691-113.703-9.414-99.533-67.11l53.209-216.64-157.591-139.024c-44.179-38.973-16.577-111.818 42.37-111.818h221.513l58.976-190.098zM603.574 385.334l-69.824-192.91-58.976 190.098c-8.304 26.758-33.085 45.002-61.133 45.002h-221.513l157.59 139.021c17.837 15.731 25.456 40.048 19.789 63.13l-53.209 216.643 177.74-127.709c22.33-16.045 52.426-16.045 74.755 0l177.738 127.709-53.386-217.363c-5.478-22.317 1.456-45.856 18.166-61.648l147.888-139.782h-195.44c-26.957 0-51.024-16.87-60.186-42.189z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":86,"id":37,"name":"star","prevSize":32,"code":59834},"setIdx":0,"setId":0,"iconIdx":165},{"icon":{"paths":["M827.84 520.637c0 169.662-137.538 307.2-307.2 307.2s-307.2-137.538-307.2-307.2c0-169.662 137.538-307.2 307.2-307.2s307.2 137.538 307.2 307.2z","M520.534 827.734c-169.664 0-307.201-137.536-307.201-307.2 0-169.661 137.537-307.198 307.201-307.198 169.661 0 307.2 137.538 307.2 307.198 0 169.664-137.539 307.2-307.2 307.2zM563.2 341.334c0-23.563-19.104-42.665-42.666-42.665-23.565 0-42.669 19.103-42.669 42.665v199.709l144.013 115.21c18.4 14.72 45.251 11.738 59.971-6.662s11.738-45.251-6.662-59.971l-111.987-89.59v-158.694z"],"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(243, 190, 8)"}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["status-away"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":11},{"f":3}]}},"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(243, 190, 8)"}],"properties":{"order":239,"id":35,"name":"status-away","prevSize":32,"code":59837,"codes":[59837,59838]},"setIdx":0,"setId":0,"iconIdx":166},{"icon":{"paths":["M827.84 520.637c0 169.662-137.538 307.2-307.2 307.2s-307.2-137.538-307.2-307.2c0-169.662 137.538-307.2 307.2-307.2s307.2 137.538 307.2 307.2z","M520.534 827.734c169.661 0 307.2-137.536 307.2-307.2 0-169.661-137.539-307.198-307.2-307.198-169.664 0-307.201 137.538-307.201 307.198 0 169.664 137.537 307.2 307.201 307.2zM418.134 477.866c-23.565 0-42.669 19.104-42.669 42.669s19.104 42.666 42.669 42.666h204.8c23.562 0 42.666-19.101 42.666-42.666s-19.104-42.669-42.666-42.669h-204.8z"],"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(245, 69, 92)"}],"isMulticolor":true,"isMulticolor2":false,"grid":0,"tags":["status-busy"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":11},{"f":6}]}},"attrs":[{"fill":"rgb(255, 255, 255)"},{"fill":"rgb(245, 69, 92)"}],"properties":{"order":238,"id":33,"name":"status-busy","prevSize":32,"code":59841,"codes":[59841,59842]},"setIdx":0,"setId":0,"iconIdx":167},{"icon":{"paths":["M825.136 560.653l-84.614-11.040c1.235-9.482 1.878-19.187 1.878-29.085s-0.643-19.603-1.878-29.085l84.614-11.037c1.715 13.13 2.598 26.522 2.598 40.122s-0.883 26.992-2.598 40.125zM804.422 402.934l-78.826 32.688c-7.459-17.99-17.242-34.822-28.992-50.118l67.661-51.994c16.243 21.139 29.802 44.451 40.157 69.424zM707.552 276.796l-51.997 67.662c-15.293-11.754-32.125-21.533-50.115-28.994l32.685-78.825c24.976 10.356 48.288 23.913 69.427 40.157zM560.656 215.925l-11.037 84.616c-9.482-1.237-19.187-1.88-29.085-1.88-9.901 0-19.606 0.643-29.088 1.88l-11.037-84.616c13.133-1.713 26.525-2.597 40.125-2.597 13.597 0 26.992 0.884 40.122 2.597zM402.941 236.639l32.688 78.825c-17.99 7.461-34.822 17.241-50.118 28.994l-51.997-67.662c21.139-16.244 44.454-29.801 69.427-40.157zM276.801 333.51l67.663 51.994c-11.754 15.296-21.536 32.128-28.996 50.118l-78.824-32.688c10.356-24.973 23.913-48.285 40.157-69.424zM215.93 480.406c-1.713 13.13-2.596 26.522-2.596 40.122s0.884 26.992 2.596 40.125l84.617-11.040c-1.237-9.482-1.88-19.187-1.88-29.085s0.643-19.603 1.88-29.085l-84.617-11.037zM236.644 638.122l78.825-32.688c7.46 17.99 17.242 34.822 28.996 50.118l-67.663 51.994c-16.244-21.139-29.801-44.451-40.157-69.424zM333.514 764.259l51.997-67.661c15.296 11.754 32.128 21.533 50.118 28.995l-32.688 78.826c-24.973-10.358-48.288-23.914-69.427-40.16zM480.41 825.133l11.037-84.618c9.482 1.235 19.187 1.878 29.088 1.878 9.898 0 19.603-0.643 29.085-1.878l11.037 84.618c-13.13 1.712-26.525 2.595-40.122 2.595-13.6 0-26.992-0.883-40.125-2.595zM638.125 804.419l-32.685-78.826c17.99-7.462 34.822-17.242 50.115-28.995l51.997 67.661c-21.139 16.246-44.451 29.802-69.427 40.16zM764.266 707.546l-67.661-51.994c11.75-15.296 21.533-32.128 28.992-50.118l78.826 32.688c-10.355 24.973-23.914 48.285-40.157 69.424z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-loading"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":7}]}},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":91,"id":32,"name":"status-loading","prevSize":32,"code":59843},"setIdx":0,"setId":0,"iconIdx":168},{"icon":{"paths":["M520.534 742.403c-122.534 0-221.868-99.334-221.868-221.869 0-122.531 99.333-221.865 221.868-221.865 122.531 0 221.866 99.334 221.866 221.865 0 122.534-99.334 221.869-221.866 221.869zM520.534 827.734c169.661 0 307.2-137.536 307.2-307.2 0-169.661-137.539-307.198-307.2-307.198-169.664 0-307.201 137.538-307.201 307.198 0 169.664 137.537 307.2 307.201 307.2z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-offline"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":7}]}},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":92,"id":31,"name":"status-offline","prevSize":32,"code":59844},"setIdx":0,"setId":0,"iconIdx":169},{"icon":{"paths":["M819.2 511.997c0 169.662-137.538 307.2-307.2 307.2s-307.2-137.538-307.2-307.2c0-169.662 137.538-307.2 307.2-307.2s307.2 137.538 307.2 307.2z"],"attrs":[{"fill":"rgb(45, 224, 165)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-online"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":4}]}},"attrs":[{"fill":"rgb(45, 224, 165)"}],"properties":{"order":93,"id":30,"name":"status-online","prevSize":32,"code":59845},"setIdx":0,"setId":0,"iconIdx":170},{"icon":{"paths":["M499.952 539.082c2.714 0.819 5.462 1.629 8.25 2.429 45.341 13.12 76.643 26.47 93.904 40.048 17.264 13.35 25.894 32.339 25.894 56.966s-9.322 44.074-27.965 58.346c-18.643 14.269-45.456 21.405-80.442 21.405-37.514 0-67.552-8.749-90.106-26.24-15.216-12.077-25.245-27.094-30.090-45.050-3.942-14.605-15.664-27.104-30.794-27.104h-11.843c-15.13 0-27.722 12.378-24.893 27.242 3.514 18.47 10.736 35.514 21.667 51.126 16.339 23.018 39.472 41.2 69.392 54.547 29.92 13.12 62.144 19.68 96.666 19.68 53.168 0 95.632-12.198 127.395-36.595 31.76-24.627 47.642-57.309 47.642-98.048 0-25.549-5.754-47.757-17.261-66.63-6.947-11.626-16.25-22.33-27.91-32.122h99.962c15.13 0 27.395-12.266 27.395-27.395s-12.266-27.392-27.395-27.392h-217.398c-1.709-0.493-3.437-0.986-5.178-1.472-41.658-11.738-71.235-24.627-88.726-38.669-17.261-14.269-25.894-31.645-25.894-52.131 0-25.546 9.091-45.456 27.277-59.725 18.41-14.5 43.958-21.75 76.64-21.75 35.216 0 62.49 8.746 81.824 26.24 13.139 11.731 21.814 26.496 26.022 44.288 3.485 14.723 15.242 27.174 30.371 27.174h11.84c15.13 0 27.702-12.374 24.88-27.238-3.331-17.552-9.974-34.134-19.923-49.75-14.733-23.475-35.677-41.888-62.835-55.237-26.928-13.349-57.654-20.024-92.179-20.024-50.634 0-91.834 13.004-123.594 39.012-31.533 25.779-47.299 58.46-47.299 98.047 0 34.986 12.89 64.445 38.669 88.381 1.050 0.957 2.125 1.907 3.222 2.854h-112.56c-15.13 0-27.395 12.262-27.395 27.392s12.265 27.395 27.395 27.395h225.373z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["strike"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":94,"id":29,"name":"strike","prevSize":32,"code":59846},"setIdx":0,"setId":0,"iconIdx":171},{"icon":{"paths":["M481.35 117.336c0-17.673 14.326-32 32-32s32 14.327 32 32v106.667c0 17.673-14.326 32-32 32s-32-14.327-32-32v-106.667zM771.392 214.631c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-75.411 75.413c-12.499 12.496-32.758 12.496-45.254 0-12.499-12.496-12.499-32.759 0-45.255l75.411-75.412zM336.73 694.63c-12.499-12.496-32.759-12.496-45.256 0l-75.495 75.498c-12.497 12.496-12.497 32.755 0 45.254 12.497 12.496 32.758 12.496 45.255 0l75.496-75.498c12.496-12.496 12.496-32.755 0-45.254zM481.35 800.003c0-17.674 14.326-32 32-32s32 14.326 32 32v106.669c0 17.67-14.326 32-32 32s-32-14.33-32-32v-106.669zM213.352 212.001c-12.497 12.497-12.497 32.758 0 45.255l75.349 75.348c12.497 12.496 32.758 12.496 45.254 0 12.499-12.496 12.496-32.757 0-45.254l-75.348-75.349c-12.497-12.497-32.758-12.497-45.255 0zM695.978 739.885c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.254 0l75.331 75.328c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-75.328-75.328zM87.751 512.003c0 17.674 14.327 32 32 32h106.667c17.673 0 32-14.326 32-32s-14.327-32-32-32h-106.667c-17.673 0-32 14.326-32 32zM801.35 544.003c-17.674 0-32-14.326-32-32s14.326-32 32-32h106.669c17.67 0 32 14.326 32 32s-14.33 32-32 32h-106.669zM668.17 512c0-85.504-69.315-154.816-154.819-154.816-85.507 0-154.819 69.312-154.819 154.816 0 85.507 69.312 154.819 154.819 154.819 85.504 0 154.819-69.312 154.819-154.819zM726.682 512c0 117.821-95.51 213.334-213.331 213.334s-213.335-95.514-213.335-213.334c0-117.821 95.514-213.332 213.335-213.332s213.331 95.511 213.331 213.332z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["sun"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":95,"id":28,"name":"sun","prevSize":32,"code":59847},"setIdx":0,"setId":0,"iconIdx":172},{"icon":{"paths":["M930.704 512c0 229.75-186.25 416-416 416s-415.999-186.25-415.999-416c0-229.75 186.25-416 415.999-416s416 186.25 416 416zM570.49 859.603l-41.827-156.102c-4.611 0.33-9.264 0.499-13.958 0.499-4.57 0-9.101-0.16-13.594-0.474l-41.837 156.134c18.058 2.854 36.573 4.339 55.43 4.339 18.986 0 37.616-1.504 55.786-4.397zM438.893 688.451c-47.549-20.454-85.181-59.571-103.674-108.125l-155.029 41.539c33.968 103.485 114.617 185.805 217.045 222.058l41.658-155.472zM162.705 512c0 16.090 1.080 31.926 3.17 47.443l156.906-42.042c-0.051-1.795-0.077-3.594-0.077-5.402 0-4.909 0.186-9.776 0.547-14.595l-156.051-41.814c-2.958 18.368-4.496 37.21-4.496 56.41zM396.31 180.407c-99.16 35.408-177.786 114.033-213.196 213.19l155.535 41.677c19.357-44.352 54.982-79.978 99.334-99.331l-41.674-155.536zM514.704 160c-19.197 0-38.035 1.537-56.4 4.494l41.814 156.053c4.813-0.362 9.68-0.547 14.586-0.547 5.030 0 10.019 0.192 14.95 0.573l41.808-156.021c-18.477-2.995-37.437-4.552-56.758-4.552zM632.512 843.802c102.659-36.451 183.392-119.194 217.094-223.12l-154.973-41.526c-18.291 48.982-56.010 88.493-103.786 109.155l41.664 155.491zM863.699 558.198c1.984-15.117 3.005-30.538 3.005-46.198 0-18.771-1.469-37.197-4.298-55.171l-156.157 41.84c0.301 4.406 0.454 8.851 0.454 13.331 0 1.376-0.013 2.752-0.042 4.122l157.037 42.077zM846.714 394.774c-35.165-99.6-113.885-178.641-213.277-214.247l-41.68 155.559c44.582 19.555 80.314 55.565 99.504 100.342l155.453-41.654zM642.704 512c0-70.691-57.306-128-128-128-70.691 0-128 57.309-128 128s57.309 128 128 128c70.694 0 128-57.309 128-128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["support"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":96,"id":27,"name":"support","prevSize":32,"code":59848},"setIdx":0,"setId":0,"iconIdx":173},{"icon":{"paths":["M368 412.982c-53.592 0-96-42.877-96-94.491 0-51.616 42.408-94.491 96-94.491 53.594 0 96 42.876 96 94.491 0 51.614-42.406 94.491-96 94.491zM368 476.982c88.365 0 160-70.96 160-158.491s-71.635-158.491-160-158.491c-88.365 0-160 70.959-160 158.491s71.635 158.491 160 158.491zM713.6 397.133c-35.92 0-64-28.685-64-62.794s28.080-62.792 64-62.792c35.92 0 64 28.684 64 62.792s-28.080 62.794-64 62.794zM713.6 461.133c70.691 0 128-56.768 128-126.794s-57.309-126.792-128-126.792c-70.691 0-128 56.767-128 126.792s57.309 126.794 128 126.794zM197.459 527.267c27.344-8.707 56.67-9.242 84.319-1.539l48.491 13.51c24.205 6.742 49.882 6.275 73.824-1.347l30.099-9.584c29.475-9.386 61.085-9.962 90.89-1.658 67.962 18.934 114.918 80.333 114.918 150.269v91.987c0 52.518-42.979 95.094-96 95.094h-352c-53.019 0-96-42.576-96-95.094v-103.766c0-62.909 40.999-118.621 101.459-137.872zM264.451 586.758c-15.545-4.333-32.034-4.032-47.407 0.864-33.993 10.822-57.044 42.147-57.044 77.517v103.766c0 17.507 14.327 31.699 32 31.699h352c17.674 0 32-14.192 32-31.699v-91.987c0-41.533-27.885-77.997-68.246-89.242-17.699-4.931-36.474-4.589-53.978 0.986l-30.099 9.584c-35.91 11.434-74.426 12.138-110.737 2.019l-48.489-13.507zM691.2 778.717h140.8c53.021 0 96-42.979 96-96v-30.611c0-56.877-38.614-106.49-93.747-120.454-21.398-5.418-43.853-5.040-65.056 1.098l-16.4 4.746c-21.843 6.323-44.973 6.714-67.018 1.13l-29.805-7.549c-19.907-5.043-40.797-4.691-60.522 1.018-1.066 0.31-2.122 0.634-3.174 0.97 10.71 4.048 20.896 9.539 30.253 16.374l2.429 1.776 15.040 13.206c9.939 8.726 18.141 19.248 24.182 31.014l2.208 4.301 3.677 0.931c33.062 8.374 67.76 7.789 100.525-1.693l16.4-4.749c10.282-2.976 21.171-3.158 31.546-0.531 26.736 6.771 45.462 30.832 45.462 58.413v30.611c0 17.674-14.326 32-32 32h-140.8v64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["team"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":97,"id":26,"name":"team","prevSize":32,"code":59849},"setIdx":0,"setId":0,"iconIdx":174},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.642 51.52 146.602 80.998 235.29 90.893 88.611 9.885 186.221 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.941-10.765-2.374-1.514-5.245-3.197-8.672-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.398-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.834 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.12 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.949 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948zM333.952 422.051c0-17.648 14.25-31.955 31.83-31.955h183.008c17.578 0 31.827 14.307 31.827 31.955s-14.25 31.955-31.827 31.955h-183.008c-17.581 0-31.83-14.307-31.83-31.955zM365.782 539.709c-17.581 0-31.83 14.307-31.83 31.955s14.25 31.955 31.83 31.955h224.118c17.578 0 31.827-14.307 31.827-31.955s-14.25-31.955-31.827-31.955h-224.118z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["threads"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":98,"id":25,"name":"threads","prevSize":32,"code":59850},"setIdx":0,"setId":0,"iconIdx":175},{"icon":{"paths":["M353.354 320c0-17.673 14.326-32 32-32h256c17.674 0 32 14.327 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M385.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 448c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M353.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M513.354 544c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M609.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M385.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 704c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M289.353 160h448.001c35.344 0 64 28.654 64 64v576c0 35.347-28.656 64-64 64h-448.001c-35.346 0-64-28.653-64-64v-576c0-35.346 28.654-64 64-64zM289.353 224v576h448.001v-576h-448.001z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["total"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":99,"id":24,"name":"total","prevSize":32,"code":59851},"setIdx":0,"setId":0,"iconIdx":176},{"icon":{"paths":["M713.613 91.356c13.162-11.794 33.392-10.685 45.187 2.477l129.034 144c10.89 12.154 10.89 30.556 0 42.71l-129.034 144.001c-11.795 13.162-32.026 14.269-45.187 2.477-13.162-11.795-14.272-32.026-2.477-45.187l81.222-90.646h-216.358c-17.674 0-32-14.327-32-32s14.326-32 32-32h216.358l-81.222-90.645c-11.795-13.162-10.685-33.393 2.477-45.187zM340.026 464.461c8.586-15.45 28.067-21.018 43.514-12.432l128.461 71.366 128.461-71.366c15.446-8.586 34.928-3.018 43.514 12.432 8.582 15.45 3.014 34.931-12.435 43.514l-159.539 88.634-159.539-88.634c-15.45-8.582-21.018-28.064-12.435-43.514zM192 288v448h640v-192c0-17.674 14.326-32 32-32s32 14.326 32 32v224c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512c0-17.673 14.327-32 32-32h272c17.674 0 32 14.327 32 32s-14.326 32-32 32h-240z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["transcript"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":100,"id":23,"name":"transcript","prevSize":32,"code":59852},"setIdx":0,"setId":0,"iconIdx":177},{"icon":{"paths":["M384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 106.038 85.962 192 192 192s192-85.962 192-192v-256c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 70.691-57.309 128-128 128s-128-57.309-128-128v-256zM352 856c-13.254 0-24 10.746-24 24s10.746 24 24 24h320c13.254 0 24-10.746 24-24s-10.746-24-24-24h-320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["underline"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":101,"id":22,"name":"underline","prevSize":32,"code":59853},"setIdx":0,"setId":0,"iconIdx":178},{"icon":{"paths":["M512 832c176.73 0 320-143.27 320-320s-143.27-320-320-320c-111.712 0-210.056 57.244-267.295 144h107.295c17.674 0 32 14.326 32 32s-14.326 32-32 32h-176c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v101.364c70.228-90.856 180.282-149.364 304-149.364 212.077 0 384 171.923 384 384s-171.923 384-384 384c-212.077 0-384-171.923-384-384h64c0 176.73 143.27 320 320 320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["undo"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":102,"id":21,"name":"undo","prevSize":32,"code":59854},"setIdx":0,"setId":0,"iconIdx":179},{"icon":{"paths":["M467.808 512c0-63.322-61.053-128-153.903-128s-153.905 64.678-153.905 128c0 63.322 61.054 128 153.905 128s153.903-64.678 153.903-128zM512 592.099c34.454 66.042 110.195 111.901 198.096 111.901 120.346 0 217.904-85.962 217.904-192s-97.558-192-217.904-192c-87.901 0-163.642 45.859-198.096 111.901-34.451-66.042-110.195-111.901-198.095-111.901-120.345 0-217.905 85.962-217.905 192s97.559 192 217.905 192c87.9 0 163.644-45.859 198.095-111.901zM864 512c0 63.322-61.053 128-153.904 128s-153.904-64.678-153.904-128c0-63.322 61.053-128 153.904-128s153.904 64.678 153.904 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Unlimited"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":103,"id":20,"name":"Unlimited","prevSize":32,"code":59855},"setIdx":0,"setId":0,"iconIdx":180},{"icon":{"paths":["M829.168 153.372c12.515-12.497 32.803-12.497 45.315 0 12.515 12.497 12.515 32.758 0 45.255l-672.887 672c-12.513 12.496-32.801 12.496-45.315 0s-12.513-32.758 0-45.254l672.887-672zM110.155 480.051c101.936-153.699 303.797-327.676 542.114-225.436l-49.578 49.512c-56.528-19.209-108.077-19.504-153.526-9.726-114.906 24.721-215.653 118.392-280.79 213.871 38.633 48 75.969 86.822 111.862 117.885l-45.363 45.302c-39.684-34.736-80.189-77.437-121.317-129.181-14.248-17.923-16.056-43.146-3.402-62.227zM797.981 350.454l-45.328 45.27c35.546 31.427 72.336 70.947 110.186 120.080-61.546 95.187-158.656 188.682-272.125 213.626-46.752 10.278-100.624 9.734-160.592-11.603l-49.331 49.267c244.662 107.334 443.389-69.158 540.778-224.253 11.674-18.589 9.894-42.656-3.395-60.128-40.493-53.235-80.64-96.931-120.192-132.259zM514.982 347.43c13.709 0 27.037 1.571 39.802 4.541l-203.738 203.469c-3.901-13.837-5.981-28.403-5.981-43.44 0-90.89 76.074-164.57 169.917-164.57zM679.091 469.184l-203.264 202.998c12.57 2.87 25.68 4.39 39.155 4.39 93.843 0 169.917-73.68 169.917-164.573 0-14.81-2.019-29.162-5.808-42.816z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["unread-on-top-disabled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":104,"id":19,"name":"unread-on-top-disabled","prevSize":32,"code":59856},"setIdx":0,"setId":0,"iconIdx":181},{"icon":{"paths":["M589.36 729.43c-107.366 23.603-252.288-9.875-422.339-221.158 65.137-95.478 165.885-189.15 280.79-213.871 108.314-23.302 251.286 10.604 413.674 221.404-61.546 95.187-158.653 188.682-272.125 213.626zM916.819 482.714c-347.59-456.963-669.742-211.156-808.018-2.662-12.655 19.082-10.846 44.304 3.402 62.227 362.786 456.419 677.038 209.142 808.011 0.563 11.674-18.589 9.894-42.656-3.395-60.128zM619.462 512c0-53.709-45.517-100.57-105.834-100.57s-105.834 46.861-105.834 100.57c0 53.709 45.517 100.573 105.834 100.573s105.834-46.864 105.834-100.573zM683.546 512c0 90.893-76.074 164.573-169.917 164.573s-169.917-73.68-169.917-164.573c0-90.89 76.074-164.57 169.917-164.57s169.917 73.68 169.917 164.57z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["unread-on-top"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":105,"id":18,"name":"unread-on-top","prevSize":32,"code":59857},"setIdx":0,"setId":0,"iconIdx":182},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l33.166 49.75h-59.792c-44.011 0-70.484 14.874-86.279 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h143.999v64h-144c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.305-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.616 53.456 30.346 35.626 38.102 81.35 33.443 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-144v-64h144c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 588.778l-96-99.050c-6.029-6.218-14.32-9.728-22.979-9.728s-16.95 3.51-22.979 9.728l-96 99.050c-12.298 12.691-11.981 32.95 0.707 45.251 12.691 12.298 32.95 11.981 45.251-0.707l41.021-42.326v273.005c0 17.674 14.326 32 32 32s32-14.326 32-32v-273.005l41.021 42.326c12.301 12.688 32.56 13.005 45.251 0.707 12.691-12.301 13.005-32.56 0.707-45.251z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["upload"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":106,"id":17,"name":"upload","prevSize":32,"code":59858},"setIdx":0,"setId":0,"iconIdx":183},{"icon":{"paths":["M553.411 326.282c0 91.578-75.846 165.818-169.411 165.818-93.564 0-169.412-74.24-169.412-165.818 0-91.581 75.848-165.821 169.412-165.821 93.565 0 169.411 74.24 169.411 165.821zM485.648 326.282c0-54.949-45.51-99.493-101.648-99.493s-101.647 44.544-101.647 99.493c0 54.947 45.509 99.491 101.647 99.491s101.648-44.544 101.648-99.491z","M203.427 511.232c28.952-9.11 60.004-9.67 89.279-1.61l51.342 14.131c25.632 7.056 52.819 6.566 78.166-1.408l31.872-10.026c31.206-9.821 64.678-10.422 96.234-1.738 71.962 19.811 121.68 84.051 121.68 157.219v96.24c0 54.947-45.51 99.491-101.648 99.491h-372.705c-56.138 0-101.647-44.544-101.647-99.491v-108.566c0-65.814 43.411-124.106 107.427-144.243zM274.359 573.472c-16.46-4.531-33.918-4.218-50.196 0.906-35.992 11.322-60.399 44.093-60.399 81.098v108.566c0 18.317 15.17 33.165 33.882 33.165h372.705c18.714 0 33.882-14.848 33.882-33.165v-96.24c0-43.453-29.523-81.603-72.259-93.366-18.739-5.158-38.618-4.8-57.152 1.030l-31.872 10.026c-38.022 11.962-78.803 12.698-117.248 2.115l-51.343-14.134z","M797.091 189.321c0-15.913-13.024-28.812-29.091-28.812s-29.091 12.9-29.091 28.812v100.844h-101.818c-16.067 0-29.091 12.9-29.091 28.812s13.024 28.812 29.091 28.812h101.818v100.845c0 15.914 13.024 28.813 29.091 28.813s29.091-12.899 29.091-28.813v-100.845h101.818c16.067 0 29.091-12.899 29.091-28.812s-13.024-28.812-29.091-28.812h-101.818v-100.844z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["user-add"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":107,"id":16,"name":"user-add","prevSize":32,"code":59859},"setIdx":0,"setId":0,"iconIdx":184},{"icon":{"paths":["M464 318.747c0-51.548-42.406-94.366-96-94.366-53.592 0-96 42.819-96 94.366s42.408 94.367 96 94.367c53.594 0 96-42.819 96-94.367zM528 318.747c0 87.416-71.635 158.284-160 158.284s-160-70.867-160-158.284c0-87.417 71.635-158.282 160-158.282s160 70.865 160 158.282zM281.778 525.712c-27.649-7.693-56.976-7.158-84.319 1.536-60.46 19.226-101.459 74.864-101.459 137.69v103.629c0 52.451 42.981 94.97 96 94.97h352c3.606 0 7.165-0.195 10.666-0.579v-64.534c-3.334 1.168-6.925 1.802-10.666 1.802h-352c-17.673 0-32-14.173-32-31.658v-103.629c0-35.325 23.051-66.605 57.044-77.414 15.373-4.89 31.862-5.187 47.407-0.864l48.489 13.491c36.311 10.102 74.827 9.402 110.737-2.016l30.099-9.571c17.504-5.568 36.278-5.91 53.978-0.986 18.899 5.261 35.066 16.042 46.912 30.282v-79.712c-9.309-4.749-19.203-8.627-29.584-11.517-29.805-8.291-61.414-7.715-90.89 1.654l-30.099 9.574c-23.942 7.61-49.619 8.080-73.824 1.344l-48.491-13.491zM763.366 489.709c-12.326-12.646-32.586-12.918-45.248-0.608-12.666 12.31-12.938 32.544-0.611 45.19l102.842 105.51h-324.349c-17.674 0-32 14.307-32 31.958 0 17.648 14.326 31.958 32 31.958h324.349l-102.842 105.507c-12.326 12.65-12.054 32.88 0.611 45.194 12.662 12.31 32.922 12.038 45.248-0.611l155.718-159.757c12.093-12.406 12.093-32.176 0-44.582l-155.718-159.76z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["user-forward"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":108,"id":15,"name":"user-forward","prevSize":32,"code":59860},"setIdx":0,"setId":0,"iconIdx":185},{"icon":{"paths":["M609.354 336c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM673.354 336c0 88.365-71.635 160-160 160s-160-71.635-160-160c0-88.365 71.635-160 160-160s160 71.635 160 160zM413.805 551.802c-24.621-5.77-50.285-5.366-74.714 1.178-67.086 17.968-113.738 78.762-113.738 148.211v66.81c0 53.021 42.98 96 96 96h384c53.021 0 96-42.979 96-96v-58.531c0-74.301-51.149-138.826-123.488-155.779l-6.458-1.514c-25.674-6.016-52.435-5.594-77.907 1.229l-49.626 13.293c-20.378 5.456-41.789 5.795-62.326 0.979l-67.744-15.875zM355.651 614.8c14.237-3.814 29.197-4.051 43.549-0.688l67.744 15.878c30.806 7.219 62.925 6.714 93.488-1.472l49.629-13.293c15.283-4.096 31.341-4.349 46.742-0.736l6.458 1.51c43.402 10.173 74.093 48.89 74.093 93.469v58.531c0 17.674-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32v-66.81c0-40.483 27.193-75.917 66.298-86.39z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["user"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":109,"id":14,"name":"user","prevSize":32,"code":59861},"setIdx":0,"setId":0,"iconIdx":186},{"icon":{"paths":["M201.583 672c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 576c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 480c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 384c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 288c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M329.584 192c-17.674 0-32.001 14.327-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M201.583 864c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 768c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["view-condensed"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":110,"id":13,"name":"view-condensed","prevSize":32,"code":59862},"setIdx":0,"setId":0,"iconIdx":187},{"icon":{"paths":["M288 192c0-17.673 14.327-32 32-32h544c17.674 0 32 14.327 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32h448c17.674 0 32 14.327 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.327-32-32zM192 304c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M288 464c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 560c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M288 736c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 832c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 848c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["view-extended"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":111,"id":12,"name":"view-extended","prevSize":32,"code":59863},"setIdx":0,"setId":0,"iconIdx":188},{"icon":{"paths":["M192 320c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M320 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 480c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M192 832c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 736c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["view-medium"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":112,"id":11,"name":"view-medium","prevSize":32,"code":59864},"setIdx":0,"setId":0,"iconIdx":189},{"icon":{"paths":["M640.854 256c26.512 0 48-21.49 48-48s-21.488-48-48-48c-26.509 0-48 21.49-48 48s21.491 48 48 48zM640.854 320c61.856 0 112-50.144 112-112s-50.144-112-112-112c-61.856 0-112 50.144-112 112s50.144 112 112 112zM592.854 416v256h-160v128h32v-96h224v-288h-96zM528.854 768h160c35.347 0 64-28.653 64-64v-288c0-35.347-28.653-64-64-64h-96c-35.344 0-64 28.653-64 64v192h-96c-35.344 0-64 28.653-64 64v128c0 35.347 28.656 64 64 64h32c35.347 0 64-28.653 64-64v-32zM784.854 448c0-17.674 14.326-32 32-32s32 14.326 32 32v384c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32s14.326-32 32-32h192v-352zM368.403 401.52c9.677-9.059 10.176-24.246 1.117-33.923l-48.272-51.558v-47.925c0-13.255-10.746-24-24-24s-24 10.745-24 24v57.406c0 6.093 2.316 11.955 6.48 16.403l54.752 58.48c9.059 9.677 24.246 10.176 33.923 1.117zM170.974 414.278c53.308 74.218 156.687 91.171 230.908 37.862 10.765-7.731 25.76-5.274 33.494 5.491 7.731 10.768 5.274 25.763-5.494 33.494-95.75 68.771-229.121 46.902-297.894-48.848s-46.902-229.123 48.848-297.895c75.545-54.26 174.453-52.073 246.597-1.796 10.874 7.578 13.546 22.538 5.968 33.412s-22.538 13.547-33.411 5.968c-55.971-39.005-132.65-40.618-191.153 1.402-74.219 53.308-91.171 156.688-37.864 230.909z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["waiting-on-me"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":113,"id":10,"name":"waiting-on-me","prevSize":32,"code":59865},"setIdx":0,"setId":0,"iconIdx":190},{"icon":{"paths":["M512 352.003c17.674 0 32 14.33 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.67 14.326-32 32-32z","M512 672.003c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.67 14.326-32 32-32z","M567.101 158.348c-24.774-41.922-85.427-41.922-110.202 0l-359.92 609.099c-25.21 42.662 5.544 96.557 55.099 96.557h719.845c49.555 0 80.307-53.894 55.098-96.557l-359.92-609.099zM512 190.906l359.923 609.097h-719.845l359.922-609.097z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["warning"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":114,"id":9,"name":"warning","prevSize":32,"code":59866},"setIdx":0,"setId":0,"iconIdx":191},{"icon":{"paths":["M784.131 240.143c-35.43-35.658-77.581-63.931-124.016-83.181s-96.227-29.094-146.493-28.961c-210.863 0-382.322 171.532-382.414 382.376-0.085 67.104 17.523 133.043 51.047 191.171l-54.256 198.154 202.72-53.174c56.064 30.531 118.883 46.531 182.717 46.538h0.166c210.752 0 382.32-171.552 382.394-382.394 0.16-50.25-9.645-100.029-28.848-146.464-19.2-46.436-47.418-88.604-83.018-124.065zM513.622 828.486h-0.186c-56.922 0.006-112.797-15.293-161.776-44.298l-11.606-6.896-120.302 31.555 32.124-117.347-7.573-12.029c-31.783-50.64-48.608-109.232-48.535-169.021 0-175.235 142.653-317.816 317.981-317.816 84.301 0.049 165.13 33.58 224.707 93.218 59.581 59.638 93.034 140.499 92.998 224.8-0.074 175.254-142.653 317.834-317.834 317.834zM687.958 590.451c-9.552-4.787-56.528-27.907-65.293-31.171s-15.126-4.768-21.491 4.784c-6.362 9.555-24.678 31.171-30.253 37.462-5.574 6.288-11.149 7.187-20.701 2.4-9.555-4.784-40.339-14.87-76.845-47.434-28.403-25.322-47.584-56.621-53.174-66.192-5.594-9.571-0.589-14.669 4.198-19.491 4.291-4.291 9.552-11.168 14.32-16.742s6.381-9.571 9.552-15.933c3.174-6.362 1.597-11.955-0.787-16.739-2.384-4.787-21.491-51.818-29.466-70.96-7.757-18.63-15.622-16.099-21.491-16.394-5.501-0.275-11.955-0.349-18.336-0.349-4.842 0.131-9.606 1.264-13.994 3.325-4.387 2.058-8.298 5.005-11.491 8.65-8.749 9.552-33.428 32.675-33.428 79.706s34.234 92.467 39.002 98.848c4.765 6.381 67.382 102.883 163.187 144.266 17.792 7.68 35.974 14.413 54.477 20.17 22.902 7.334 43.731 6.237 60.179 3.779 18.336-2.733 56.547-23.104 64.506-45.418 7.955-22.317 7.955-41.459 5.501-45.456-2.458-3.997-8.618-6.326-18.173-11.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["whatsapp-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":237,"id":7,"name":"whatsapp-monochromatic","prevSize":32,"code":59868},"setIdx":0,"setId":0,"iconIdx":192},{"icon":{"paths":["M354.006 399.123l14.029 0.627-0.541-16.726-152.878 1.578c49.916-116.491 165.64-198.133 300.366-198.133 99.645 0 188.893 44.659 248.81 115.065-3.712 0.171-7.491 0.492-11.526 1.068 0 0-63.76 14.898-13.302 118.708 0 0 31.085 84.541-19.306 198.774l-28.403 73.306-99.101-264.723c0 0-5.984-28.154 23.61-28.154l23.76-1.472 0.339-16.035h-228.368v14.458c0 0 39.83-0.288 56.15 27.149l40.762 103.779-73.014 174.403-108.608-272.4c0 0-3.389-31.779 27.222-31.27z","M841.603 513.168c0-33.862-5.235-66.643-14.726-97.357l-145.949 378.755c96.134-56.88 160.675-161.571 160.675-281.398z","M411.478 823.011c32.49 10.912 67.267 16.778 103.488 16.778 37.85 0 74.102-6.406 107.898-18.256l-99.709-258.502-111.677 259.981z","M188.279 513.149c0-32.083 4.712-63.066 13.339-92.336l1 2.051 152.656 375.229c-99.606-55.882-166.994-162.538-166.994-284.944z","M130.705 512.093c0-211.775 172.316-384.093 384.076-384.093 211.725 0 383.923 172.318 383.923 384.093 0 211.776-172.198 384.010-383.923 384.010-211.757 0-384.076-172.234-384.076-384.010zM514.781 879.254c202.384 0 367.11-164.742 367.11-367.178 0-202.486-164.726-367.145-367.11-367.161-202.489 0-367.213 164.673-367.213 367.161 0 202.435 164.724 367.178 367.213 367.178z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["wordpress-monochromatic"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":241,"id":5,"name":"wordpress-monochromatic","prevSize":32,"code":59656},"setIdx":0,"setId":0,"iconIdx":193},{"icon":{"paths":["M193.353 405.334h213.332v-213.334h-213.332v213.334zM129.353 170.667c0-23.564 19.102-42.667 42.667-42.667h256c23.565 0 42.666 19.102 42.666 42.667v255.999c0 23.565-19.101 42.669-42.666 42.669h-256c-23.564 0-42.667-19.104-42.667-42.669v-255.999zM620.019 405.334h213.334v-213.334h-213.334v213.334zM556.019 170.667c0-23.564 19.104-42.667 42.666-42.667h256c23.565 0 42.669 19.102 42.669 42.667v255.999c0 23.565-19.104 42.669-42.669 42.669h-256c-23.562 0-42.666-19.104-42.666-42.669v-255.999zM620.019 618.666h213.334v213.334h-213.334v-213.334zM598.685 554.666c-23.562 0-42.666 19.104-42.666 42.669v256c0 23.562 19.104 42.666 42.666 42.666h256c23.565 0 42.669-19.104 42.669-42.666v-256c0-23.565-19.104-42.669-42.669-42.669h-256zM193.353 832h213.332v-213.334h-213.332v213.334zM129.353 597.334c0-23.565 19.102-42.669 42.667-42.669h256c23.565 0 42.666 19.104 42.666 42.669v256c0 23.562-19.101 42.666-42.666 42.666h-256c-23.564 0-42.667-19.104-42.667-42.666v-256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["workspaces"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":119,"id":4,"name":"workspaces","prevSize":32,"code":59870},"setIdx":0,"setId":0,"iconIdx":194},{"icon":{"paths":["M384.509 149.333c0-11.782 9.562-21.333 21.36-21.333h85.446c11.798 0 21.363 9.551 21.363 21.333v106.667h-106.81c-11.798 0-21.36-9.551-21.36-21.333v-85.333z","M512.678 256h106.806c11.798 0 21.36 9.551 21.36 21.333v85.332c0 11.782-9.562 21.334-21.36 21.334h-106.806v-128z","M384.509 405.334c0-11.782 9.562-21.334 21.36-21.334h106.81v128h-106.81c-11.798 0-21.36-9.552-21.36-21.334v-85.331z","M512.678 512h106.806c11.798 0 21.36 9.552 21.36 21.334v106.666h-128.166v-128z","M427.232 640c-23.597 0-42.723 19.104-42.723 42.666v170.669c0 23.562 19.126 42.666 42.723 42.666h170.89c23.597 0 42.723-19.104 42.723-42.666v-213.334h-213.613zM491.315 725.334c-11.798 0-21.36 9.549-21.36 21.331v42.669c0 11.782 9.562 21.331 21.36 21.331h42.723c11.798 0 21.36-9.549 21.36-21.331v-42.669c0-11.782-9.562-21.331-21.36-21.331h-42.723z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["zip"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":120,"id":3,"name":"zip","prevSize":32,"code":59871},"setIdx":0,"setId":0,"iconIdx":195},{"icon":{"paths":["M544 208c0-17.673-14.326-32-32-32s-32 14.327-32 32v271.997h-271.998c-17.673 0-32 14.326-32 32s14.327 32 32 32h271.998v272.003c0 17.674 14.326 32 32 32s32-14.326 32-32v-272.003l272-0.003c17.674 0 32-14.326 32-32s-14.326-32-32-32l-272 0.003v-271.997z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["add"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":240,"id":2,"name":"add","prevSize":32,"code":59872},"setIdx":0,"setId":0,"iconIdx":196}],"height":1024,"metadata":{"name":"custom"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"custom","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"noie8":true,"ie7":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon","height":32,"columns":16,"margin":16},"historySize":50}} \ No newline at end of file +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M520.534 827.734c-169.664 0-307.201-137.536-307.201-307.2 0-169.661 137.537-307.198 307.201-307.198 169.661 0 307.2 137.538 307.2 307.198 0 169.664-137.539 307.2-307.2 307.2zM563.2 341.334c0-23.563-19.104-42.665-42.666-42.665-23.565 0-42.669 19.103-42.669 42.665v199.709l144.013 115.21c18.4 14.72 45.251 11.738 59.971-6.662s11.738-45.251-6.662-59.971l-111.987-89.59v-158.694z"],"attrs":[{"fill":"rgb(243, 190, 8)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":0}]},"tags":["status-away"],"grid":0},"attrs":[{"fill":"rgb(243, 190, 8)"}],"properties":{"order":23,"id":0,"name":"status-away","prevSize":32,"code":59741},"setIdx":0,"setId":3,"iconIdx":0},{"icon":{"paths":["M520.534 827.734c-169.664 0-307.201-137.536-307.201-307.2 0-169.661 137.537-307.198 307.201-307.198 169.661 0 307.2 137.538 307.2 307.198 0 169.664-137.539 307.2-307.2 307.2zM418.134 477.866c-23.565 0-42.669 19.104-42.669 42.669s19.104 42.666 42.669 42.666h204.8c23.562 0 42.666-19.101 42.666-42.666s-19.104-42.669-42.666-42.669h-204.8z"],"attrs":[{"fill":"rgb(245, 69, 92)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":2}]},"tags":["status-busy"],"grid":0},"attrs":[{"fill":"rgb(245, 69, 92)"}],"properties":{"order":19,"id":1,"name":"status-busy","prevSize":32,"code":59742},"setIdx":0,"setId":3,"iconIdx":1},{"icon":{"paths":["M825.136 560.653l-84.618-11.040c1.238-9.482 1.882-19.187 1.882-29.085s-0.643-19.603-1.882-29.085l84.618-11.037c1.712 13.13 2.598 26.522 2.598 40.122s-0.886 26.992-2.598 40.125zM804.422 402.934l-78.826 32.688c-7.459-17.99-17.242-34.822-28.995-50.118l67.664-51.994c16.243 21.139 29.802 44.451 40.157 69.424zM707.552 276.796l-51.997 67.662c-15.293-11.754-32.125-21.533-50.118-28.994l32.688-78.825c24.976 10.356 48.288 23.913 69.427 40.157zM560.656 215.925l-11.037 84.616c-9.482-1.237-19.187-1.88-29.085-1.88-9.901 0-19.606 0.643-29.088 1.88l-11.037-84.616c13.133-1.713 26.525-2.597 40.125-2.597 13.597 0 26.989 0.884 40.122 2.597zM402.941 236.639l32.688 78.825c-17.99 7.461-34.826 17.241-50.118 28.994l-51.997-67.662c21.139-16.244 44.451-29.801 69.427-40.157zM276.801 333.51l67.663 51.994c-11.754 15.296-21.536 32.128-28.996 50.118l-78.825-32.688c10.356-24.973 23.913-48.285 40.157-69.424zM215.93 480.406c-1.713 13.13-2.596 26.522-2.596 40.122s0.884 26.992 2.596 40.125l84.616-11.040c-1.237-9.482-1.88-19.187-1.88-29.085s0.643-19.603 1.88-29.085l-84.616-11.037zM236.644 638.122l78.825-32.688c7.46 17.99 17.242 34.822 28.996 50.118l-67.663 51.994c-16.244-21.139-29.801-44.451-40.157-69.424zM333.514 764.259l51.997-67.661c15.293 11.754 32.128 21.533 50.118 28.995l-32.688 78.826c-24.976-10.358-48.288-23.914-69.427-40.16zM480.41 825.133l11.037-84.618c9.482 1.235 19.187 1.878 29.088 1.878 9.898 0 19.603-0.643 29.085-1.878l11.037 84.618c-13.133 1.712-26.525 2.595-40.122 2.595-13.6 0-26.992-0.883-40.125-2.595zM638.125 804.419l-32.688-78.826c17.994-7.462 34.826-17.242 50.118-28.995l51.997 67.661c-21.139 16.246-44.451 29.802-69.427 40.16zM764.266 707.546l-67.664-51.994c11.754-15.296 21.536-32.128 28.995-50.118l78.826 32.688c-10.355 24.973-23.914 48.285-40.157 69.424z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":3}]},"tags":["status-loading"],"grid":0},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":20,"id":2,"name":"status-loading","prevSize":32,"code":59743},"setIdx":0,"setId":3,"iconIdx":2},{"icon":{"paths":["M520.534 742.403c-122.534 0-221.868-99.334-221.868-221.869 0-122.531 99.334-221.865 221.868-221.865 122.531 0 221.866 99.334 221.866 221.865 0 122.534-99.334 221.869-221.866 221.869zM520.534 827.734c169.661 0 307.2-137.536 307.2-307.2 0-169.661-137.539-307.198-307.2-307.198-169.664 0-307.201 137.538-307.201 307.198 0 169.664 137.537 307.2 307.201 307.2z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":3}]},"tags":["status-offline"],"grid":0},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":21,"id":3,"name":"status-offline","prevSize":32,"code":59744},"setIdx":0,"setId":3,"iconIdx":3},{"icon":{"paths":["M819.2 511.997c0 169.661-137.539 307.2-307.2 307.2s-307.2-137.539-307.2-307.2c0-169.661 137.54-307.2 307.2-307.2s307.2 137.539 307.2 307.2z"],"attrs":[{"fill":"rgb(45, 224, 165)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":1}]},"tags":["status-online"],"grid":0},"attrs":[{"fill":"rgb(45, 224, 165)"}],"properties":{"order":22,"id":4,"name":"status-online","prevSize":32,"code":59745},"setIdx":0,"setId":3,"iconIdx":4},{"icon":{"paths":["M368 182.4c0-17.673-14.326-32-32-32s-32 14.327-32 32v144h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v288h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v144c0 17.674 14.327 32 32 32s32-14.326 32-32v-144h288v144c0 17.674 14.326 32 32 32s32-14.326 32-32v-144h144c17.674 0 32-14.326 32-32s-14.326-32-32-32h-144v-80h-64v80h-288v-288h80v-64h-80v-144z","M640.515 327.283c-15.328-3.59-31.306-3.338-46.512 0.733-41.763 11.187-70.803 49.030-70.803 92.269v35.539c0 36.003 29.187 65.194 65.194 65.194h210.413c36.006 0 65.194-29.19 65.194-65.194v-28.336c0-47.667-33.040-88.957-79.27-99.792-16.413-3.846-33.613-3.603-49.946 0.771l-25.827 6.918c-10.381 2.781-21.286 2.95-31.747 0.499l-36.694-8.602z","M782.637 217.037c0 49.174-39.862 89.037-89.037 89.037s-89.037-39.863-89.037-89.037c0-49.174 39.862-89.037 89.037-89.037s89.037 39.863 89.037 89.037z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["channel-auto-join"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":2,"id":202,"name":"channel-auto-join","prevSize":32,"code":59746},"setIdx":1,"setId":4,"iconIdx":0},{"icon":{"paths":["M236.709 162.578c11.779-5.037 25.426-2.564 34.688 6.286l150.709 144c6.32 6.037 9.894 14.396 9.894 23.136s-3.574 17.101-9.894 23.136l-150.709 144c-9.262 8.851-22.909 11.325-34.688 6.288s-19.419-16.614-19.419-29.424v-112h-73.29c-17.673 0-32-14.326-32-32 0-17.672 14.327-31.999 32-31.999h73.29v-112c0-12.81 7.64-24.386 19.419-29.423zM320 368.179v-0.179h0.189l-0.189 0.179zM320.189 304.001h-0.189v-0.179l0.189 0.179z","M492.899 303.258c8.762-9.388 21.245-15.258 35.101-15.258 26.509 0 48 21.49 48 48s-21.491 48-48 48c-16.582 0-31.203-8.41-39.824-21.197l-43.098 48.483c20.49 22.554 50.051 36.714 82.922 36.714 61.856 0 112-50.144 112-112s-50.144-112-112-112c-25.549 0-49.098 8.554-67.942 22.955l32.842 56.303z","M145.615 483.229l32.174 64.349c-0.861 3.040-1.318 6.23-1.318 9.501v44.688c0 17.674 14.327 32 32 32h79.53v64h-79.53c-53.019 0-96-42.979-96-96v-44.688c0-28.848 12.515-55.488 33.144-73.85z","M625.267 640h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786z","M424.714 640h-0.797v1.786c0.272-0.592 0.538-1.187 0.797-1.786z","M477.901 494.515c-28.56-10.957-60.291-10.211-88.307 2.067-42.282 18.534-69.594 60.326-69.594 106.49v132.928c0 53.021 42.979 96 96 96h224c53.021 0 96-42.979 96-96v-125.062c0-51.162-31.536-97.034-79.306-115.354-30.352-11.642-64.067-10.851-93.84 2.198l-2.070 0.909c-21.523 9.434-45.901 10.006-67.843 1.59l-15.040-5.766zM415.286 555.2c12.595-5.52 26.858-5.856 39.699-0.931l15.040 5.77c37.664 14.445 79.504 13.462 116.451-2.73l2.070-0.909c14.349-6.288 30.602-6.669 45.229-1.059 23.024 8.829 38.224 30.938 38.224 55.597v125.062c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32v-132.928c0-20.752 12.278-39.539 31.286-47.872z","M864 320c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM800 320c0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.673 14.326-32 32-32s32 14.327 32 32z","M840.714 697.766h-72.714v-64h72.714c17.674 0 32-14.326 32-32v-44.688c0-15.050-9.664-28.394-23.958-33.091-7.536-2.474-15.69-2.304-23.114 0.483l-4.554 1.709c-19.77 7.421-40.89 9.978-61.619 7.632-12.438-31.683-37.722-57.549-70.774-70.227-1.754-0.672-3.52-1.302-5.296-1.894 18.058-5.312 37.36-5.040 55.344 0.867l14.182 4.659c14.886 4.893 30.998 4.554 45.667-0.954l4.554-1.709c21.069-7.91 44.205-8.394 65.581-1.37 40.566 13.325 67.987 51.197 67.987 93.894v44.688c0 53.021-42.982 96-96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["channel-move-to-team"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":3,"id":201,"name":"channel-move-to-team","prevSize":32,"code":59747},"setIdx":1,"setId":4,"iconIdx":1},{"icon":{"paths":["M512 128c-97.203 0-176 78.798-176 176v142.477h-16c-53.020 0-96 42.979-96 96v257.523c0 53.021 42.981 96 96 96h384c53.021 0 96-42.979 96-96v-257.523c0-53.021-42.979-96-96-96h-16v-142.477c0-97.202-78.797-176-176-176zM624 304v142.477h-224v-142.477c0-61.856 50.144-112 112-112s112 50.144 112 112z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lock-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":4,"id":200,"name":"lock-filled","prevSize":32,"code":59748},"setIdx":1,"setId":4,"iconIdx":2},{"icon":{"paths":["M336 304c0-97.202 78.797-176 176-176s176 78.798 176 176v142.477h16c53.021 0 96 42.979 96 96v257.523c0 53.021-42.979 96-96 96h-384c-53.019 0-96-42.979-96-96v-257.523c0-53.021 42.981-96 96-96h16v-142.477zM400 446.477h224v-142.477c0-61.856-50.144-112-112-112s-112 50.144-112 112v142.477zM320 510.477c-17.673 0-32 14.326-32 32v257.523c0 17.674 14.327 32 32 32h384c17.674 0 32-14.326 32-32v-257.523c0-17.674-14.326-32-32-32h-384z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["locker"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":5,"id":199,"name":"locker","prevSize":32,"code":59749},"setIdx":1,"setId":4,"iconIdx":3},{"icon":{"paths":["M632 256c-17.674 0-32 14.327-32 32v192c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-192c0-17.673-14.326-32-32-32h-24v-56c0-57.438-46.563-104-104-104s-104 46.563-104 104v56h-24zM760 160c-22.093 0-40 17.908-40 40v55.238h80v-55.238c0-22.092-17.907-40-40-40z","M528 224c10.096 0 19.878 1.336 29.184 3.84-13.251 16.46-21.184 37.383-21.184 60.16v0.664c-2.602-0.436-5.274-0.664-8-0.664-26.509 0-48 21.49-48 48s21.491 48 48 48c2.726 0 5.398-0.227 8-0.662v64.381c-2.643 0.186-5.309 0.282-8 0.282-61.856 0-112-50.144-112-112s50.144-112 112-112z","M492.941 500.282c14.883 5.709 30.886 7.283 46.358 4.758 6.179 22.938 20.643 42.474 39.987 55.206-35.123 13.318-74.019 13.309-109.261-0.208l-15.040-5.77c-12.842-4.925-27.104-4.589-39.699 0.931-19.008 8.333-31.286 27.12-31.286 47.872v132.928c0 17.674 14.326 32 32 32h224c17.674 0 32-14.326 32-32v-125.062c0-12.842-4.122-24.995-11.328-34.938h70.291c3.293 11.162 5.037 22.902 5.037 34.938v125.062c0 53.021-42.979 96-96 96h-224c-53.021 0-96-42.979-96-96v-132.928c0-46.163 27.312-87.955 69.594-106.49 28.016-12.278 59.747-13.024 88.307-2.067l15.040 5.766z","M888 576h-15.286v25.766c0 17.674-14.326 32-32 32h-72.714v64h72.714c53.018 0 96-42.979 96-96v-39.027c-14.282 8.426-30.931 13.261-48.714 13.261z","M281.184 416c53.018 0 96-42.979 96-96 0-53.019-42.982-96-96-96-53.020 0-96 42.981-96 96 0 53.021 42.98 96 96 96zM281.184 352c-17.673 0-32-14.326-32-32s14.327-32 32-32c17.673 0 32 14.327 32 32s-14.327 32-32 32z","M625.267 640h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786z","M357.594 464.582c2.528-1.107 5.088-2.122 7.674-3.043-17.907-5.155-37.014-4.832-54.824 1.018l-14.183 4.659c-14.887 4.893-30.998 4.554-45.668-0.954l-4.554-1.709c-21.067-7.91-44.203-8.394-65.581-1.37-40.565 13.325-67.986 51.197-67.986 93.894v44.688c0 53.021 42.981 96 96 96h79.53v-64h-79.53c-17.673 0-32-14.326-32-32v-44.688c0-15.050 9.664-28.394 23.96-33.091 7.534-2.474 15.688-2.304 23.112 0.483l4.554 1.709c21.238 7.974 44.041 10.333 66.238 7.027 10.398-30.173 32.994-55.357 63.259-68.624z","M423.917 640h0.797c-0.259 0.598-0.525 1.194-0.797 1.786v-1.786z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["teams-private"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":6,"id":198,"name":"teams-private","prevSize":32,"code":59750},"setIdx":1,"setId":4,"iconIdx":4},{"icon":{"paths":["M281.184 336c17.673 0 32-14.326 32-32s-14.327-32-32-32c-17.673 0-32 14.327-32 32s14.327 32 32 32zM281.184 400c-53.020 0-96-42.979-96-96 0-53.019 42.98-96 96-96 53.018 0 96 42.981 96 96 0 53.021-42.982 96-96 96zM576 320c0-26.51-21.491-48-48-48s-48 21.49-48 48c0 26.509 21.491 48 48 48s48-21.491 48-48zM640 320c0 61.856-50.144 112-112 112s-112-50.144-112-112c0-61.856 50.144-112 112-112s112 50.144 112 112zM477.901 478.515c-28.56-10.957-60.291-10.211-88.307 2.067-42.282 18.534-69.594 60.326-69.594 106.49v132.928c0 53.021 42.979 96 96 96h224c53.021 0 96-42.979 96-96v-125.062c0-51.162-31.536-97.034-79.306-115.354-30.352-11.642-64.067-10.851-93.84 2.198l-2.070 0.909c-21.523 9.434-45.901 10.006-67.843 1.59l-15.040-5.766zM415.286 539.2c12.595-5.52 26.858-5.856 39.699-0.931l15.040 5.77c37.664 14.445 79.504 13.462 116.451-2.73l2.070-0.909c14.349-6.288 30.602-6.669 45.229-1.059 23.024 8.829 38.224 30.938 38.224 55.597v125.062c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32v-132.928c0-20.752 12.278-39.539 31.286-47.872zM768 336c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.674 0 32 14.327 32 32s-14.326 32-32 32zM768 400c53.021 0 96-42.979 96-96 0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96zM840.714 681.766h-72.714v-64h72.714c17.674 0 32-14.326 32-32v-44.688c0-15.050-9.664-28.394-23.958-33.091-7.536-2.474-15.69-2.304-23.114 0.483l-4.554 1.709c-19.77 7.421-40.89 9.978-61.619 7.632-12.438-31.683-37.722-57.549-70.774-70.227-1.754-0.672-3.52-1.302-5.296-1.894 18.058-5.312 37.36-5.040 55.344 0.867l14.182 4.659c14.886 4.893 30.998 4.554 45.667-0.954l4.554-1.709c21.069-7.91 44.205-8.394 65.581-1.37 40.566 13.325 67.987 51.197 67.987 93.894v44.688c0 53.021-42.982 96-96 96zM625.267 624h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786zM357.594 448.582c2.528-1.107 5.088-2.122 7.674-3.043-17.907-5.155-37.014-4.832-54.824 1.018l-14.183 4.659c-14.887 4.893-30.998 4.554-45.668-0.954l-4.554-1.709c-21.067-7.91-44.203-8.394-65.581-1.37-40.565 13.325-67.986 51.197-67.986 93.894v44.688c0 53.021 42.981 96 96 96h79.53v-64h-79.53c-17.673 0-32-14.326-32-32v-44.688c0-15.050 9.664-28.394 23.96-33.091 7.534-2.474 15.688-2.304 23.112 0.483l4.554 1.709c21.238 7.974 44.041 10.333 66.238 7.027 10.398-30.173 32.994-55.357 63.259-68.624zM423.917 624h0.797c-0.259 0.598-0.525 1.194-0.797 1.786v-1.786z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["teams"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":7,"id":197,"name":"teams","prevSize":32,"code":59751},"setIdx":1,"setId":4,"iconIdx":5},{"icon":{"paths":["M502.627 142.69c12.915-3.408 26.509-3.289 39.363 0.345l245.194 69.317c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.145-184.394 520.422-272.611 580.214-33.053 22.403-75.28 22.474-108.416 0.259-88.758-59.504-300.1-238.589-276.51-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.724-69.849zM524.579 204.621c-1.837-0.519-3.779-0.536-5.622-0.049l-264.725 69.849c-4.4 1.161-6.999 4.775-7.233 8.165-21.305 308.166 168.214 468.531 248.301 522.218 11.507 7.715 25.434 7.677 36.87-0.077 79.379-53.798 266.835-214.288 244.685-522.649-0.243-3.358-2.787-6.925-7.082-8.139l-245.194-69.317z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["set-as-moderator"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":245,"id":0,"name":"shield","prevSize":32,"code":59661},"setIdx":1,"setId":4,"iconIdx":6},{"icon":{"paths":["M864 512c0-86.89-31.482-166.429-83.664-227.826l-496.162 496.162c61.397 52.182 140.937 83.664 227.826 83.664 194.403 0 352-157.597 352-352zM239.349 734.65l495.3-495.3c-60.662-49.597-138.182-79.349-222.65-79.349-194.404 0-352 157.596-352 352 0 84.467 29.753 161.987 79.349 222.65zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["ignore"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":246,"id":1,"name":"ignore","prevSize":32,"code":59740},"setIdx":1,"setId":4,"iconIdx":7},{"icon":{"paths":["M819.2 204.8v614.4h-614.4v-614.4h614.4zM204.8 128c-42.415 0-76.8 34.385-76.8 76.8v614.4c0 42.416 34.385 76.8 76.8 76.8h614.4c42.416 0 76.8-34.384 76.8-76.8v-614.4c0-42.415-34.384-76.8-76.8-76.8h-614.4z"],"attrs":[{"fill":"rgb(203, 206, 209)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":8}]},"tags":["checkbox-unchecked"],"grid":0},"attrs":[{"fill":"rgb(203, 206, 209)"}],"properties":{"order":242,"id":2,"name":"checkbox-unchecked","prevSize":32,"code":59648},"setIdx":1,"setId":4,"iconIdx":8},{"icon":{"paths":["M204.8 128h614.4c42.416 0 76.8 34.385 76.8 76.8v614.4c0 42.416-34.384 76.8-76.8 76.8h-614.4c-42.415 0-76.8-34.384-76.8-76.8v-614.4c0-42.415 34.385-76.8 76.8-76.8zM769.062 336.88c9.322-9.424 9.238-24.619-0.182-33.941-9.424-9.322-24.621-9.241-33.942 0.182l-339.085 342.745-106.782-108.051c-9.317-9.43-24.513-9.52-33.94-0.202s-9.518 24.512-0.201 33.939l123.842 125.318c4.509 4.56 10.653 7.126 17.066 7.13s12.557-2.563 17.069-7.12l356.157-360z"],"attrs":[{"fill":"rgb(29, 116, 245)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":5}]},"tags":["checkbox-checked"],"grid":0},"attrs":[{"fill":"rgb(29, 116, 245)"}],"properties":{"order":243,"id":3,"name":"checkbox-checked","prevSize":32,"code":59649},"setIdx":1,"setId":4,"iconIdx":9},{"icon":{"paths":["M862.454 324.045c-35.2-60.31-82.944-108.057-143.248-143.253-60.314-35.198-126.16-52.792-197.581-52.792-71.414 0-137.28 17.6-197.581 52.792-60.31 35.194-108.053 82.943-143.253 143.253-35.194 60.307-52.792 126.166-52.792 197.571 0 85.77 25.024 162.899 75.086 231.405 50.056 68.509 114.721 115.917 193.989 142.224 9.229 1.712 16.058 0.509 20.499-3.584 4.442-4.096 6.662-9.226 6.662-15.37 0-1.024-0.090-10.246-0.259-27.674-0.176-17.43-0.259-32.637-0.259-45.61l-11.789 2.038c-7.517 1.379-16.998 1.962-28.445 1.795-11.443-0.16-23.322-1.357-35.619-3.587-12.304-2.211-23.747-7.334-34.342-15.366-10.588-8.029-18.104-18.538-22.547-31.514l-5.125-11.795c-3.416-7.853-8.795-16.573-16.142-26.134-7.348-9.571-14.778-16.058-22.294-19.475l-3.588-2.57c-2.391-1.706-4.61-3.766-6.662-6.154-2.050-2.39-3.585-4.781-4.61-7.174-1.027-2.397-0.176-4.365 2.562-5.907 2.738-1.539 7.685-2.288 14.864-2.288l10.247 1.53c6.834 1.37 15.287 5.462 25.371 12.298 10.078 6.835 18.363 15.715 24.856 26.646 7.863 14.013 17.335 24.688 28.445 32.038 11.101 7.347 22.294 11.014 33.568 11.014s21.011-0.854 29.216-2.557c8.192-1.709 15.882-4.275 23.062-7.69 3.075-22.902 11.446-40.499 25.11-52.797-19.475-2.045-36.982-5.13-52.534-9.226-15.542-4.106-31.603-10.765-48.173-20-16.579-9.222-30.331-20.672-41.262-34.333-10.932-13.67-19.905-31.613-26.904-53.818-7.003-22.214-10.505-47.837-10.505-76.88 0-41.35 13.5-76.541 40.493-105.584-12.645-31.088-11.451-65.939 3.585-104.55 9.908-3.079 24.606-0.768 44.078 6.916 19.478 7.689 33.738 14.275 42.797 19.736 9.059 5.46 16.317 10.087 21.786 13.837 31.782-8.88 64.582-13.322 98.406-13.322s66.63 4.442 98.416 13.322l19.475-12.295c13.318-8.204 29.046-15.722 47.142-22.556 18.112-6.83 31.958-8.712 41.53-5.633 15.37 38.612 16.739 73.46 4.093 104.548 26.992 29.046 40.496 64.243 40.496 105.587 0 29.043-3.514 54.746-10.506 77.13-7.002 22.387-16.051 40.314-27.152 53.818-11.114 13.501-24.957 24.864-41.526 34.083-16.573 9.226-32.637 15.888-48.179 19.99-15.552 4.102-33.059 7.187-52.534 9.238 17.763 15.37 26.646 39.632 26.646 72.774v108.134c0 6.141 2.134 11.27 6.41 15.37 4.272 4.090 11.018 5.296 20.243 3.581 79.28-26.304 143.946-73.712 194-142.224 50.048-68.502 75.082-145.632 75.082-231.405-0.019-71.395-17.626-137.248-52.803-197.555z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["github-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":152,"id":4,"name":"github-monochromatic","prevSize":32,"code":59650},"setIdx":1,"setId":4,"iconIdx":10},{"icon":{"paths":["M133.618 423.61h215.092l-92.537-284.607c-4.74-14.67-25.504-14.67-30.244 0l-92.311 284.607zM86.899 567.171l46.72-143.546h737.133l46.72 143.546c4.288 13.088-0.451 27.533-11.51 35.434l-403.776 293.408-403.776-293.408c-11.060-7.901-15.799-22.346-11.511-35.434zM655.661 423.61h215.091l-92.31-284.607c-4.739-14.67-25.504-14.67-30.243 0l-92.538 284.607z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["gitlab-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":153,"id":5,"name":"gitlab-monochromatic","prevSize":32,"code":59651},"setIdx":1,"setId":4,"iconIdx":11},{"icon":{"paths":["M658.794 338.154c-39.798-38.052-90.416-57.426-146.794-57.426-100.016 0-184.669 67.548-214.865 158.313l-0.002-0.003c-7.679 23.040-12.042 47.648-12.042 72.957s4.364 49.92 12.044 72.96l0 0.003c30.196 90.765 114.849 158.314 214.865 158.314 51.664 0 95.651-13.613 130.035-36.653v-0.016c40.669-27.229 67.725-67.898 76.627-115.898h-206.662v-148.538h361.658c4.538 25.136 6.982 51.315 6.982 78.547 0 116.944-41.891 215.389-114.502 282.24v0.013c-63.533 58.646-150.458 93.030-254.138 93.030-150.109 0-279.971-86.048-343.156-211.549l-0-0.003c-26.007-51.84-40.844-110.49-40.844-172.451 0-61.965 14.836-120.611 40.844-172.451h0.004c63.187-125.495 193.047-211.542 343.153-211.542 103.504 0 190.429 38.051 256.931 100.014l-110.138 110.139z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["google-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":154,"id":6,"name":"google-monochromatic","prevSize":32,"code":59652},"setIdx":1,"setId":4,"iconIdx":12},{"icon":{"paths":["M840.541 128c31.318 0 56.813 24.79 56.813 55.383v657.212c0 30.592-25.494 55.427-56.813 55.427h-654.546c-31.254 0-56.642-24.835-56.642-55.427v-657.212c0-30.593 25.387-55.383 56.642-55.383h654.546zM300.196 233.75c-36.588 0-66.093 29.59-66.093 66.050 0 36.482 29.505 66.072 66.093 66.072 36.437 0 66.005-29.59 66.005-66.072 0-36.46-29.568-66.050-66.005-66.050zM243.148 782.461h114.029v-366.515h-114.029v366.515zM537.814 415.923h-109.187v366.515h113.773v-181.274c0-47.83 9.046-94.147 68.333-94.147 58.454 0 59.181 54.678 59.181 97.174v178.246h113.901v-201.008c0-98.714-21.312-174.598-136.666-174.598-55.402 0-92.566 30.381-107.757 59.203h-1.578v-50.112z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["linkedin-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":155,"id":7,"name":"linkedin-monochromatic","prevSize":32,"code":59653},"setIdx":1,"setId":4,"iconIdx":13},{"icon":{"paths":["M86.686 85.336l730.792 774.088c0 0 24.899 17.558 43.936-2.928 19.040-20.486 4.394-40.973 4.394-40.973l-779.122-730.187zM318.080 158.503l556.516 599.955c0 0 24.896 17.558 43.936-2.928 19.037-20.486 4.394-40.973 4.394-40.973l-604.845-556.054zM712.035 915.030l-556.517-599.955 604.843 556.054c0 0 14.646 20.486-4.39 40.973-19.040 20.486-43.936 2.928-43.936 2.928zM513.693 221.419l388.803 419.15c0 0 17.395 12.269 30.694-2.042 13.302-14.314 3.069-28.627 3.069-28.627l-422.566-388.482zM597.878 915.677l-388.805-419.152 422.568 388.48c0 0 10.234 14.314-3.069 28.627-13.302 14.31-30.694 2.045-30.694 2.045zM713.498 312.143l176.221 190.551c0 0 8.605 5.747 15.184-0.96 6.579-6.704 1.517-13.411 1.517-13.411l-192.922-176.18zM482.582 880.23l-176.219-190.55 192.923 176.179c0 0 5.059 6.707-1.52 13.414-6.579 6.704-15.184 0.957-15.184 0.957z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["meteor-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":156,"id":8,"name":"meteor-monochromatic","prevSize":32,"code":59654},"setIdx":1,"setId":4,"iconIdx":14},{"icon":{"paths":["M378.861 853.331c317.456 0 491.091-262.662 491.091-490.442 0-7.462 0-14.89-0.506-22.282 33.779-24.401 62.938-54.614 86.112-89.224-31.501 13.94-64.918 23.082-99.136 27.12 36.032-21.542 62.998-55.424 75.882-95.34-33.878 20.078-70.944 34.228-109.597 41.839-53.501-56.814-138.515-70.72-207.37-33.919-68.851 36.801-104.426 115.155-86.768 191.127-138.774-6.947-268.074-72.409-355.715-180.093-45.811 78.76-22.412 179.517 53.436 230.1-27.467-0.813-54.335-8.214-78.337-21.574 0 0.704 0 1.443 0 2.182 0.022 82.051 57.937 152.723 138.47 168.97-25.41 6.922-52.071 7.933-77.933 2.957 22.611 70.218 87.409 118.32 161.25 119.706-61.116 47.968-136.616 74.010-214.35 73.933-13.732-0.026-27.452-0.858-41.087-2.486 78.931 50.586 170.772 77.418 264.557 77.293z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["twitter-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":157,"id":9,"name":"twitter-monochromatic","prevSize":32,"code":59655},"setIdx":1,"setId":4,"iconIdx":15},{"icon":{"paths":["M512 928c-14.218 0-28.275-0.714-42.144-2.112-16.694-1.68-30.557-12.528-36.688-27.395l-40.538-98.304-98.162 40.838c-14.837 6.173-32.3 4.048-45.292-6.554-21.838-17.818-41.831-37.811-59.65-59.648-10.601-12.992-12.726-30.454-6.553-45.293l40.839-98.16-98.307-40.541c-14.864-6.131-25.714-19.994-27.395-36.688-1.396-13.869-2.111-27.926-2.111-42.144 0-14.214 0.714-28.275 2.11-42.141 1.681-16.694 12.531-30.557 27.395-36.688l98.308-40.541-40.84-98.163c-6.173-14.837-4.047-32.3 6.553-45.292 17.818-21.838 37.81-41.83 59.648-59.648 12.992-10.6 30.455-12.726 45.292-6.553l98.165 40.84 40.541-98.309c6.128-14.865 19.994-25.714 36.688-27.395 13.866-1.396 27.926-2.11 42.141-2.11s28.275 0.714 42.141 2.11c16.694 1.681 30.56 12.531 36.688 27.395l40.541 98.309 98.163-40.84c14.838-6.173 32.301-4.047 45.293 6.553 21.837 17.818 41.83 37.81 59.648 59.648 10.602 12.992 12.726 30.455 6.554 45.292l-40.842 98.163 98.31 40.541c14.864 6.131 25.712 19.994 27.392 36.688 1.398 13.866 2.112 27.926 2.112 42.141 0 14.218-0.714 28.275-2.112 42.144-1.68 16.694-12.528 30.557-27.395 36.688l-98.307 40.541 40.842 98.16c6.173 14.838 4.045 32.301-6.554 45.293-17.821 21.837-37.811 41.83-59.651 59.648-12.992 10.602-30.454 12.726-45.29 6.554l-98.163-40.838-40.538 98.304c-6.131 14.867-19.994 25.715-36.688 27.395-13.869 1.398-27.93 2.112-42.144 2.112zM444.451 757.984l43.386 105.2c7.981 0.541 16.038 0.816 24.163 0.816s16.182-0.275 24.163-0.816l43.382-105.2c9.456-22.925 35.731-33.808 58.627-24.285l105.056 43.709c12.157-10.602 23.578-22.022 34.179-34.179l-43.709-105.056c-9.526-22.893 1.36-49.171 24.282-58.624l105.203-43.386c0.541-7.978 0.816-16.038 0.816-24.163s-0.275-16.182-0.816-24.16l-105.203-43.386c-22.922-9.453-33.808-35.731-24.282-58.624l43.709-105.060c-10.602-12.156-22.022-23.577-34.176-34.177l-105.059 43.708c-22.896 9.525-49.171-1.359-58.627-24.283l-43.382-105.204c-7.981-0.54-16.038-0.815-24.163-0.815s-16.182 0.275-24.163 0.815l-43.386 105.204c-9.453 22.924-35.728 33.808-58.624 24.283l-105.058-43.708c-12.156 10.6-23.577 22.021-34.177 34.177l43.708 105.059c9.525 22.893-1.359 49.171-24.284 58.624l-105.203 43.386c-0.54 7.978-0.815 16.035-0.815 24.16 0 8.128 0.275 16.186 0.815 24.163l105.203 43.386c22.924 9.453 33.809 35.731 24.284 58.624l-43.708 105.056c10.601 12.157 22.022 23.578 34.178 34.179l105.056-43.709c22.896-9.523 49.171 1.36 58.624 24.285zM416 512c0-53.021 42.979-96 96-96s96 42.979 96 96c0 53.021-42.979 96-96 96s-96-42.979-96-96zM512 352c-88.365 0-160 71.635-160 160s71.635 160 160 160c88.365 0 160-71.635 160-160s-71.635-160-160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["administration"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":159,"id":10,"name":"administration","prevSize":32,"code":59657},"setIdx":1,"setId":4,"iconIdx":16},{"icon":{"paths":["M878.739 567.622c-41.853-41.136-161.235-29.824-220.925-22.282-59.005-35.997-98.458-85.706-126.243-158.73 13.379-55.194 34.646-139.185 18.525-191.98-14.41-89.82-129.674-80.907-146.141-20.227-15.094 55.195-1.373 131.988 24.013 230.034-34.304 81.936-85.421 191.984-121.441 255.062-68.611 35.312-161.235 89.821-174.957 158.384-11.321 54.166 89.194 189.238 261.063-106.96 76.845-25.37 160.547-56.566 234.65-68.909 64.835 34.97 140.65 58.282 191.421 58.282 87.478 0 96.054-96.678 60.035-132.675zM199.152 834.342c17.496-46.97 84.048-101.133 104.288-119.99-65.18 103.875-104.288 122.39-104.288 119.99zM479.082 180.918c25.386 0 22.986 110.047 6.176 139.873-15.094-47.653-14.752-139.873-6.176-139.873zM395.379 649.216c33.274-57.936 61.747-126.845 84.733-187.526 28.474 51.766 64.838 93.251 103.258 121.706-71.354 14.739-133.446 44.909-187.99 65.821zM846.835 632.074c0 0-17.152 20.57-127.958-26.739 120.413-8.912 140.307 18.512 127.958 26.739z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["adobe-reader-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":161,"id":11,"name":"adobe-reader-monochromatic","prevSize":32,"code":59658},"setIdx":1,"setId":4,"iconIdx":17},{"icon":{"paths":["M448 188.865c0 33.615 27.251 60.865 60.864 60.865 33.616 0 60.867-27.25 60.867-60.865s-27.251-60.865-60.867-60.865c-33.613 0-60.864 27.25-60.864 60.865zM384 188.865c0 59.026 40.957 108.485 96 121.512v77.745c-44.314 11.69-78.986 47.13-89.578 91.878h-80.045c-13.027-55.043-62.486-96-121.512-96-68.961 0-124.865 55.904-124.865 124.864 0 68.963 55.904 124.867 124.865 124.867 56.762 0 104.678-37.875 119.854-89.731h83.361c12.227 41.773 45.696 74.47 87.92 85.61v77.744c-55.043 13.027-96 62.486-96 121.51 0 68.963 55.904 124.867 124.864 124.867 68.963 0 124.867-55.904 124.867-124.867 0-56.762-37.875-104.675-89.731-119.853v-79.437c42.163-11.171 75.578-43.846 87.789-85.574h77.222c15.178 51.856 63.091 89.731 119.853 89.731 68.963 0 124.867-55.904 124.867-124.867 0-68.96-55.904-124.864-124.867-124.864-59.024 0-108.483 40.957-121.51 96h-73.907c-10.579-44.707-45.194-80.122-89.446-91.843v-79.438c51.856-15.176 89.731-63.092 89.731-119.854 0-68.961-55.904-124.865-124.867-124.865-68.96 0-124.864 55.904-124.864 124.865zM828.864 569.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867zM188.865 569.731c-33.615 0-60.865-27.251-60.865-60.867 0-33.613 27.25-60.864 60.865-60.864s60.865 27.251 60.865 60.864c0 33.616-27.25 60.867-60.865 60.867zM451.069 508.864c0 33.616 27.251 60.867 60.867 60.867 33.613 0 60.864-27.251 60.864-60.867 0-33.613-27.251-60.864-60.864-60.864-33.616 0-60.867 27.251-60.867 60.864zM508.864 889.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["all-contacts-in-channels"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":162,"id":12,"name":"all-contacts-in-channels","prevSize":32,"code":59659},"setIdx":1,"setId":4,"iconIdx":18},{"icon":{"paths":["M861.437 160c17.67 0 32 14.327 32 32s-14.33 32-32 32h-384c-17.674 0-32-14.327-32-32s14.326-32 32-32h384zM334.717 442.397c-24.962 0-45.197-20.237-45.197-45.2 0-24.96 20.236-45.197 45.197-45.197 24.963 0 45.2 20.237 45.2 45.197 0 24.963-20.237 45.2-45.2 45.2zM334.717 506.397c-60.308 0-109.197-48.89-109.197-109.2 0-60.307 48.89-109.197 109.197-109.197 60.31 0 109.2 48.89 109.2 109.197 0 60.31-48.89 109.2-109.2 109.2zM456.278 535.504c-18.288-4.899-37.504-5.2-55.939-0.88l-45.005 10.547c-13.194 3.091-26.947 2.877-40.036-0.63l-31.676-8.483c-19.669-5.27-40.384-5.562-60.154-0.928-55.68 13.050-95.468 62.781-95.468 120.179v34.752c0 42.906 34.783 77.686 77.689 77.686h258.057c42.906 0 77.69-34.781 77.69-77.686v-43.587c0-52-34.928-97.514-85.158-110.97zM414.944 596.934c8.166-1.914 16.675-1.779 24.774 0.39 22.246 5.958 37.718 26.118 37.718 49.149v43.587c0 7.558-6.131 13.686-13.69 13.686h-258.057c-7.56 0-13.689-6.128-13.689-13.686v-34.752c0-27.469 19.123-51.552 46.072-57.869 9.556-2.24 19.564-2.086 28.99 0.438l31.676 8.483c23.277 6.237 47.738 6.621 71.2 1.12l45.005-10.547zM893.437 512c0-17.674-14.33-32-32-32h-224c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.67 0 32-14.326 32-32zM861.437 640c17.67 0 32 14.326 32 32s-14.33 32-32 32h-192c-17.674 0-32-14.326-32-32s14.326-32 32-32h192zM893.437 352c0-17.674-14.33-32-32-32h-288c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.67 0 32-14.326 32-32zM861.437 800c17.67 0 32 14.326 32 32s-14.33 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32h256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["all-contacts-in-queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":163,"id":13,"name":"all-contacts-in-queue","prevSize":32,"code":59660},"setIdx":1,"setId":4,"iconIdx":19},{"icon":{"paths":["M523.571 295.385c33.133 0 74.669-22.133 99.402-51.645 22.4-26.745 38.733-64.095 38.733-101.445 0-5.072-0.467-10.144-1.402-14.294-36.864 1.383-81.2 24.439-107.798 55.334-21.002 23.517-40.134 60.406-40.134 98.218 0 5.533 0.934 11.067 1.402 12.911 2.333 0.461 6.067 0.922 9.798 0.922zM406.906 853.334c45.267 0 65.334-29.974 121.798-29.974 57.402 0 70 29.050 120.4 29.050 49.469 0 82.602-45.187 113.869-89.456 34.998-50.72 49.466-100.522 50.4-102.829-3.267-0.922-98-39.194-98-146.634 0-93.146 74.666-135.107 78.867-138.333-49.469-70.090-124.602-71.935-145.136-71.935-55.533 0-100.8 33.199-129.264 33.199-30.8 0-71.402-31.354-119.469-31.354-91.466 0-184.333 74.701-184.333 215.802 0 87.61 34.533 180.294 77 240.24 36.402 50.723 68.133 92.224 113.867 92.224z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["apple-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":236,"id":14,"name":"apple-monochromatic","prevSize":32,"code":59662},"setIdx":1,"setId":4,"iconIdx":20},{"icon":{"paths":["M498.694 141.561l-298.666 136.533c-11.39 5.207-18.696 16.58-18.696 29.103v386.844c0 11.818 6.513 22.675 16.941 28.237l298.667 159.286c9.411 5.021 20.707 5.021 30.118 0l298.666-159.286c10.429-5.562 16.941-16.419 16.941-28.237v-386.844c0-12.524-7.306-23.896-18.694-29.103l-298.666-136.533c-8.451-3.862-18.16-3.862-26.611 0zM245.333 357.011l234.667 107.277v335.709l-234.667-125.155v-317.83zM544 799.997l234.666-125.155v-317.83l-234.666 107.277v335.709zM512 408.544l-221.7-101.347 221.7-101.348 221.699 101.348-221.699 101.347z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["apps"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":166,"id":15,"name":"apps","prevSize":32,"code":59663},"setIdx":1,"setId":4,"iconIdx":21},{"icon":{"paths":["M374.627 297.372c-12.496-12.497-32.758-12.497-45.254 0l-192 192c-12.497 12.496-12.497 32.758 0 45.254l192 192c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-137.372-137.373h578.745v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-160c0-17.674-14.326-32-32-32h-610.745l137.372-137.373c12.496-12.496 12.496-32.758 0-45.255z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-back"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":167,"id":16,"name":"arrow-back","prevSize":32,"code":59664},"setIdx":1,"setId":4,"iconIdx":22},{"icon":{"paths":["M551.392 242.502c0.189-17.672 14.669-31.845 32.339-31.656 17.674 0.189 31.846 14.668 31.658 32.34l-1.318 123.489 193.44-193.439c12.496-12.497 32.755-12.497 45.254 0 12.496 12.497 12.496 32.758 0 45.255l-193.44 193.439 123.488-1.318c17.674-0.189 32.154 13.984 32.339 31.654 0.189 17.674-13.984 32.154-31.654 32.342l-201.92 2.154c-8.605 0.093-16.886-3.283-22.97-9.37-6.086-6.083-9.462-14.365-9.373-22.97l2.157-201.92zM475.981 782.147c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.342l1.318-123.488-193.438 193.44c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l193.438-193.44-123.488 1.318c-17.672 0.189-32.151-13.984-32.34-31.654-0.189-17.674 13.984-32.154 31.656-32.342l201.922-2.154c8.605-0.093 16.883 3.283 22.966 9.37 6.086 6.083 9.462 14.365 9.373 22.97l-2.157 201.92z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-collapse"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":168,"id":17,"name":"arrow-collapse","prevSize":32,"code":59665},"setIdx":1,"setId":4,"iconIdx":23},{"icon":{"paths":["M576 672c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.674 0 32-14.326 32-32v-208c0-17.674-14.326-32-32-32s-32 14.326-32 32v130.746l-233.373-233.373c-12.496-12.496-32.758-12.496-45.254 0l-73.373 73.373-169.372-169.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.759 0 45.255l192 192c12.496 12.496 32.758 12.496 45.254 0l73.373-73.373 210.746 210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-decrease"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":169,"id":18,"name":"arrow-decrease","prevSize":32,"code":59666},"setIdx":1,"setId":4,"iconIdx":24},{"icon":{"paths":["M329.373 550.627c-12.497-12.496-12.497-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373v-418.746c0-17.673 14.326-32 32-32s32 14.327 32 32v418.746l105.373-105.373c12.496-12.496 32.758-12.496 45.254 0s12.496 32.758 0 45.254l-160 160c-12.496 12.496-32.758 12.496-45.254 0l-160-160zM112 864c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-512c0-17.674-14.326-32-32-32h-96c-17.674 0-32 14.326-32 32s14.326 32 32 32h64v448h-704v-448h64c17.673 0 32-14.326 32-32s-14.327-32-32-32h-96c-17.673 0-32 14.326-32 32v512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down-box"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":170,"id":19,"name":"arrow-down-box","prevSize":32,"code":59667},"setIdx":1,"setId":4,"iconIdx":25},{"icon":{"paths":["M865.139 512c0-194.404-157.802-352-352.464-352-194.66 0-352.464 157.596-352.464 352s157.804 352 352.464 352c194.662 0 352.464-157.597 352.464-352zM929.226 512c0 229.75-186.496 416-416.55 416-230.053 0-416.548-186.25-416.548-416s186.495-416 416.548-416c230.054 0 416.55 186.25 416.55 416zM695.178 571.37l-160.182 155.715c-12.438 12.093-32.259 12.093-44.701 0l-160.179-155.715c-12.682-12.33-12.955-32.589-0.611-45.251 12.342-12.666 32.63-12.938 45.309-0.611l105.789 102.842 0.003-276.349c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v276.349l105.789-102.842c12.682-12.326 32.966-12.054 45.309 0.611 12.346 12.662 12.070 32.922-0.608 45.251z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down-circle"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":171,"id":20,"name":"arrow-down-circle","prevSize":32,"code":59668},"setIdx":1,"setId":4,"iconIdx":26},{"icon":{"paths":["M726.88 526.064c12.355 12.637 12.128 32.896-0.509 45.254l-191.968 187.715c-12.438 12.163-32.31 12.163-44.746 0l-191.97-187.715c-12.636-12.358-12.863-32.618-0.507-45.254 12.356-12.634 32.615-12.861 45.252-0.506l137.597 134.55v-372.109c0-17.673 14.33-32 32-32 17.674 0 32 14.327 32 32v372.109l137.6-134.55c12.634-12.355 32.896-12.128 45.251 0.506z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":172,"id":21,"name":"arrow-down","prevSize":32,"code":59669},"setIdx":1,"setId":4,"iconIdx":27},{"icon":{"paths":["M859.978 398.15c-0.189 17.67-14.666 31.843-32.339 31.654-17.67-0.189-31.846-14.666-31.658-32.339l1.318-123.488-193.437 193.437c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.755 0-45.254l193.437-193.437-123.488 1.318c-17.67 0.189-32.15-13.984-32.339-31.656s13.984-32.151 31.658-32.34l201.92-2.156c8.605-0.092 16.883 3.286 22.97 9.371 6.083 6.085 9.462 14.364 9.37 22.969l-2.157 201.922zM167.394 626.522c0.189-17.674 14.668-31.846 32.34-31.658s31.845 14.669 31.657 32.339l-1.319 123.488 193.438-193.437c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-193.438 193.437 123.489-1.318c17.67-0.189 32.15 13.984 32.339 31.658 0.189 17.67-13.984 32.15-31.658 32.339l-201.92 2.157c-8.605 0.093-16.884-3.286-22.969-9.37-6.085-6.086-9.463-14.365-9.371-22.97l2.156-201.92z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-expand"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":173,"id":22,"name":"arrow-expand","prevSize":32,"code":59670},"setIdx":1,"setId":4,"iconIdx":28},{"icon":{"paths":["M576 352c-17.674 0-32-14.326-32-32s14.326-32 32-32h224c17.674 0 32 14.327 32 32v208c0 17.674-14.326 32-32 32s-32-14.326-32-32v-130.746l-233.373 233.373c-12.496 12.496-32.758 12.496-45.254 0l-73.373-73.373-169.372 169.373c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l192-192c12.496-12.496 32.758-12.496 45.254 0l73.373 73.373 210.746-210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-increase"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":174,"id":23,"name":"arrow-increase","prevSize":32,"code":59671},"setIdx":1,"setId":4,"iconIdx":29},{"icon":{"paths":["M297.766 105.372c12.513-12.497 32.801-12.497 45.316 0 12.512 12.497 12.512 32.758 0 45.255l-105.513 105.372h611.551c17.699 0 32.045 14.327 32.045 32v112c0 17.674-14.346 32-32.045 32-17.696 0-32.042-14.326-32.042-32v-80h-579.51l105.513 105.373c12.512 12.496 12.512 32.758 0 45.254-12.515 12.496-32.803 12.496-45.316 0l-160.212-160c-12.513-12.497-12.513-32.758 0-45.255l160.212-160zM711.568 918.627c-12.515 12.496-32.803 12.496-45.315 0-12.515-12.496-12.515-32.758 0-45.254l105.51-105.373h-611.552c-17.696 0-32.042-14.326-32.042-32v-112c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v80h579.509l-105.51-105.373c-12.515-12.496-12.515-32.758 0-45.254 12.512-12.496 32.8-12.496 45.315 0l160.211 160c12.512 12.496 12.512 32.758 0 45.254l-160.211 160z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-looping"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":175,"id":24,"name":"arrow-looping","prevSize":32,"code":59672},"setIdx":1,"setId":4,"iconIdx":30},{"icon":{"paths":["M374.627 769.296c-12.496 12.496-32.758 12.496-45.254 0l-192-192c-12.497-12.496-12.497-32.758 0-45.254l192-192c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-137.372 137.373h578.745v-192h-192c-17.674 0-32-14.328-32-32.001s14.326-32 32-32h224c17.674 0 32 14.327 32 32v256.001c0 17.674-14.326 32-32 32h-610.745l137.372 137.373c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-return"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":176,"id":25,"name":"arrow-return","prevSize":32,"code":59673},"setIdx":1,"setId":4,"iconIdx":31},{"icon":{"paths":["M694.627 473.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373v418.746c0 17.674-14.326 32-32 32s-32-14.326-32-32v-418.746l-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.497-32.758 0-45.254l160-160c12.496-12.497 32.758-12.497 45.254 0l160 160zM912 160c0-17.673-14.326-32-32-32h-768c-17.673 0-32 14.327-32 32v512c0 17.674 14.327 32 32 32h96c17.673 0 32-14.326 32-32s-14.327-32-32-32h-64v-448h704v448h-64c-17.674 0-32 14.326-32 32s14.326 32 32 32h96c17.674 0 32-14.326 32-32v-512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-up-box"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":177,"id":26,"name":"arrow-up-box","prevSize":32,"code":59674},"setIdx":1,"setId":4,"iconIdx":32},{"icon":{"paths":["M297.181 498.090c-12.356-12.634-12.129-32.896 0.507-45.251l191.97-187.717c12.435-12.161 32.307-12.161 44.746 0l191.968 187.717c12.637 12.355 12.864 32.618 0.509 45.251-12.355 12.637-32.618 12.864-45.251 0.509l-137.6-134.55v372.109c0 17.674-14.326 32-32 32-17.67 0-32-14.326-32-32v-372.109l-137.597 134.55c-12.637 12.355-32.895 12.128-45.251-0.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-up"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":178,"id":27,"name":"arrow-up","prevSize":32,"code":59675},"setIdx":1,"setId":4,"iconIdx":33},{"icon":{"paths":["M482.323 229.047c19.77-23.932 49.891-36.827 80.854-34.615l143.933 10.281c42.051 3.004 77.222 33.091 86.704 74.17l30.349 131.517c6.643 28.787-0.336 59.027-18.925 81.99l-252.368 311.744c-11.12 13.738-31.267 15.859-45.005 4.739s-15.856-31.27-4.736-45.008l252.365-311.744c6.195-7.654 8.522-17.734 6.307-27.331l-30.349-131.517c-3.162-13.693-14.883-23.722-28.902-24.723l-143.933-10.281c-10.323-0.737-20.362 3.561-26.95 11.538l-266 322c-5.438 6.582-8.020 15.066-7.17 23.562l7.581 75.814c1.636 16.358 15.401 28.816 31.841 28.816h104.305c9.44 0 18.397-4.166 24.477-11.386l227.594-270.269-10.048-70.346h-69.258l-230.406 276.486c-11.312 13.578-31.492 15.411-45.068 4.096-13.577-11.312-15.411-31.491-4.097-45.069l230.404-276.483c12.16-14.593 30.173-23.029 49.168-23.029h69.258c31.85 0 58.851 23.42 63.357 54.949l10.048 70.346c2.579 18.045-2.659 36.333-14.4 50.275l-227.594 270.266c-18.243 21.661-45.114 34.163-73.434 34.163h-104.305c-49.32 0-90.616-37.373-95.524-86.448l-7.581-75.811c-2.549-25.491 5.196-50.944 21.511-70.694l265.998-321.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["attach"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":179,"id":28,"name":"attach","prevSize":32,"code":59676},"setIdx":1,"setId":4,"iconIdx":34},{"icon":{"paths":["M866.128 153.127c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.245c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.245c12.496-12.497 12.496-32.758 0-45.255zM674.643 480.358l55.92-55.923c16.259 79.565 14.515 161.866-5.229 240.842l-11.622 46.49c-4.288 17.146-21.661 27.571-38.806 23.283-17.146-4.285-27.568-21.661-23.283-38.806l11.622-46.486c13.875-55.507 17.677-112.874 11.398-169.398zM817.162 385.923l-11.312-36.771 51.203-51.206 21.28 69.155c33.344 108.368 31.994 224.445-3.859 332.010l-33.45 100.342c-5.587 16.765-23.709 25.827-40.477 20.24-16.765-5.59-25.827-23.712-20.237-40.48l33.446-100.339c31.635-94.912 32.826-197.334 3.405-292.95zM490.666 664.333l64-64v210.346c0 23.562-19.101 42.666-42.666 42.666h-85.334c-35.459 0-68.394-10.816-95.683-29.325l46.611-46.611c14.701 7.629 31.395 11.936 49.072 11.936h64v-125.011zM128 682.678c0 19.738 13.403 36.346 31.604 41.216l62.552-62.55h-30.156v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v158.155l64-64v-115.488c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":180,"id":29,"name":"audio-disabled","prevSize":32,"code":59677},"setIdx":1,"setId":4,"iconIdx":35},{"icon":{"paths":["M310.99 661.344h-118.99v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v554.667h-64c-49.613 0-91.466-33.933-103.309-79.952l-12.367-48.048zM170.667 725.344h90.71c18.946 73.61 85.766 128 165.289 128h85.334c23.565 0 42.666-19.104 42.666-42.666v-597.335c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334c0 23.562 19.103 42.666 42.667 42.666zM886.627 393.373c12.496 12.496 12.496 32.758 0 45.254l-73.373 73.373 73.373 73.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-73.373-73.373-73.373 73.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l73.373-73.373-73.373-73.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l73.373 73.373 73.373-73.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio-unavailable"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":181,"id":30,"name":"audio-unavailable","prevSize":32,"code":59678},"setIdx":1,"setId":4,"iconIdx":36},{"icon":{"paths":["M300.1 631.12h-113.433v-280.89h113.433l12.366-48.048c11.054-42.953 50.123-74.619 96.423-74.619h58.666v526.223h-58.666c-46.301 0-85.37-31.667-96.423-74.621l-12.366-48.045zM163.556 695.12h86.931c18.156 70.541 82.192 122.666 158.403 122.666h81.776c22.582 0 40.89-18.307 40.89-40.89v-572.444c0-22.582-18.307-40.889-40.89-40.889h-81.776c-76.211 0-140.247 52.124-158.403 122.667h-86.931c-22.582 0-40.889 18.306-40.889 40.89v327.11c0 22.582 18.307 40.89 40.889 40.89zM646.461 316.515c17.146-4.286 34.518 6.138 38.806 23.284l11.136 44.55c20.81 83.229 20.81 170.301 0 253.533l-11.136 44.55c-4.288 17.146-21.661 27.568-38.806 23.283-17.146-4.288-27.571-21.661-23.283-38.806l11.136-44.55c18.262-73.040 18.262-149.45 0.003-222.486l-11.139-44.55c-4.288-17.146 6.138-34.522 23.283-38.807zM807.472 235.936c-5.197-16.892-23.104-26.372-39.994-21.174-16.893 5.197-26.371 23.104-21.174 39.996l35.536 115.489c28.112 91.37 26.976 189.242-3.254 279.933l-32.054 96.16c-5.59 16.765 3.472 34.886 20.237 40.477 16.768 5.587 34.89-3.472 40.48-20.24l32.051-96.16c34.448-103.344 35.747-214.87 3.709-318.989l-35.536-115.491z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":182,"id":31,"name":"audio","prevSize":32,"code":59679},"setIdx":1,"setId":4,"iconIdx":37},{"icon":{"paths":["M418.704 128c-35.344 0-64 28.654-64 64v226.637c20.774-2.822 42.134-3.456 64-1.526v-225.11h176v180.707c0 35.344 28.656 64 64 64h176v331.293h-120.554c-17.155 22.179-36.323 43.869-57.312 64h177.866c35.347 0 64-28.653 64-64v-363.293c0-6.413-1.923-12.675-5.526-17.978l-156.63-230.681c-11.914-17.544-31.741-28.049-52.947-28.049h-264.896zM658.704 372.707v-180.707h24.896l122.698 180.707h-147.594zM167.939 668.547c120.524 156.138 218.24 174.586 285.133 158.739 73.293-17.36 139.232-81.648 183.466-151.763-115.155-155.869-211.581-174.589-279.149-158.915-74.362 17.251-142.707 81.683-189.45 151.939zM104.428 649.037c100.621-162.8 337.62-357.19 593.252 1.789 9.072 12.739 10.32 29.818 2.422 43.315-95.27 162.854-326.394 358.346-593.234-0.224-9.745-13.094-11.022-30.995-2.44-44.88zM401.664 735.994c31.514 0 60.269-26.858 60.269-64 0-37.146-28.755-64-60.269-64-31.51 0-60.266 26.854-60.266 64 0 37.142 28.755 64 60.266 64zM401.664 799.994c68.634 0 124.269-57.309 124.269-128 0-70.694-55.635-128-124.269-128-68.63 0-124.267 57.306-124.267 128 0 70.691 55.636 128 124.267 128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["auditing"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":183,"id":32,"name":"auditing","prevSize":32,"code":59680},"setIdx":1,"setId":4,"iconIdx":38},{"icon":{"paths":["M224 224c-17.673 0-32 14.327-32 32v544c0 17.674 14.327 32 32 32h544c17.674 0 32-14.326 32-32v-544c0-17.673-14.326-32-32-32h-544zM128 256c0-53.019 42.981-96 96-96h544c53.021 0 96 42.981 96 96v544c0 53.021-42.979 96-96 96h-544c-53.019 0-96-42.979-96-96v-544zM608 460.813c0 41.798-26.714 77.357-64 90.538v133.462h-64v-133.462c-37.286-13.181-64-48.739-64-90.538 0-53.021 42.979-96 96-96s96 42.979 96 96zM608 588.826c38.861-29.19 64-75.667 64-128.013 0-88.365-71.635-160-160-160s-160 71.636-160 160c0 52.346 25.139 98.822 64 128.013v127.987c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-127.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["auth"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":184,"id":33,"name":"auth","prevSize":32,"code":59681},"setIdx":1,"setId":4,"iconIdx":39},{"icon":{"paths":["M513.35 554.019c66.467 0 120.349-52.493 120.349-117.242 0-64.752-53.882-117.243-120.349-117.243-66.464 0-120.346 52.491-120.346 117.243 0 64.749 53.882 117.242 120.346 117.242zM513.35 490.019c-32.704 0-56.346-25.405-56.346-53.242 0-27.84 23.642-53.242 56.346-53.242 32.707 0 56.349 25.402 56.349 53.242 0 27.837-23.642 53.242-56.349 53.242z","M365.478 894.144h-172.126c-17.673 0-32-14.33-32-32v-702.144c0-17.673 14.327-32 32-32h640.001c17.674 0 32 14.327 32 32v702.144c0 17.67-14.326 32-32 32h-172.128c-6.24 1.274-12.701 1.942-19.318 1.942h-257.11c-6.618 0-13.078-0.669-19.318-1.942zM225.353 830.144h68.244c-3.114-9.456-4.799-19.558-4.799-30.058v-93.446c0-56.109 37.881-105.142 92.172-119.309 19.171-5.002 39.264-5.312 58.579-0.902l42.778 9.766c20.051 4.579 40.909 4.259 60.81-0.934l28.070-7.325c20.694-5.398 42.384-5.734 63.232-0.973 60.534 13.821 103.469 67.664 103.469 129.754v83.37c0 10.499-1.686 20.602-4.8 30.058h68.246v-638.144h-576.001v638.144zM652.918 830.144c12.246-4.49 20.989-16.253 20.989-30.058v-83.37c0-32.234-22.288-60.186-53.715-67.36-10.822-2.47-22.083-2.298-32.826 0.506l-28.070 7.325c-29.853 7.789-61.139 8.272-91.216 1.405l-42.774-9.766c-9.293-2.122-18.957-1.974-28.176 0.432-26.112 6.813-44.333 30.397-44.333 57.382v93.446c0 13.805 8.742 25.568 20.989 30.058h279.133z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["avatar"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":185,"id":34,"name":"avatar","prevSize":32,"code":59682},"setIdx":1,"setId":4,"iconIdx":40},{"icon":{"paths":["M737.779 361.376c12.499 12.496 12.499 32.758 0 45.254l-110.947 110.95 110.947 110.947c12.499 12.496 12.499 32.758 0 45.254-12.496 12.499-32.758 12.499-45.254 0l-110.947-110.947-110.95 110.947c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.758 0-45.254l110.95-110.947-110.95-110.95c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l110.95 110.95 110.947-110.95c12.496-12.496 32.758-12.496 45.254 0z","M312.246 218.073c12.061-16.393 31.2-26.073 51.552-26.073h468.202c35.347 0 64 28.654 64 64v512c0 35.347-28.653 64-64 64h-468.202c-20.352 0-39.491-9.68-51.552-26.074l-188.343-256c-16.598-22.56-16.598-53.293 0-75.853l188.343-256.001zM363.798 256l-188.343 256 188.343 256h468.202v-512h-468.202z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["backspace"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":186,"id":35,"name":"backspace","prevSize":32,"code":59683},"setIdx":1,"setId":4,"iconIdx":41},{"icon":{"paths":["M376 775.418c-13.254 0-24-10.746-24-24v-469.168c0-13.255 10.746-24 24-24h145.075c56.118 0 98.269 11.603 126.448 34.809 28.416 23.206 42.624 57.542 42.624 103.008 0 24.154-6.867 45.584-20.602 64.291-13.734 18.47-32.442 32.794-56.122 42.976 27.942 7.814 49.965 22.733 66.067 44.755 16.339 21.786 24.509 47.834 24.509 78.144 0 46.413-15.037 82.88-45.11 109.402s-72.579 39.782-127.517 39.782h-155.373zM420.198 533.526v186.125h112.595c31.731 0 56.714-8.17 74.947-24.509 18.47-16.576 27.706-39.309 27.706-68.198 0-62.278-33.862-93.418-101.587-93.418h-113.661zM420.198 478.829h103.008c29.834 0 53.632-7.459 71.392-22.378 17.997-14.918 26.995-35.165 26.995-60.739 0-28.416-8.288-49.018-24.864-61.805-16.576-13.024-41.795-19.536-75.654-19.536h-100.877v164.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["bold"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":187,"id":36,"name":"bold","prevSize":32,"code":59684},"setIdx":1,"setId":4,"iconIdx":42},{"icon":{"paths":["M352 445.437c0-17.67 14.326-32 32-32h256c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M352 322.557c0-17.672 14.326-31.999 32-31.999h256c17.674 0 32 14.327 32 31.999 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M864 679.68c0 17.674-14.326 32-32 32h-18.509c-8.218 40.547-8.218 82.333 0 122.88h19.789c16.966 0 30.72 13.754 30.72 30.72s-13.754 30.72-30.72 30.72h-545.28c-70.692 0-128-55.014-128-122.88v-453.12c0-106.038 85.961-192 192-192h480c17.674 0 32 14.327 32 32v519.68zM748.419 834.56c-6.787-40.678-6.787-82.202 0-122.88h-460.419c-35.346 0-64 27.507-64 61.44s28.654 61.44 64 61.44h460.419zM224 647.68h576v-455.68h-448c-70.692 0-128 57.308-128 128v327.68z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["book"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":188,"id":37,"name":"book","prevSize":32,"code":59685},"setIdx":1,"setId":4,"iconIdx":43},{"icon":{"paths":["M224 224h320v576h-96v-112c0-8.835-7.165-16-16-16h-96c-8.835 0-16 7.165-16 16v112h-96v-576zM608 448h192v352h-192v-352zM832 384h-224v-192c0-17.673-14.326-32-32-32h-384c-17.673 0-32 14.327-32 32v640c0 17.674 14.327 32 32 32h640c17.674 0 32-14.326 32-32v-416c0-17.674-14.326-32-32-32zM304 288c-8.836 0-16 7.164-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.836-7.165-16-16-16h-32zM288 432c0-8.835 7.164-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.836 0-16-7.165-16-16v-32zM304 544c-8.836 0-16 7.165-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 304c0-8.836 7.165-16 16-16h32c8.835 0 16 7.164 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM432 416c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 560c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM688 512c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM672 656c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["business"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":189,"id":38,"name":"business","prevSize":32,"code":59686},"setIdx":1,"setId":4,"iconIdx":44},{"icon":{"paths":["M277.831 157.44c0-16.259 13.181-29.44 29.44-29.44s29.439 13.181 29.439 29.44v58.876h353.28v-58.876c0-16.259 13.181-29.44 29.44-29.44s29.44 13.181 29.44 29.44v58.876h85.76c17.674 0 32 14.327 32 32v583.68c0 17.674-14.326 32-32 32h-642.559c-17.673 0-32-14.326-32-32v-583.68c0-1.105 0.056-2.196 0.165-3.272 1.639-16.136 15.266-28.728 31.835-28.728h85.76v-58.876zM802.63 392.957h-578.559v407.040h578.559v-407.040zM425.034 644.474c0-8.835 7.162-16 16-16h26.88c8.835 0 16 7.165 16 16v26.88c0 8.838-7.165 16-16 16h-26.88c-8.838 0-16-7.162-16-16v-26.88zM323.27 510.72c-8.836 0-15.999 7.162-15.999 16v26.88c0 8.835 7.163 16 15.999 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.838-7.162-16-16-16h-26.88zM542.79 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM323.27 628.474c-8.835 0-15.999 7.165-15.999 16v26.88c0 8.838 7.164 16 15.999 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM542.79 644.474c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.838-7.162 16-16 16h-26.88c-8.835 0-16-7.162-16-16v-26.88zM441.030 510.72c-8.835 0-16 7.165-16 16v26.88c0 8.835 7.165 16 16 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM660.55 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM676.55 628.474c-8.835 0-16 7.165-16 16v26.88c0 8.838 7.165 16 16 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["calendar"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":190,"id":39,"name":"calendar","prevSize":32,"code":59687},"setIdx":1,"setId":4,"iconIdx":45},{"icon":{"paths":["M866.128 153.126c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.246c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.246c12.496-12.497 12.496-32.758 0-45.255zM298.667 170.671c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999zM574.173 309.327h-403.506c-41.237 0-74.667 33.428-74.667 74.667v384c0 6.010 0.71 11.856 2.051 17.453l61.949-61.949v-339.504c0-5.891 4.776-10.666 10.667-10.666h339.506l64-64.001zM376.339 778.659h306.326c5.891 0 10.669-4.774 10.669-10.666v-85.334c0-11.373 6.038-21.891 15.859-27.629s21.949-5.83 31.856-0.243l97.83 55.162c2.531 1.427 4.858 3.194 6.912 5.248 6.72 6.72 18.208 1.962 18.208-7.542v-263.322c0-9.501-11.488-14.262-18.208-7.542-2.054 2.054-4.381 3.821-6.912 5.248l-97.83 55.162c-9.907 5.587-22.035 5.494-31.856-0.243-9.821-5.734-15.859-16.256-15.859-27.629v-7.661l110.778-73.498c47.418-41.99 123.888-8.701 123.888 56.163v263.322c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.378v30.554c0 41.238-33.43 74.666-74.669 74.666h-370.327l64.001-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["camera-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":191,"id":40,"name":"camera-disabled","prevSize":32,"code":59688},"setIdx":1,"setId":4,"iconIdx":46},{"icon":{"paths":["M288 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.674 0 32-14.327 32-32s-14.326-32-32-32h-256z","M170.667 341.328c-23.564 0-42.667 19.104-42.667 42.666v384c0 23.565 19.102 42.669 42.667 42.669h511.999c23.565 0 42.669-19.104 42.669-42.669v-128l97.83 97.83c26.877 26.88 72.835 7.843 72.835-30.17v-263.318c0-38.013-45.958-57.050-72.835-30.173l-97.83 97.83v-128c0-23.562-19.104-42.666-42.669-42.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["camera-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":192,"id":41,"name":"camera-filled","prevSize":32,"code":59689},"setIdx":1,"setId":4,"iconIdx":47},{"icon":{"paths":["M196.731 191.997c0-15.807 12.814-28.622 28.622-28.622h128.001c15.805 0 28.621 12.814 28.621 28.622s-12.816 28.621-28.621 28.621h-128.001c-15.807 0-28.622-12.814-28.622-28.621z","M737.354 559.997c0 97.203-78.8 176-176 176-97.203 0-176-78.797-176-176s78.797-176 176-176c97.2 0 176 78.797 176 176zM673.354 559.997c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112z","M193.353 255.997c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h640.001c35.344 0 64-28.653 64-64v-448c0-35.346-28.656-64-64-64h-640.001zM833.354 319.997v448h-640.001v-448h640.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["camera-photo"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":193,"id":42,"name":"camera-photo","prevSize":32,"code":59690},"setIdx":1,"setId":4,"iconIdx":48},{"icon":{"paths":["M298.667 170.672c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999z","M545.712 503.453c11.267-11.267 11.19-29.61-0.17-40.97s-29.706-11.437-40.973-0.17l-71.402 71.402-71.994-71.997c-11.363-11.36-29.706-11.437-40.973-0.17s-11.19 29.61 0.17 40.97l71.997 71.997-71.402 71.402c-11.266 11.267-11.19 29.61 0.17 40.97 11.363 11.36 29.706 11.437 40.973 0.17l71.402-71.402 71.997 71.997c11.36 11.36 29.702 11.437 40.97 0.17s11.19-29.61-0.17-40.97l-71.997-71.997 71.402-71.402z","M96 383.994c0-41.235 33.429-74.666 74.667-74.666h511.999c41.238 0 74.669 33.43 74.669 74.666v30.554l46.778-26.378c47.418-41.99 123.888-8.698 123.888 56.166v263.318c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.374v30.55c0 41.238-33.43 74.669-74.669 74.669h-511.999c-41.237 0-74.667-33.43-74.667-74.669v-384zM170.667 373.328c-5.891 0-10.667 4.774-10.667 10.666v384c0 5.891 4.776 10.669 10.667 10.669h511.999c5.891 0 10.669-4.778 10.669-10.669v-85.331c0-11.376 6.038-21.894 15.859-27.632s21.949-5.83 31.856-0.243l97.83 55.165c2.531 1.427 4.858 3.19 6.912 5.245 6.72 6.72 18.208 1.962 18.208-7.542v-263.318c0-9.504-11.488-14.262-18.208-7.546-2.054 2.058-4.381 3.821-6.912 5.248l-97.83 55.165c-9.907 5.587-22.035 5.494-31.856-0.243s-15.859-16.256-15.859-27.632v-85.334c0-5.891-4.778-10.666-10.669-10.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["camera-unavailable"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":194,"id":43,"name":"camera-unavailable","prevSize":32,"code":59691},"setIdx":1,"setId":4,"iconIdx":49},{"icon":{"paths":["M256 202.672c0-17.673 19.102-32 42.667-32h255.999c23.565 0 42.669 14.327 42.669 32s-19.104 32-42.669 32h-255.999c-23.564 0-42.667-14.327-42.667-32zM160 383.994c0-5.891 4.776-10.666 10.667-10.666h511.999c5.891 0 10.669 4.774 10.669 10.666v85.334c0 11.376 6.038 21.894 15.859 27.632s21.949 5.83 31.856 0.243l97.83-55.165c2.531-1.427 4.858-3.19 6.912-5.248 6.72-6.717 18.208-1.958 18.208 7.546v263.318c0 9.504-11.488 14.262-18.208 7.542-2.054-2.054-4.381-3.818-6.912-5.245l-97.83-55.165c-9.907-5.587-22.035-5.494-31.856 0.243s-15.859 16.256-15.859 27.632v85.331c0 5.891-4.778 10.669-10.669 10.669h-511.999c-5.891 0-10.667-4.778-10.667-10.669v-384zM170.667 309.328c-41.237 0-74.667 33.43-74.667 74.666v384c0 41.238 33.429 74.669 74.667 74.669h511.999c41.238 0 74.669-33.43 74.669-74.669v-30.55l46.778 26.374c47.418 41.99 123.888 8.701 123.888-56.163v-263.318c0-64.864-76.47-98.157-123.888-56.166l-46.778 26.378v-30.554c0-41.235-33.43-74.666-74.669-74.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["camera"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":195,"id":44,"name":"camera","prevSize":32,"code":59692},"setIdx":1,"setId":4,"iconIdx":50},{"icon":{"paths":["M224.248 304.026c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.702 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.152 83.731 244.197 93.958 91.965 10.218 193.27 1.446 273.306-15.482 40.022-8.461 73.616-18.733 97.443-29.075 9.245-4.013 16.438-7.786 21.734-11.126-2.464-1.565-5.446-3.306-9.002-5.197-9.222-4.912-19.779-9.578-30.733-14.368l-1.914-0.835c-9.667-4.221-20.47-8.941-28.656-13.517-14.835-8.298-29.389-17.734-40.006-27.776-5.222-4.941-11.165-11.571-15.146-19.827-4.208-8.742-7.226-21.792-1.306-35.597 31.978-74.621 47.178-115.494 54.538-142.483 6.874-25.2 6.874-37.888 6.874-58.064v-0.182c0-16.035-9.318-89.517-55.811-158.032-45.018-66.338-125.99-129.968-274.854-129.968-134.637 0-215.698 55.382-264.165 122.698zM172.309 266.63c60.333-83.796 160.606-149.302 316.103-149.302 171.136 0 271.494 75.037 327.811 158.032 54.842 80.819 66.854 167.338 66.854 193.968 0 22.384-0.022 41.696-9.126 75.088-8.131 29.805-23.485 70.928-51.946 137.923 5.261 4.166 13.072 9.306 23.36 15.062 5.315 2.97 13.485 6.55 24.963 11.568 10.653 4.659 23.437 10.266 35.174 16.515 11.258 5.994 24.416 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.056 15.168-16.794 25.939-26.576 33.094-10.63 7.776-23.818 14.762-38.253 21.030-29.008 12.589-67.030 23.962-109.683 32.982-85.309 18.038-193.581 27.587-293.616 16.474-99.955-11.107-202.74-44.634-278.468-108.71-76.833-65.011-123.811-159.994-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904zM493.744 320c17.674 0 32 14.326 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.674 14.326-32 32-32zM525.744 672c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["canned-response"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":196,"id":45,"name":"canned-response","prevSize":32,"code":59693},"setIdx":1,"setId":4,"iconIdx":51},{"icon":{"paths":["M193.352 181.331c-53.020 0-96 42.981-96 96v469.335c0 53.018 42.98 96 96 96h639.999c53.021 0 96-42.982 96-96v-469.335c0-53.019-42.979-96-96-96h-639.999zM161.352 277.331c0-17.673 14.327-32 32-32h639.999c17.674 0 32 14.327 32 32v202.673h-703.999v-202.673zM161.352 544.003h703.999v202.662c0 17.67-14.326 32-32 32h-639.999c-17.673 0-32-14.33-32-32v-202.662zM812.016 661.331c0-35.347-28.653-64-64-64-35.344 0-64 28.653-64 64s28.656 64 64 64c35.347 0 64-28.653 64-64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["card"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":197,"id":46,"name":"card","prevSize":32,"code":59694},"setIdx":1,"setId":4,"iconIdx":52},{"icon":{"paths":["M368 160c0-17.673-14.326-32-32-32s-32 14.327-32 32v144h-144c-17.673 0-32 14.327-32 32s14.327 32 32 32h144v288h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v144c0 17.674 14.327 32 32 32s32-14.326 32-32v-144h288v144c0 17.674 14.326 32 32 32s32-14.326 32-32v-144h144c17.674 0 32-14.326 32-32s-14.326-32-32-32h-144v-80h-58.666c-1.786 0-3.565-0.042-5.334-0.118v80.118h-288v-288h168.79c-0.522-5.264-0.79-10.602-0.79-16v-48h-168v-144z","M760 96c-57.437 0-104 46.562-104 104v56h-24c-17.674 0-32 14.327-32 32v192c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-192c0-17.673-14.326-32-32-32h-24v-56c0-57.438-46.563-104-104-104zM800 255.238h-80v-55.238c0-22.092 17.907-40 40-40s40 17.908 40 40v55.238z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["channel-private"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":198,"id":47,"name":"channel-private","prevSize":32,"code":59695},"setIdx":1,"setId":4,"iconIdx":53},{"icon":{"paths":["M336 128c17.674 0 32 14.327 32 32v144h288v-144c0-17.673 14.326-32 32-32s32 14.327 32 32v144h144c17.674 0 32 14.327 32 32s-14.326 32-32 32h-144v288h144c17.674 0 32 14.326 32 32s-14.326 32-32 32h-144v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-288v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-288h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-144c0-17.673 14.327-32 32-32zM368 368v288h288v-288h-288z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["channel-public"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":199,"id":48,"name":"channel-public","prevSize":32,"code":59696},"setIdx":1,"setId":4,"iconIdx":54},{"icon":{"paths":["M886.627 105.372c12.496 12.497 12.496 32.758 0 45.255l-89.373 89.372 89.373 89.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-89.373-89.372-89.373 89.372c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l89.373-89.373-89.373-89.372c-12.496-12.497-12.496-32.758 0-45.255s32.758-12.497 45.254 0l89.373 89.373 89.373-89.373c12.496-12.497 32.758-12.497 45.254 0zM226.501 304.042c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.701 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.151 83.731 244.196 93.958 91.968 10.218 193.27 1.446 273.309-15.482 40.019-8.461 73.613-18.733 97.44-29.075 9.245-4.013 16.438-7.786 21.738-11.126-2.467-1.565-5.446-3.306-9.005-5.2-9.222-4.909-19.776-9.574-30.733-14.365l-1.917-0.838c-9.667-4.221-20.47-8.938-28.653-13.517-14.835-8.294-29.389-17.731-40.003-27.773-5.226-4.941-11.168-11.571-15.146-19.827-4.211-8.742-7.226-21.792-1.309-35.6 42.086-98.205 54.957-137.722 59.219-163.318 2.906-17.434 19.392-29.21 36.822-26.307 17.434 2.906 29.213 19.389 26.307 36.822-5.453 32.749-20.333 76.41-58.006 165.088 5.261 4.166 13.069 9.306 23.357 15.059 5.315 2.973 13.485 6.554 24.963 11.571 10.656 4.656 23.437 10.266 35.174 16.515 11.261 5.994 24.419 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.053 15.168-16.794 25.939-26.576 33.094-10.627 7.776-23.814 14.762-38.253 21.027-29.005 12.592-67.027 23.965-109.68 32.986-85.312 18.038-193.584 27.587-293.616 16.47-99.955-11.104-202.742-44.63-278.471-108.707-76.833-65.014-123.811-159.997-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904 60.333-83.796 160.605-149.302 316.103-149.302 17.674 0 32 14.327 32 32s-14.326 32-32 32c-134.637 0-215.697 55.382-264.164 122.698z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chat-close"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":200,"id":49,"name":"chat-close","prevSize":32,"code":59697},"setIdx":1,"setId":4,"iconIdx":55},{"icon":{"paths":["M778 93.833c-11.795-13.162-32.026-14.271-45.187-2.477s-14.272 32.025-2.477 45.187l81.222 90.645h-216.358c-17.674 0-32 14.327-32 32s14.326 32 32 32h216.358l-81.222 90.646c-11.795 13.162-10.685 33.392 2.477 45.187 13.162 11.792 33.392 10.685 45.187-2.477l129.030-144.001c10.893-12.154 10.893-30.556 0-42.71l-129.030-144zM159.999 512.010c0-55.322 16.86-139.021 66.502-207.968 48.467-67.316 129.527-122.698 264.164-122.698 17.674 0 32-14.327 32-32s-14.326-32-32-32c-155.498 0-255.77 65.507-316.102 149.302-58.72 81.555-78.275 178.355-78.561 243.904-11.151 127.229 35.827 222.211 112.66 287.222 75.729 64.077 178.516 97.603 278.471 108.707 100.032 11.117 208.304 1.568 293.616-16.47 42.653-9.021 80.675-20.394 109.68-32.982 14.438-6.269 27.626-13.254 38.253-21.030 9.782-7.155 21.523-17.926 26.579-33.094 7.67-23.018-3.069-41.872-13.302-52.864-9.782-10.509-22.941-18.544-34.202-24.538-11.738-6.25-24.518-11.859-35.171-16.515-11.482-5.018-19.651-8.598-24.966-11.571-10.288-5.754-18.096-10.89-23.357-15.059 37.674-88.678 52.554-132.339 58.010-165.088 2.902-17.43-8.877-33.917-26.31-36.822-17.43-2.902-33.917 8.877-36.822 26.307-4.262 25.597-17.133 65.114-59.219 163.318-5.917 13.808-2.902 26.858 1.309 35.6 3.978 8.256 9.92 14.886 15.146 19.827 10.614 10.042 25.171 19.478 40.003 27.776 8.186 4.576 18.989 9.296 28.656 13.517v0l1.914 0.835c10.957 4.79 21.51 9.456 30.733 14.368 3.558 1.891 6.541 3.632 9.005 5.197-5.299 3.341-12.493 7.114-21.738 11.126-23.827 10.342-57.421 20.614-97.44 29.075-80.038 16.928-181.341 25.699-273.309 15.482-92.045-10.227-181.258-40.704-244.196-93.958-61.545-52.077-99.836-127.29-90.135-234.006l0.132-1.446v-1.453z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chat-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":201,"id":50,"name":"chat-forward","prevSize":32,"code":59698},"setIdx":1,"setId":4,"iconIdx":56},{"icon":{"paths":["M854.506 233.252c12.563 12.429 12.672 32.691 0.243 45.254l-474.877 480c-6.013 6.077-14.208 9.498-22.755 9.494-8.55-0.003-16.742-3.427-22.752-9.507l-165.126-167.088c-12.423-12.57-12.303-32.832 0.268-45.254s32.831-12.304 45.254 0.269l142.375 144.067 452.115-456.992c12.429-12.564 32.691-12.672 45.254-0.243z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":202,"id":51,"name":"check","prevSize":32,"code":59699},"setIdx":1,"setId":4,"iconIdx":57},{"icon":{"paths":["M281.372 436.042c12.497-12.499 32.758-12.499 45.255 0l185.373 185.373 185.373-185.373c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-208 208c-12.496 12.496-32.758 12.496-45.254 0l-208-208c-12.497-12.496-12.497-32.758 0-45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-down"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":203,"id":52,"name":"chevron-down","prevSize":32,"code":59700},"setIdx":1,"setId":4,"iconIdx":58},{"icon":{"paths":["M670.17 183.165c16.662 16.662 16.662 43.677 0 60.34l-268.496 268.495 268.496 268.499c16.662 16.662 16.662 43.677 0 60.339s-43.677 16.662-60.339 0l-298.668-298.669c-8.002-8-12.497-18.851-12.497-30.17 0-11.315 4.495-22.166 12.497-30.17l298.668-298.666c16.662-16.662 43.677-16.662 60.339 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-left-big"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":204,"id":53,"name":"chevron-left-big","prevSize":32,"code":59701},"setIdx":1,"setId":4,"iconIdx":59},{"icon":{"paths":["M587.962 281.372c12.496 12.497 12.496 32.758 0 45.255l-185.373 185.373 185.373 185.373c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-208-208c-12.496-12.496-12.496-32.758 0-45.254l208-208c12.499-12.497 32.758-12.497 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-left"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":205,"id":54,"name":"chevron-left","prevSize":32,"code":59702},"setIdx":1,"setId":4,"iconIdx":60},{"icon":{"paths":["M436.038 742.627c-12.496-12.496-12.496-32.758 0-45.254l185.373-185.373-185.373-185.373c-12.496-12.497-12.496-32.758 0-45.254 12.499-12.497 32.758-12.497 45.254 0l208 208c12.499 12.496 12.499 32.758 0 45.254l-207.997 208c-12.499 12.496-32.758 12.496-45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-right"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":206,"id":55,"name":"chevron-right","prevSize":32,"code":59703},"setIdx":1,"setId":4,"iconIdx":61},{"icon":{"paths":["M742.627 587.958c-12.496 12.499-32.758 12.499-45.254 0l-185.373-185.373-185.373 185.373c-12.496 12.499-32.758 12.499-45.254 0-12.497-12.496-12.497-32.758 0-45.254l208-208c12.496-12.496 32.758-12.496 45.254 0l208 208c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-up"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":207,"id":56,"name":"chevron-up","prevSize":32,"code":59704},"setIdx":1,"setId":4,"iconIdx":62},{"icon":{"paths":["M512 864c194.403 0 352-157.597 352-352 0-46.522-9.024-90.931-25.418-131.581l48.518-48.518c26.211 54.496 40.899 115.581 40.899 180.099 0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416 95.376 0 183.254 32.096 253.424 86.076l-45.712 45.712c-58.221-42.623-130.029-67.788-207.712-67.788-194.404 0-352 157.596-352 352s157.596 352 352 352zM902.63 230.623c12.496-12.499 12.493-32.76-0.006-45.255s-32.762-12.491-45.254 0.008l-345.386 345.503-105.341-105.491c-12.486-12.506-32.749-12.522-45.254-0.032-12.506 12.486-12.522 32.749-0.032 45.254l127.971 128.157c6 6.006 14.144 9.386 22.634 9.389 8.493 0 16.637-3.373 22.64-9.376l368.029-368.157z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["circle-check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":208,"id":57,"name":"circle-check","prevSize":32,"code":59705},"setIdx":1,"setId":4,"iconIdx":63},{"icon":{"paths":["M608 192c0-53.019-42.979-96-96-96s-96 42.981-96 96h-192c-17.673 0-32 14.327-32 32v672c0 17.674 14.327 32 32 32h576c17.674 0 32-14.326 32-32v-672c0-17.673-14.326-32-32-32h-192zM256 864v-608h96v64c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-64h96v608h-512zM512 224c17.674 0 32-14.327 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["clipboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":209,"id":58,"name":"clipboard","prevSize":32,"code":59706},"setIdx":1,"setId":4,"iconIdx":64},{"icon":{"paths":["M864 512c0 194.403-157.597 352-352 352s-352-157.597-352-352c0-194.404 157.596-352 352-352s352 157.596 352 352zM928 512c0-229.75-186.25-416-416-416s-416 186.25-416 416c0 229.75 186.25 416 416 416s416-186.25 416-416zM544 288c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["clock"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":210,"id":59,"name":"clock","prevSize":32,"code":59707},"setIdx":1,"setId":4,"iconIdx":65},{"icon":{"paths":["M806.627 262.628c12.496-12.497 12.496-32.758 0-45.255s-32.758-12.497-45.254 0l-249.373 249.373-249.372-249.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.758 0 45.255l249.373 249.372-249.373 249.373c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l249.372-249.373 249.373 249.373c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-249.373-249.373 249.373-249.372z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["close"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":211,"id":60,"name":"close","prevSize":32,"code":59708},"setIdx":1,"setId":4,"iconIdx":66},{"icon":{"paths":["M273.129 356.678c6.747-28.298 25.696-52.004 51.21-67.152 25.6-15.2 56.323-20.858 84.698-14.53 27.642 6.163 55.117 24.12 74.874 60.339l22.541 41.325 30.134-36.16c27.238-32.689 85.126-39.713 134.714-14.064 23.562 12.186 42.208 30.618 52.064 53.488 9.654 22.406 12.112 51.898-1.434 89.149l-15.616 42.938h45.686c53.606 0 82.419 15.882 97.642 33.75 15.651 18.374 21.898 44.646 18.557 74.714-3.344 30.083-16.054 60.518-33.456 82.89-17.939 23.066-36.646 32.646-50.742 32.646h-543.998c-18.791 0-37.068-10.362-52.195-31.578-15.217-21.344-24.978-51.050-25.818-81.312-0.84-30.227 7.237-57.914 23.733-77.491 15.796-18.746 42.268-33.619 86.279-33.619h59.791l-33.165-49.75c-27.882-41.824-32.118-77.814-25.498-105.581zM518.218 272.084c-26.339-32.073-59.667-51.619-95.251-59.554-45.626-10.174-92.902-0.833-131.301 21.965-38.487 22.85-69.538 60.142-80.791 107.342-8.278 34.72-5.369 72.758 10.731 111.77-35.67 8.464-64.099 26.186-84.825 50.784-29.004 34.422-39.927 78.733-38.766 120.506 1.159 41.738 14.399 84.032 37.682 116.688 23.373 32.784 59.097 58.426 104.306 58.426h543.999c41.907 0 77.2-26.419 101.261-57.354 24.598-31.629 41.888-73.197 46.544-115.114 4.659-41.933-3.094-87.658-33.443-123.283-24.106-28.301-59.504-46.774-105.616-53.456 5.83-35.194 1.686-67.674-10.605-96.205-16.646-38.628-46.998-67.197-81.437-85.010-54.902-28.397-128.733-32.652-182.486 2.495zM512 437.331c17.674 0 32 14.33 32 32v53.328h53.334c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-53.334v53.341c0 17.674-14.326 32-32 32s-32-14.326-32-32v-53.341h-53.331c-17.674 0-32-14.326-32-32 0-17.67 14.326-32 32-32h53.331v-53.328c0-17.67 14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["cloud-connectivity"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":212,"id":61,"name":"cloud-connectivity","prevSize":32,"code":59709},"setIdx":1,"setId":4,"iconIdx":67},{"icon":{"paths":["M630.154 204.798c16.496 6.344 24.723 24.859 18.381 41.355l-213.334 554.667c-6.342 16.496-24.858 24.723-41.354 18.381-16.496-6.346-24.723-24.861-18.381-41.357l213.334-554.666c6.346-16.495 24.858-24.724 41.354-18.38zM321.293 361.37c12.499 12.499 12.499 32.758 0 45.258l-105.371 105.37 105.371 105.373c12.499 12.499 12.499 32.758 0 45.258-12.495 12.496-32.756 12.496-45.253 0l-128-128c-12.497-12.499-12.497-32.758 0-45.258l128-128c12.497-12.496 32.758-12.496 45.253 0zM702.707 361.37c12.496-12.496 32.758-12.496 45.254 0l128 128c12.496 12.499 12.496 32.758 0 45.258l-128 128c-12.496 12.496-32.758 12.496-45.254 0-12.499-12.499-12.499-32.758 0-45.258l105.373-105.373-105.373-105.37c-12.499-12.499-12.499-32.758 0-45.258z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["code"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":213,"id":62,"name":"code","prevSize":32,"code":59710},"setIdx":1,"setId":4,"iconIdx":68},{"icon":{"paths":["M770.704 224c17.674 0 32 14.327 32 32v544c0 17.674-14.326 32-32 32h-543.999c-17.673 0-32-14.326-32-32v-128c17.673 0 32-14.326 32-32s-14.327-32-32-32v-192c17.673 0 32-14.326 32-32s-14.327-32-32-32v-96c0-17.673 14.327-32 32-32h543.999zM130.705 608c-17.673 0-32 14.326-32 32s14.327 32 32 32v128c0 53.021 42.981 96 96 96h543.999c53.021 0 96-42.979 96-96v-544c0-53.019-42.979-96-96-96h-543.999c-53.019 0-96 42.981-96 96v96c-17.673 0-32 14.326-32 32s14.327 32 32 32v192zM427.91 514.266c13.315-3.568 27.309-3.789 40.73-0.643l31.52 7.389c8.73 2.045 17.83 1.904 26.49-0.416l22.186-5.942c14.285-3.827 29.328-4.042 43.683-0.675 40.429 9.475 69.325 45.584 69.325 87.277v24.336c0 31.811-25.789 57.6-57.6 57.6h-180.739c-31.811 0-57.6-25.789-57.6-57.6v-30.525c0-37.862 25.434-71.005 62.006-80.8zM456.957 563.472c-5.206-1.219-10.634-1.133-15.798 0.25-14.189 3.798-24.054 16.656-24.054 31.344v30.525c0 3.536 2.867 6.4 6.4 6.4h180.739c3.533 0 6.4-2.864 6.4-6.4v-24.336c0-17.75-12.365-33.341-29.808-37.427-6.186-1.45-12.662-1.35-18.752 0.282l-22.186 5.942c-16.813 4.502-34.474 4.781-51.421 0.81l-31.52-7.389zM539.155 420.48c0-13.962-11.318-25.28-25.28-25.28s-25.283 11.318-25.283 25.28c0 13.962 11.322 25.28 25.283 25.28s25.28-11.318 25.28-25.28zM590.355 420.48c0 42.24-34.243 76.48-76.48 76.48-42.24 0-76.483-34.24-76.483-76.48s34.243-76.48 76.483-76.48c42.237 0 76.48 34.24 76.48 76.48z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["contacts"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":214,"id":63,"name":"contacts","prevSize":32,"code":59711},"setIdx":1,"setId":4,"iconIdx":69},{"icon":{"paths":["M464 272c-35.347 0-64 28.654-64 64v480c0 35.347 28.653 64 64 64h352c35.347 0 64-28.653 64-64v-304c0-6.509-1.984-12.864-5.69-18.214l-134.458-194.215c-11.952-17.267-31.619-27.571-52.621-27.571h-223.232zM464 336h144v144c0 35.347 28.653 64 64 64h144v272h-352v-480zM672 480v-144h15.232l99.693 144h-114.925zM144 208c0-35.346 28.654-64 64-64h241.844c18.032 0 35.229 7.607 47.357 20.949l39.136 43.051h-328.336v480h128v64h-128c-35.346 0-64-28.653-64-64v-480z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["copy"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":215,"id":64,"name":"copy","prevSize":32,"code":59712},"setIdx":1,"setId":4,"iconIdx":70},{"icon":{"paths":["M824.682 183.521c-37.19-37.986-98.202-38.583-136.131-1.333l-348.48 342.237c-12.739 12.512-21.733 28.32-25.976 45.654l-23.681 96.749c-6.94 28.355 16.754 54.845 45.747 51.142l90.691-11.578c20.224-2.582 39.104-11.52 53.907-25.52l360.486-340.922c38.986-36.868 40.173-98.482 2.637-136.82l-19.2-19.61zM733.485 227.821c12.643-12.417 32.979-12.218 45.376 0.444l19.2 19.61c12.512 12.78 12.115 33.317-0.88 45.607l-69.965 66.169-63.446-63.364 69.715-68.466zM618.074 341.162l62.592 62.512-243.971 230.73c-4.934 4.666-11.229 7.645-17.968 8.506l-58.307 7.443 15.926-65.075c1.414-5.779 4.413-11.046 8.659-15.219l233.069-228.896zM193.608 265.602c0-17.673 14.346-32 32.042-32h281.332c17.696 0 32.042-14.327 32.042-32s-14.346-32-32.042-32h-281.332c-53.089 0-96.127 42.981-96.127 96v534.402c0 53.018 43.037 95.997 96.127 95.997h529.764c53.091 0 96.128-42.979 96.128-96v-279.414c0-17.67-14.346-32-32.042-32s-32.042 14.33-32.042 32v279.414c0 17.674-14.346 32-32.045 32h-529.764c-17.696 0-32.042-14.326-32.042-31.997v-534.402z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["create"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":216,"id":65,"name":"create","prevSize":32,"code":59713},"setIdx":1,"setId":4,"iconIdx":71},{"icon":{"paths":["M717.373 298.663c0-17.673-14.326-32-32-32s-32 14.327-32 32v426.665c0 17.674 14.326 32 32 32s32-14.326 32-32v-426.665z","M514.704 394.672c17.674 0 32 14.326 32 32v298.666c0 17.674-14.326 32-32 32s-32-14.326-32-32v-298.666c0-17.674 14.326-32 32-32z","M376.038 554.672c0-17.674-14.326-32-32-32s-32 14.326-32 32v170.669c0 17.67 14.327 32 32 32s32-14.33 32-32v-170.669z","M130.705 199.556v624.889c0 39.52 32.036 71.555 71.556 71.555h624.888c39.52 0 71.555-32.035 71.555-71.555v-624.889c0-39.519-32.035-71.556-71.555-71.556h-624.888c-39.519 0-71.556 32.036-71.556 71.556zM202.26 192h624.888c4.173 0 7.555 3.383 7.555 7.556v624.889c0 4.173-3.382 7.555-7.555 7.555h-624.888c-4.173 0-7.556-3.382-7.556-7.555v-624.889c0-4.173 3.383-7.556 7.556-7.556z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["dashboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":217,"id":66,"name":"dashboard","prevSize":32,"code":59714},"setIdx":1,"setId":4,"iconIdx":72},{"icon":{"paths":["M739.68 864v-448h-448.593v448h448.593zM227.003 864v-448c-35.393 0-64.084-28.653-64.084-64v-128c0-35.346 28.692-64 64.084-64h224.297c0-35.346 28.691-64 64.083-64 35.395 0 64.086 28.654 64.086 64h224.294c35.395 0 64.086 28.654 64.086 64v128c0 35.347-28.691 64-64.086 64v448c0 35.347-28.691 64-64.083 64h-448.593c-35.393 0-64.085-28.653-64.085-64zM803.763 224h-576.761v128h576.761v-128zM419.258 544v192c0 17.674 14.346 32 32.042 32s32.042-14.326 32.042-32v-192c0-17.674-14.346-32-32.042-32s-32.042 14.326-32.042 32zM579.469 512c17.696 0 32.042 14.326 32.042 32v192c0 17.674-14.346 32-32.042 32s-32.042-14.326-32.042-32v-192c0-17.674 14.346-32 32.042-32z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["delete"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":218,"id":67,"name":"delete","prevSize":32,"code":59715},"setIdx":1,"setId":4,"iconIdx":73},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.327 32 32 32h341.334c17.67 0 32-14.326 32-32s-14.33-32-32-32h-341.334z","M85.334 298.672c0-70.692 57.308-128 128-128h597.335c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.335c-70.692 0-128-57.306-128-128v-298.666zM213.334 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.335c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.335z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["desktop"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":219,"id":68,"name":"desktop","prevSize":32,"code":59716},"setIdx":1,"setId":4,"iconIdx":74},{"icon":{"paths":["M325.837 160c0-17.673-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.327-32.042 32v64c0 17.673 14.346 32 32.042 32h64.085c17.696 0 32.043-14.327 32.043-32v-64zM325.837 586.666c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64zM454.006 160c0-17.673 14.346-32 32.042-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.327-32.042-32v-64zM582.173 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM454.006 586.666c0-17.674 14.346-32 32.042-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.326-32.042-32v-64zM582.173 800c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 160c0-17.673 14.346-32 32.045-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.327-32.045-32v-64zM838.512 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.699 0-32.045 14.326-32.045 32v64c0 17.674 14.346 32 32.045 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 586.666c0-17.674 14.346-32 32.045-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.326-32.045-32v-64zM325.837 373.334c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["dialpad"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":220,"id":69,"name":"dialpad","prevSize":32,"code":59717},"setIdx":1,"setId":4,"iconIdx":75},{"icon":{"paths":["M514.704 96c80.096 0 154.906 22.636 218.378 61.859l-46.746 46.746c-24.739-13.843-51.322-24.785-79.286-32.368 12.166 22.395 23.078 49.095 32.403 79.249l-51.997 51.999c-5.654-22.994-12.17-44.005-19.347-62.666-12.822-33.339-26.522-55.927-38.474-69.070-8.4-9.235-13.43-11.291-14.928-11.698-1.501 0.407-6.531 2.463-14.931 11.698-11.949 13.143-25.651 35.731-38.474 69.070-16.298 42.377-29.174 96.867-36.339 159.18h65.974l-63.997 64h-7.117c-0.115 2.47-0.221 4.95-0.32 7.437l-64.538 64.538c-0.173-7.933-0.259-15.926-0.259-23.974 0-16.234 0.355-32.25 1.053-48h-189.81c-2.14 15.696-3.245 31.718-3.245 48 0 33.28 4.619 65.485 13.251 96h106.984l-64 64h-17.852c2.004 3.92 4.078 7.798 6.223 11.629l-46.746 46.749c-39.223-63.475-61.859-138.282-61.859-218.378 0-229.75 186.25-416 415.999-416zM868.845 293.623l-46.746 46.748c10.56 18.87 19.434 38.816 26.413 59.629h-86.045l-64 64h164.992c2.141 15.696 3.245 31.718 3.245 48 0 33.28-4.618 65.485-13.248 96h-183.030c2.8-30.816 4.282-62.957 4.282-96 0-8.045-0.090-16.042-0.262-23.974l-64.538 64.534c-0.752 19.008-2.022 37.523-3.763 55.44h-51.677l-64 64h107.091c-7.37 42.458-17.488 80.083-29.45 111.184-12.822 33.338-26.522 55.926-38.474 69.069-8.397 9.235-13.43 11.29-14.928 11.699-1.501-0.41-6.531-2.464-14.931-11.699-11.949-13.142-25.651-35.731-38.474-69.069-7.178-18.662-13.693-39.677-19.347-62.669l-52 51.997c9.328 30.154 20.24 56.854 32.406 79.251-27.965-7.584-54.547-18.525-79.286-32.368l-46.747 46.746c63.348 39.146 137.985 61.77 217.899 61.859h0.957c229.53-0.259 415.52-186.41 415.52-416 0-80.096-22.634-154.902-61.859-218.377zM422.362 172.237c-113.55 30.788-204.31 116.98-241.464 227.763h179.676c10-93.226 32.176-173.252 61.789-227.763zM607.050 851.763c24.397-44.902 43.741-107.117 55.395-179.763h165.878c-44.653 87.35-124.723 153.584-221.274 179.763zM828.077 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-671.999 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l671.999-672z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["directory-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":221,"id":70,"name":"directory-disabled","prevSize":32,"code":59718},"setIdx":1,"setId":4,"iconIdx":76},{"icon":{"paths":["M866.493 512c0 33.28-4.624 65.485-13.267 96h-183.27c2.803-30.816 4.285-62.957 4.285-96 0-16.234-0.358-32.25-1.053-48h190.058c2.141 15.696 3.248 31.718 3.248 48zM609.037 464c0.736 15.67 1.12 31.686 1.12 48 0 33.398-1.606 65.555-4.57 96h-183.117c-2.96-30.445-4.566-62.602-4.566-96 0-16.314 0.381-32.33 1.12-48h190.013zM668.368 400c-10.013-93.226-32.218-173.252-61.872-227.763 113.699 30.788 204.579 116.981 241.782 227.763h-179.91zM421.565 172.237c-29.654 54.51-51.859 134.537-61.872 227.763h-179.913c37.204-110.782 128.083-196.975 241.785-227.763zM424.17 400c7.171-62.314 20.067-116.804 36.387-159.18 12.838-33.339 26.557-55.927 38.525-69.070 8.41-9.235 13.446-11.291 14.947-11.698 1.501 0.407 6.541 2.463 14.95 11.698 11.965 13.143 25.683 35.731 38.525 69.070 16.32 42.377 29.213 96.867 36.387 159.18h-179.722zM354.874 464c-0.698 15.75-1.056 31.766-1.056 48 0 33.043 1.485 65.184 4.288 96h-183.274c-8.643-30.515-13.268-62.72-13.268-96 0-16.282 1.107-32.304 3.249-48h190.060zM366.096 672c11.667 72.646 31.040 134.861 55.466 179.763-96.675-26.179-176.853-92.413-221.565-179.763h166.099zM514.509 928c229.834-0.259 416.070-186.41 416.070-416 0-229.75-186.496-416-416.55-416s-416.549 186.25-416.549 416c0 229.59 186.237 415.741 416.073 416 0.16 0 0.317 0 0.477 0s0.32 0 0.48 0zM606.496 851.763c24.426-44.902 43.798-107.117 55.466-179.763h166.099c-44.71 87.35-124.886 153.584-221.565 179.763zM596.992 672c-7.379 42.458-17.51 80.083-29.488 111.184-12.842 33.338-26.56 55.926-38.525 69.069-8.41 9.235-13.45 11.29-14.95 11.699-1.501-0.41-6.538-2.464-14.947-11.699-11.968-13.142-25.686-35.731-38.525-69.069-11.978-31.101-22.112-68.726-29.491-111.184h165.926z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["directory"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":222,"id":71,"name":"directory","prevSize":32,"code":59719},"setIdx":1,"setId":4,"iconIdx":77},{"icon":{"paths":["M561.667 127.992c-121.696 0-200.973 50.509-248.813 115.801-46.216 63.073-61.638 137.752-61.933 188.616-8.705 98.746 28.601 172.896 89.422 223.469 59.686 49.626 140.202 75.258 217.85 83.738 77.75 8.486 161.715 1.197 227.856-12.547 33.066-6.87 62.774-15.581 85.642-25.331 11.366-4.848 22.029-10.368 30.797-16.669 7.875-5.661 18.541-14.976 23.242-28.835 7.286-21.475-3.133-38.784-11.965-48.102-8.41-8.877-19.427-15.405-28.24-20.016-9.306-4.867-19.379-9.206-27.533-12.707-8.973-3.856-14.858-6.4-18.56-8.432-4.845-2.662-8.842-5.088-12.026-7.203 20.256-47.142 31.549-77.043 37.696-99.19 7.293-26.272 7.315-41.725 7.315-58.909 0-21.523-9.603-88.542-52.81-151.108-44.701-64.73-124.074-122.573-257.939-122.573zM314.916 433.898c0-40.416 12.607-101.84 49.564-152.277 35.782-48.836 95.882-89.628 197.187-89.628 112.086 0 172.090 46.886 205.277 94.94 34.678 50.219 41.472 104.040 41.472 114.741v0.198c0 14.918 0 23.638-4.982 41.594-5.491 19.779-16.963 50.189-41.539 106.538-5.802 13.296-2.762 25.77 1.155 33.754 3.664 7.478 9.005 13.242 13.331 17.261 8.835 8.211 20.653 15.686 32.224 22.045 6.618 3.638 15.238 7.334 22.563 10.477l1.562 0.672c5.904 2.534 11.52 4.97 16.688 7.418-0.909 0.406-1.856 0.819-2.835 1.238-17.741 7.568-43.078 15.206-73.555 21.539-60.947 12.666-138.064 19.21-207.888 11.587-69.926-7.635-136.982-30.336-183.878-69.328-45.459-37.798-73.674-92.064-66.481-169.821l0.136-1.469v-1.478zM819.162 553.354l-0.074-0.086c0 0.003 0.010 0.013 0.029 0.035 0.010 0.013 0.026 0.029 0.045 0.051z","M178.552 502.474c7.496-11.258 16.26-22.259 26.436-32.592 0.876 31.747 6.169 61.226 15.216 88.358-15.094 30.877-18.374 59.315-18.374 65.357v0.186c0 11.382 0 17.536 3.524 30.701 3.993 14.918 12.441 38.211 30.867 82.022 5.256 12.496 2.48 24.099-0.985 31.43-3.249 6.874-7.925 12.058-11.512 15.514-7.319 7.053-16.852 13.254-25.75 18.326-5.008 2.854-11.333 5.706-16.546 8.029 11.182 3.939 24.98 7.814 40.802 11.226 44.977 9.693 101.833 14.669 153.062 8.87 51.28-5.808 99.776-23.014 133.35-51.965l0.608-0.528c14.794 2.784 29.53 4.938 44.051 6.525 10.886 1.187 21.862 2.086 32.877 2.72-10.122 14.797-22.163 28.045-35.741 39.754-46.362 39.974-108.547 60.362-167.946 67.088-59.45 6.73-123.405 0.947-173.744-9.901-25.17-5.424-48.056-12.352-65.901-20.243-8.86-3.92-17.458-8.502-24.686-13.891-6.431-4.794-15.831-13.171-20.001-25.92-6.422-19.632 2.792-35.443 10.458-43.834 7.193-7.872 16.405-13.462 23.248-17.174 7.309-3.965 15.158-7.466 21.235-10.173 6.907-3.078 10.854-4.858 13.183-6.186 1.349-0.768 2.591-1.501 3.727-2.195-13.937-33.885-21.976-56.118-26.48-72.947-5.68-21.222-5.7-33.875-5.7-47.434 0-17.712 7.436-71.139 40.721-121.123zM155.337 797.248c-0.012 0 0.084 0.102 0.317 0.301-0.19-0.202-0.306-0.301-0.317-0.301zM179.587 737.085c-0.004 0-0.052 0.051-0.137 0.15l0.112-0.118c0.019-0.022 0.027-0.032 0.025-0.032z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["discussions"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":223,"id":72,"name":"discussions","prevSize":32,"code":59720},"setIdx":1,"setId":4,"iconIdx":78},{"icon":{"paths":["M160 256c0-17.673 14.327-32 32-32h640c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.327-32-32zM160 421.162c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 602.838c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 768c0-17.674 14.327-32 32-32h344.614c17.674 0 32 14.326 32 32s-14.326 32-32 32h-344.614c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["document"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":224,"id":73,"name":"document","prevSize":32,"code":59721},"setIdx":1,"setId":4,"iconIdx":79},{"icon":{"paths":["M128.169 352c0-17.674 14.346-32 32.042-32h704.928c17.696 0 32.045 14.326 32.045 32s-14.349 32-32.045 32h-704.928c-17.696 0-32.042-14.326-32.042-32zM213.615 522.669c0-17.674 14.346-32 32.042-32h534.036c17.699 0 32.045 14.326 32.045 32s-14.346 32-32.045 32h-534.036c-17.697 0-32.042-14.326-32.042-32zM331.104 661.331c-17.698 0-32.043 14.326-32.043 32s14.346 32 32.043 32h363.146c17.696 0 32.042-14.326 32.042-32s-14.346-32-32.042-32h-363.146z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["donner"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":225,"id":74,"name":"donner","prevSize":32,"code":59722},"setIdx":1,"setId":4,"iconIdx":80},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l21.374 32.061v17.69h-48c-44.011 0-70.483 14.874-86.278 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h79.999v64h-80c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.304-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.613 53.456 30.349 35.626 38.106 81.35 33.446 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-80v-64h80c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 787.222c12.298-12.691 11.981-32.95-0.707-45.251-12.691-12.298-32.95-11.981-45.251 0.707l-41.021 42.326v-273.005c0-17.674-14.326-32-32-32s-32 14.326-32 32v273.005l-41.021-42.326c-12.301-12.688-32.56-13.005-45.251-0.707-12.688 12.301-13.005 32.56-0.707 45.251l96 99.050c6.029 6.218 14.32 9.728 22.979 9.728s16.95-3.51 22.979-9.728l96-99.050z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["download"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":226,"id":75,"name":"download","prevSize":32,"code":59723},"setIdx":1,"setId":4,"iconIdx":81},{"icon":{"paths":["M795.648 132.004c-25.027-25.027-65.603-25.027-90.63-0l-530.467 530.469c-9.577 9.574-15.873 21.939-17.985 35.318l-19.611 124.186c-1.386 8.771-0.942 17.299 1.006 25.261 7.597 31.037 38.083 53.44 72.291 48.038l124.184-19.613c13.379-2.112 25.744-8.41 35.322-17.984l530.467-530.47c12.512-12.513 18.768-28.914 18.768-45.316 0-10.379-2.506-20.757-7.517-30.15-2.906-5.451-6.656-10.57-11.251-15.164l-104.576-104.575zM630.675 296.979l119.658-119.658 104.576 104.574-119.658 119.657-104.576-104.573zM200.255 831.974l19.611-124.186 365.494-365.494 104.576 104.573-365.494 365.494-124.187 19.613z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["edit"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":227,"id":76,"name":"edit","prevSize":32,"code":59724},"setIdx":1,"setId":4,"iconIdx":82},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM353.226 720c8.963 0 17.526-3.53 24.272-9.437 21.603-18.918 42.64-31.958 62.701-40.509 36.563-15.59 71.805-17.107 104.794-9.939 37.632 8.176 72.659 27.808 102.109 51.341 6.726 5.376 14.995 8.544 23.606 8.544 30.218 0 45.616-34.256 22.397-53.594-36.912-30.742-82.79-57.59-134.522-68.832-44.794-9.734-93.67-7.632-143.485 13.606-28.79 12.275-57.232 30.653-85.024 55.933-21.572 19.619-6.010 52.886 23.152 52.886z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["emoji-bad-mood"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":228,"id":77,"name":"emoji-bad-mood","prevSize":32,"code":59725},"setIdx":1,"setId":4,"iconIdx":83},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM384 640h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["emoji-neutral-mood"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":229,"id":78,"name":"emoji-neutral-mood","prevSize":32,"code":59726},"setIdx":1,"setId":4,"iconIdx":84},{"icon":{"paths":["M330.074 644.886c-21.572-19.619-6.010-52.886 23.152-52.886 8.963 0 17.526 3.53 24.272 9.437 21.603 18.918 42.64 31.958 62.701 40.509 36.563 15.59 71.805 17.107 104.794 9.939 37.632-8.176 72.659-27.808 102.109-51.341 6.726-5.376 14.995-8.544 23.606-8.544 30.218 0 45.616 34.256 22.397 53.594-36.912 30.742-82.79 57.59-134.522 68.832-44.794 9.734-93.67 7.632-143.485-13.606-28.79-12.275-57.232-30.653-85.024-55.933z","M400.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M624.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["emoji"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":230,"id":79,"name":"emoji","prevSize":32,"code":59727},"setIdx":1,"setId":4,"iconIdx":85},{"icon":{"paths":["M655.744 512c88.365 0 160-71.635 160-160s-71.635-160-160-160c-88.368 0-160 71.635-160 160 0 26.934 6.653 52.314 18.41 74.582l-11.914 11.914 0.128 0.131-299.135 299.136c-3.533 9.926-6.41 20.976-7.738 31.606-1.652 13.219-0.563 22.966 1.874 28.938 1.768 4.333 4.22 7.232 10.772 9.014 8.316 2.262 24.518 2.794 52.822-5.501 8.524-3.808 27.721-16.285 45.132-35.382 18.18-19.939 29.648-41.856 29.648-62.438 0-15.642 11.309-28.992 26.736-31.565l91.75-15.293c3.766-2.656 18.768-15.693 10.134-58.867-2.099-10.49 1.184-21.338 8.749-28.902l88.198-88.195c26.467 19.379 59.114 30.822 94.432 30.822zM439.571 410.915c-5.104-18.771-7.827-38.525-7.827-58.915 0-123.712 100.288-224 224-224 123.709 0 224 100.288 224 224s-100.291 224-224 224c-29.29 0-57.264-5.619-82.906-15.843l-43.008 43.008c7.158 65.494-23.99 104.534-55.968 115.194l-2.384 0.794-74.854 12.477c-7.085 31.405-25.174 58.122-43.235 77.933-23.123 25.357-50.958 44.627-69.762 52.15l-1.324 0.528-1.365 0.41c-34.714 10.416-64.73 13.19-89.594 6.429-26.782-7.286-44.33-24.784-53.228-46.586-8.23-20.163-8.473-42.282-6.126-61.062 2.402-19.216 7.899-37.958 14.042-53.315 1.61-4.022 4.020-7.677 7.084-10.742l286.456-286.458zM623.744 336c0 26.509 21.488 48 48 48 26.509 0 48-21.491 48-48s-21.491-48-48-48c-26.512 0-48 21.49-48 48z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["encrypted"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":231,"id":80,"name":"encrypted","prevSize":32,"code":59728},"setIdx":1,"setId":4,"iconIdx":86},{"icon":{"paths":["M536.89 64c233.677 0 423.11 189.433 423.11 423.11h-423.11v-423.11z","M64 536.89c0-233.678 189.433-423.112 423.11-423.112v423.112h423.11c0 233.677-189.43 423.11-423.11 423.11-233.677 0-423.11-189.434-423.11-423.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["engagement-dashboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":232,"id":81,"name":"engagement-dashboard","prevSize":32,"code":59729},"setIdx":1,"setId":4,"iconIdx":87},{"icon":{"paths":["M416 586.445v177.232l75.514-62.928c11.869-9.888 29.104-9.888 40.973 0l75.514 62.928v-177.232c-29.098 13.821-61.645 21.555-96 21.555s-66.902-7.734-96-21.555zM352 540.768v291.232c0 12.416 7.184 23.712 18.426 28.979 11.245 5.267 24.522 3.552 34.061-4.397l107.514-89.594 107.514 89.594c9.539 7.949 22.816 9.664 34.061 4.397 11.242-5.267 18.426-16.563 18.426-28.979v-291.232c39.59-40.403 64-95.734 64-156.768 0-123.712-100.288-224.001-224-224.001s-224 100.288-224 224.001c0 61.034 24.41 116.365 64 156.768zM416 512.013l-0.016-0.013c-38.854-29.19-63.984-75.661-63.984-128 0-88.366 71.635-160.001 160-160.001s160 71.635 160 160.001c0 52.339-25.13 98.81-63.984 128l-0.016 0.013c-26.742 20.083-59.981 31.987-96 31.987s-69.258-11.904-96-31.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["enterprise-feature"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":233,"id":82,"name":"enterprise-feature","prevSize":32,"code":59730},"setIdx":1,"setId":4,"iconIdx":88},{"icon":{"paths":["M500.64 128c213.35 0 386.336 172.985 386.336 386.336 0 192.87-141.254 352.707-325.974 381.664v-269.958h90.022l17.114-111.706h-107.136v-72.47c0-11.462 2.102-22.822 7.274-32.544 2.474-4.656 5.651-8.934 9.635-12.666 9.866-9.245 24.688-15.152 46.058-15.152h48.733v-95.080c0 0-44.224-7.552-86.493-7.552-84.698 0-141.258 49.313-145.651 138.907-0.182 3.738-0.275 7.546-0.275 11.424v85.133h-98.122v111.706h98.122v269.958c-184.721-29.011-325.978-188.848-325.978-381.664 0-213.351 172.985-386.336 386.336-386.336z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["facebook-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":30,"id":83,"name":"facebook-monochromatic","prevSize":32,"code":59731},"setIdx":1,"setId":4,"iconIdx":89},{"icon":{"paths":["M373.334 448c0-17.674 14.326-32 32-32h213.331c17.674 0 32 14.326 32 32s-14.326 32-32 32h-213.331c-17.674 0-32-14.326-32-32z","M405.334 544c-17.674 0-32 14.326-32 32s14.326 32 32 32h213.331c17.674 0 32-14.326 32-32s-14.326-32-32-32h-213.331z","M256 128c-17.673 0-32 14.327-32 32v704c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-501.744c0-6.672-2.083-13.174-5.962-18.602l-144.467-202.254c-6.006-8.409-15.706-13.4-26.038-13.4h-367.533zM736 372.509v459.491h-448v-640h319.066l128.934 180.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["file-document"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":29,"id":84,"name":"file-document","prevSize":32,"code":59732},"setIdx":1,"setId":4,"iconIdx":90},{"icon":{"paths":["M128 192c-17.673 0-32 14.327-32 32v576.019c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-576.019c0-17.673-14.326-32-32-32h-768zM160 378.301v-122.301h149.333v122.301h-149.333zM160 442.301h149.333v141.722h-149.333v-141.722zM160 648.022h149.333v119.997h-149.333v-119.997zM373.334 768.019v-119.997h490.666v119.997h-490.666zM864 584.022h-490.666v-141.722h490.666v141.722zM864 378.301h-490.666v-122.301h490.666v122.301z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["file-sheet"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":28,"id":85,"name":"file-sheet","prevSize":32,"code":59733},"setIdx":1,"setId":4,"iconIdx":91},{"icon":{"paths":["M206.667 293.692c-30.421-42.402-0.116-101.442 52.070-101.442h518.572c51.174 0 81.706 57.026 53.334 99.615l-180.678 271.207v220.762c0 46.352-47.693 77.373-90.067 58.582l-121.424-53.85c-23.168-10.275-38.102-33.238-38.102-58.582v-166.304l-193.704-269.988zM777.309 256.334h-518.572l193.705 269.989c7.811 10.89 12.013 23.955 12.013 37.357v166.304l121.424 53.85v-220.762c0-12.646 3.741-25.008 10.752-35.533l180.678-271.205z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["filter"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":27,"id":86,"name":"filter","prevSize":32,"code":59734},"setIdx":1,"setId":4,"iconIdx":92},{"icon":{"paths":["M623.091 896c-2.806 0-5.296-0.624-7.168-0.938-62-16.858-102.816-39.648-145.811-80.858-55.149-54.010-85.37-125.814-85.37-202.301 0-65.875 56.704-119.571 126.496-119.571s126.496 53.696 126.496 119.571c0 34.963 31.469 63.373 69.792 63.373s69.789-28.41 69.789-63.373c0-135.808-119.642-246.637-266.701-246.637-104.998 0-200.338 57.133-243.334 145.795-14.332 29.347-21.498 63.066-21.498 100.842 0 28.72 2.492 73.363 24.925 131.744 2.804 7.181 2.492 14.675-0.623 21.856-3.116 6.867-9.035 11.862-16.201 14.358-2.804 1.251-6.231 1.562-9.659 1.562-11.84 0-22.433-7.181-26.484-18.106-19.005-50.266-28.353-99.904-28.353-151.728 0-46.205 9.036-88.352 26.795-125.504 52.343-108.019 167.936-177.638 294.432-177.638 178.528 0 323.718 135.804 323.718 302.828 0 65.875-56.704 119.571-126.806 119.571s-126.81-53.696-126.81-119.571c0-34.963-31.469-63.373-69.792-63.373-38.634 0-69.789 28.41-69.789 63.373 0 61.504 24.301 119.261 68.544 162.342 35.206 34.029 68.858 53.072 120.576 67.123 7.168 1.872 13.398 6.557 17.136 13.11 3.741 6.557 4.675 14.362 2.806 21.229-2.806 11.866-14.022 20.918-27.107 20.918zM426.803 888.195c-7.789 0-15.267-3.123-20.253-8.742-33.338-32.781-51.718-54.010-77.891-100.525-26.795-47.142-41.127-105.21-41.127-167.338 0-116.448 100.948-211.357 224.951-211.357s224.954 94.909 224.954 211.357c0 15.61-12.464 28.096-28.352 28.096-15.891 0-28.666-12.173-28.666-28.096 0-85.542-75.398-155.162-168.246-155.162s-168.246 69.619-168.246 155.162c0 52.448 11.84 100.528 34.272 139.552 23.366 41.52 38.947 59.005 68.858 88.662 10.902 11.238 10.902 28.723 0 39.648-5.92 5.933-13.088 8.742-20.253 8.742zM699.738 818.886c-47.36 0-88.797-11.862-123.382-34.963-59.197-39.651-94.717-103.962-94.717-172.333 0-15.61 12.464-28.099 28.352-28.099 15.891 0 28.355 12.49 28.355 28.099 0 49.638 26.17 96.781 69.789 125.501 25.238 16.861 55.149 24.976 91.603 24.976 7.789 0 22.432-0.934 38.010-3.744 1.558-0.314 3.427-0.314 4.986-0.314 13.709 0 25.238 9.99 27.728 23.414 1.248 7.181-0.31 14.672-4.362 20.605-4.362 6.243-10.902 10.614-18.694 11.862-23.366 4.685-43.93 4.995-47.667 4.995zM188.765 435.824c-5.608 0-11.217-1.562-16.202-4.995-6.543-4.058-10.593-10.614-12.151-18.106-1.246-7.494 0.311-14.986 4.985-21.232 38.635-53.696 87.862-95.843 146.125-125.501 60.132-30.595 129.613-46.829 200.961-46.829 71.037 0 140.205 15.922 200.029 46.205 58.573 29.659 107.802 71.492 146.125 124.567 4.362 5.93 6.23 13.424 4.986 20.915-1.248 7.494-5.61 14.048-11.84 18.419-4.986 3.437-10.595 4.995-16.515 4.995-9.034 0-17.757-4.371-23.056-11.862-33.338-45.891-75.709-82.109-125.562-107.083-52.342-26.224-112.787-40.273-174.477-40.273-62.314 0-122.758 14.049-175.101 40.585-49.852 25.913-92.537 62.128-126.186 108.643-3.739 6.87-12.463 11.552-22.121 11.552zM733.696 239.141c-4.672 0-9.347-1.249-13.395-3.434-71.35-35.902-133.354-51.512-207.504-51.512-74.467 0-144.256 17.483-207.817 51.824-4.050 2.185-8.724 3.122-13.397 3.122-10.282 0-19.629-5.62-24.925-14.361-3.739-6.556-4.673-14.361-2.492-21.541s7.166-13.424 13.709-16.859c72.594-38.712 151.733-58.38 234.924-58.38 82.563 0 154.848 17.795 233.987 58.068 6.854 3.434 11.84 9.366 14.33 16.859 2.182 7.18 1.248 14.673-2.179 21.229-4.986 9.054-14.643 14.985-25.238 14.985z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["fingerprint"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":26,"id":87,"name":"fingerprint","prevSize":32,"code":59735},"setIdx":1,"setId":4,"iconIdx":93},{"icon":{"paths":["M266.667 170.664c0-17.673 14.327-32 32-32h500.623c12.122 0 23.2 6.848 28.621 17.689s4.253 23.814-3.021 33.511l-122.134 162.843 122.134 162.845c7.274 9.696 8.442 22.672 3.021 33.51-5.421 10.842-16.499 17.69-28.621 17.69h-468.624v286.579c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-682.667zM330.666 502.752h404.624l-98.134-130.845c-8.531-11.376-8.531-27.021 0-38.4l98.134-130.843h-404.624v300.088z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["flag"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":25,"id":88,"name":"flag","prevSize":32,"code":59736},"setIdx":1,"setId":4,"iconIdx":94},{"icon":{"paths":["M140.020 213.336c0-17.673 14.327-32 32-32h234.057c7.181 0 14.157 2.416 19.798 6.86l88.813 69.94h339.997c17.674 0 32 14.327 32 32v520.533c0 17.674-14.326 32-32 32h-682.665c-17.673 0-32-14.326-32-32v-597.333zM204.020 245.336v533.333h618.665v-456.534h-319.085c-7.181 0-14.154-2.415-19.798-6.858l-88.813-69.94h-190.969z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["folder"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":24,"id":89,"name":"folder","prevSize":32,"code":59737},"setIdx":1,"setId":4,"iconIdx":95},{"icon":{"paths":["M370.704 544c0-17.674-14.326-32-32-32s-31.999 14.326-31.999 32v32h-32c-17.673 0-32 14.326-32 32s14.327 32 32 32h32v32c0 17.674 14.325 32 31.999 32s32-14.326 32-32v-32h32c17.674 0 32-14.326 32-32s-14.326-32-32-32h-32v-32z","M746.704 624c30.928 0 56-25.072 56-56s-25.072-56-56-56c-30.928 0-56 25.072-56 56s25.072 56 56 56z","M674.704 664c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-30.928 25.072-56 56-56s56 25.072 56 56z","M706.704 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v96h-128c-17.674 0-32 14.327-32 32v96h-191.999c-106.038 0-192 85.962-192 192v128c0 106.038 85.961 192 192 192h447.999c106.038 0 192-85.962 192-192v-128c0-106.038-85.962-192-192-192h-192v-64h128c17.674 0 32-14.327 32-32v-128zM866.704 544v128c0 70.691-57.306 128-128 128h-447.999c-70.692 0-128-57.309-128-128v-128c0-70.691 57.308-128 128-128h447.999c70.694 0 128 57.309 128 128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["game"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":23,"id":90,"name":"game","prevSize":32,"code":59738},"setIdx":1,"setId":4,"iconIdx":96},{"icon":{"paths":["M494.31 170.648l23.037 24.005 23.629-24.005 74.669 0.041v75.854h74.669v75.856h74.666v26.518h0.003v504.419h-522.678v-682.689h252.006zM540.976 246.503h-224.004v530.979h373.341v-379.229h-149.338v-151.75z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["giphy-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":21,"id":91,"name":"giphy-monochromatic","prevSize":32,"code":59739},"setIdx":1,"setId":4,"iconIdx":97},{"icon":{"paths":["M634.803 170.664h-256.112l-264.387 460.802 124.984 221.866h534.916l124.982-221.866-264.384-460.802zM367.814 631.466l138.931-239.789 138.934 239.789h-277.866z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["google-drive-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":19,"id":92,"name":"google-drive-monochromatic","prevSize":32,"code":59756},"setIdx":1,"setId":4,"iconIdx":98},{"icon":{"paths":["M129.354 272c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32s-14.326 32-32 32h-704c-17.673 0-32-14.327-32-32zM289.354 432c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM289.354 752c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM449.354 624c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.326-32 32s14.326 32 32 32zM385.354 400c-17.674 0-32 14.326-32 32s14.326 32 32 32h480c17.674 0 32-14.326 32-32s-14.326-32-32-32h-480zM353.354 752c0-17.674 14.326-32 32-32h480c17.674 0 32 14.326 32 32s-14.326 32-32 32h-480c-17.674 0-32-14.326-32-32zM577.354 560c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.674 0 32-14.326 32-32s-14.326-32-32-32h-288z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["group-by-type"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":150,"id":93,"name":"group-by-type","prevSize":32,"code":59757},"setIdx":1,"setId":4,"iconIdx":99},{"icon":{"paths":["M170.668 245.336c0-17.673 14.327-32 32-32h640.846c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640.846c-17.673 0-32-14.327-32-32zM170.668 501.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32zM170.668 757.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["hamburguer"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":148,"id":94,"name":"hamburguer","prevSize":32,"code":59758},"setIdx":1,"setId":4,"iconIdx":100},{"icon":{"paths":["M832 512c0 176.73-143.27 320-320 320s-320-143.27-320-320h-64c0 212.077 171.923 384 384 384s384-171.923 384-384c0-212.077-171.923-384-384-384-123.718 0-233.772 58.508-304 149.364v-101.364c0-17.673-14.327-32-32-32s-32 14.327-32 32v192c0 17.674 14.327 32 32 32h176c17.674 0 32-14.326 32-32s-14.326-32-32-32h-107.295c57.24-86.756 155.583-144 267.295-144 176.73 0 320 143.27 320 320z","M544 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["history"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":145,"id":95,"name":"history","prevSize":32,"code":59759},"setIdx":1,"setId":4,"iconIdx":101},{"icon":{"paths":["M522.042 195.354l224.464 260.044v366.234c0 5.856-4.752 10.605-10.614 10.605h-136.416v-149.821c0-23.424-19.014-42.413-42.47-42.413h-85.955c-23.453 0-42.467 18.989-42.467 42.413v149.821h-136.41c-5.864 0-10.617-4.749-10.617-10.605v-366.307l224.403-259.971c4.237-4.907 11.85-4.907 16.083 0zM560.57 895.856h175.322c41.043 0 74.32-33.232 74.32-74.224v-244.205h56.227c12.454 0 23.766-7.251 28.954-18.557 5.19-11.309 3.302-24.602-4.829-34.022l-320.272-371.033c-29.648-34.347-82.934-34.347-112.582 0l-320.27 371.033c-8.132 9.421-10.020 22.714-4.831 34.022 5.188 11.306 16.501 18.557 28.956 18.557h56.288v244.205c0 40.992 33.274 74.224 74.32 74.224h175.316c1.174 0.096 2.362 0.147 3.562 0.147h85.955c1.2 0 2.39-0.051 3.565-0.147z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["home"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":146,"id":96,"name":"home","prevSize":32,"code":59760},"setIdx":1,"setId":4,"iconIdx":102},{"icon":{"paths":["M406.685 405.334c0 47.126-38.205 85.331-85.334 85.331-47.127 0-85.332-38.205-85.332-85.331 0-47.13 38.205-85.334 85.332-85.334 47.13 0 85.334 38.205 85.334 85.334z","M97.352 192c0-17.673 14.327-32 32-32h767.999c17.674 0 32 14.327 32 32v640c0 17.674-14.326 32-32 32h-767.999c-17.673 0-32-14.326-32-32v-640zM161.352 764.163l151.704-176.989c9.271-10.813 24.57-14.202 37.536-8.307l153.123 69.603 160.474-204.24c6.010-7.651 15.174-12.15 24.902-12.23s18.963 4.272 25.098 11.821l151.162 186.048v-405.869h-703.999v540.163zM214.927 800h650.423v-68.64l-175.581-216.099-166.781 212.269-176.989-80.448-131.073 152.918z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["image"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":147,"id":97,"name":"image","prevSize":32,"code":59761},"setIdx":1,"setId":4,"iconIdx":103},{"icon":{"paths":["M512 873.027c-199.389 0-361.026-161.635-361.026-361.024s161.636-361.026 361.026-361.026c199.389 0 361.024 161.637 361.024 361.026s-161.635 361.024-361.024 361.024zM512 938.669c235.642 0 426.666-191.024 426.666-426.666s-191.024-426.667-426.666-426.667c-235.642 0-426.667 191.025-426.667 426.667s191.025 426.666 426.667 426.666zM544.819 347.901c0 18.125-14.694 32.819-32.819 32.819-18.128 0-32.822-14.694-32.822-32.819 0-18.128 14.694-32.821 32.822-32.821 18.125 0 32.819 14.693 32.819 32.821zM512 413.542c-18.128 0-32.822 14.694-32.822 32.819v229.744c0 18.125 14.694 32.819 32.822 32.819 18.125 0 32.819-14.694 32.819-32.819v-229.744c0-18.125-14.694-32.819-32.819-32.819z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["info"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":144,"id":98,"name":"info","prevSize":32,"code":59762},"setIdx":1,"setId":4,"iconIdx":104},{"icon":{"paths":["M512 864c-194.404 0-352-157.597-352-352s157.596-352 352-352c194.403 0 352 157.596 352 352s-157.597 352-352 352zM512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.75 0-416 186.25-416 416s186.25 416 416 416zM662.627 361.373c12.496 12.496 12.496 32.758 0 45.254l-105.373 105.373 105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l105.373-105.373-105.373-105.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373 105.373-105.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["input-clear"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":143,"id":99,"name":"input-clear","prevSize":32,"code":59763},"setIdx":1,"setId":4,"iconIdx":105},{"icon":{"paths":["M384 288c-17.674 0-32 14.327-32 32s14.326 32 32 32h256c17.674 0 32-14.326 32-32s-14.326-32-32-32h-256z","M352 448c0-17.674 14.326-32 32-32h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M512 640c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M224 224v576c0 35.347 28.654 64 64 64h448c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-448c-35.346 0-64 28.654-64 64zM288 800v-576h448v576h-448z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["instance"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":18,"id":100,"name":"instance","prevSize":32,"code":59764},"setIdx":1,"setId":4,"iconIdx":106},{"icon":{"paths":["M544 352c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32zM559.61 436.995c2.755-17.456-9.162-33.843-26.618-36.598-17.456-2.758-33.843 9.162-36.598 26.618l-48 304c-2.758 17.456 9.158 33.843 26.618 36.598 17.456 2.755 33.84-9.162 36.598-26.618l48-304z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["italic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":17,"id":101,"name":"italic","prevSize":32,"code":59765},"setIdx":1,"setId":4,"iconIdx":107},{"icon":{"paths":["M497.136 169.372c12.499 12.497 12.499 32.758 0 45.255l-35.958 35.96c1.078-0.016 2.163-0.025 3.245-0.025h191.152c115.11 0 208.426 93.316 208.426 208.426 0 115.107-93.315 208.422-208.426 208.422h-15.574v-64h15.574c79.763 0 144.426-64.659 144.426-144.422 0-79.766-64.662-144.426-144.426-144.426h-191.152c-1.030 0-2.058 0.011-3.082 0.032l35.795 35.796c12.499 12.499 12.499 32.758 0 45.258-12.496 12.496-32.758 12.496-45.254 0l-90.509-90.511c-12.496-12.497-12.496-32.758 0-45.255l90.509-90.51c12.496-12.497 32.758-12.497 45.254 0zM201.318 500.746h56.159v325.818h-59.023v-268.387h-1.909l-76.204 48.682v-54.090l80.977-52.022zM570.41 719.494c0 64.749-48.045 111.523-116.931 111.523-63.638 0-110.886-38.979-112.48-93.069h57.274c2.070 26.726 25.773 45.341 55.206 45.341 34.838 0 59.978-25.933 59.818-62.365 0.16-36.909-25.613-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.024-168h188.998v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.184 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-backward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":16,"id":102,"name":"jump-backward","prevSize":32,"code":59766},"setIdx":1,"setId":4,"iconIdx":108},{"icon":{"paths":["M494.861 169.372c-12.496 12.497-12.496 32.758 0 45.255l35.962 35.96c-1.082-0.016-2.163-0.025-3.248-0.025h-191.149c-115.111 0-208.426 93.316-208.426 208.426 0 115.107 93.315 208.422 208.426 208.422h15.574v-64h-15.574c-79.764 0-144.426-64.659-144.426-144.422 0-79.766 64.661-144.426 144.426-144.426h191.149c1.030 0 2.061 0.011 3.085 0.032l-35.798 35.796c-12.496 12.499-12.496 32.758 0 45.258 12.499 12.496 32.758 12.496 45.258 0l90.509-90.511c12.496-12.497 12.496-32.758 0-45.255l-90.509-90.51c-12.499-12.497-32.758-12.497-45.258 0zM521.318 500.746h56.157v325.818h-59.021v-268.387h-1.91l-76.205 48.682v-54.090l80.979-52.022zM890.41 719.494c0 64.749-48.048 111.523-116.934 111.523-63.635 0-110.886-38.979-112.477-93.069h57.274c2.067 26.726 25.773 45.341 55.203 45.341 34.842 0 59.978-25.933 59.821-62.365 0.157-36.909-25.616-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.021-168h189.002v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.181 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":15,"id":103,"name":"jump-forward","prevSize":32,"code":59767},"setIdx":1,"setId":4,"iconIdx":109},{"icon":{"paths":["M769.296 649.373c12.496 12.496 12.496 32.758 0 45.254l-192 192c-12.499 12.496-32.758 12.496-45.258 0l-192-192c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.258 0l137.37 137.373v-578.746h-192v192c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-224c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v610.746l137.373-137.373c12.499-12.496 32.758-12.496 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-to-message"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":14,"id":104,"name":"jump-to-message","prevSize":32,"code":59768},"setIdx":1,"setId":4,"iconIdx":110},{"icon":{"paths":["M576 256c0 35.346-28.653 64-64 64s-64-28.654-64-64c0-35.346 28.653-64 64-64s64 28.654 64 64z","M576 512c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z","M576 768c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["kebab"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":13,"id":105,"name":"kebab","prevSize":32,"code":59769},"setIdx":1,"setId":4,"iconIdx":111},{"icon":{"paths":["M160 224c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h704c35.347 0 64-28.653 64-64v-448c0-35.346-28.653-64-64-64h-704zM160 288h704v448h-704v-448zM256 352c-17.673 0-32 14.326-32 32s14.327 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM256 512c0-17.674 14.327-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.673 0-32-14.326-32-32zM480 480c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM640 512c0-17.674 14.326-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.674 0-32-14.326-32-32zM480 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM320 640c0-17.674 14.326-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-320c-17.674 0-32-14.326-32-32zM704 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["keyboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":12,"id":106,"name":"keyboard","prevSize":32,"code":59770},"setIdx":1,"setId":4,"iconIdx":112},{"icon":{"paths":["M681.904 256c0-17.673-14.326-32-32-32s-32 14.327-32 32v56.875l-80.346 13.998c-17.411 3.034-29.069 19.61-26.035 37.021 3.034 17.408 19.61 29.066 37.021 26.032l69.36-12.086v69.373c-30.384 6.851-60.461 20.074-84.154 43.139-27.923 27.184-44.070 65.238-44.070 113.808 0 25.741 6.262 48.262 18.451 66.621 12.186 18.349 29.062 30.682 47.251 38 35.357 14.221 76.72 10.173 108.128-4.579l1.206-0.566c31.126-14.621 62.493-29.354 90.723-57.818 21.325-21.507 39.709-49.539 56.848-88.678 5.654 9.498 9.594 20.966 10.285 34.339 1.632 31.526-14.275 82.813-87.955 153.418-12.758 12.227-13.19 32.483-0.963 45.245 12.227 12.758 32.486 13.19 45.245 0.963 80.192-76.851 110.586-145.034 107.59-202.934-2.986-57.658-38.586-96.022-70.675-113.955-20.774-13.014-50.214-22.826-81.216-28.288-16.624-2.931-34.47-4.749-52.694-4.995v-74.243l101.718-17.722c17.411-3.034 29.066-19.61 26.032-37.019-3.034-17.411-19.606-29.066-37.018-26.032l-90.733 15.809v-45.724zM578.394 536.208c10.163-9.891 23.565-17.475 39.51-22.704v138.653c-13.443 2.547-27.485 1.731-38.634-2.752-7.712-3.104-13.658-7.757-17.824-14.029-4.157-6.262-7.766-15.997-7.766-31.216 0-33.35 10.563-54.176 24.714-67.952zM709.994 600.752c-8.682 8.755-17.782 15.706-28.090 22.074v-117.888c14.125 0.24 28.224 1.661 41.587 4.016 13.587 2.397 25.683 5.622 35.763 9.165-16.88 42.038-33.069 66.304-49.261 82.634zM247.704 565.334h98.386l-49.193-184.883-49.193 184.883zM390.851 733.562l-27.734-104.227h-132.442l-27.732 104.227c-4.544 17.078-22.073 27.242-39.152 22.694-17.079-4.544-27.24-22.070-22.696-39.152l106.323-399.598c13.494-50.714 85.462-50.713 98.956 0l106.323 399.598c4.544 17.082-5.616 34.608-22.694 39.152-17.078 4.547-34.608-5.616-39.152-22.694z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["language"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":11,"id":107,"name":"language","prevSize":32,"code":59771},"setIdx":1,"setId":4,"iconIdx":113},{"icon":{"paths":["M253.489 275.612l-13.972 14.271c-37.092 37.883-36.45 98.664 1.435 135.758l145.62 142.573c37.885 37.091 98.666 36.448 135.757-1.437l13.971-14.269c0.723-0.739 1.434-1.488 2.128-2.243l0.102 0.099c5.805-5.904 13.885-9.568 22.822-9.568 17.674 0 32 14.326 32 32 0 9.6-4.227 18.211-10.922 24.077l-0.4 0.41-13.971 14.269c-61.821 63.142-163.12 64.214-226.262 2.394l-145.62-142.576c-63.141-61.818-64.212-163.119-2.392-226.26l13.972-14.27c61.82-63.141 163.121-64.212 226.26-2.392l74.694 73.131c0.976 0.847 1.901 1.752 2.768 2.71l0.374 0.366-0.026 0.026c4.931 5.63 7.923 13.005 7.923 21.078 0 17.674-14.326 32-32 32-7.83 0-15.005-2.813-20.566-7.482l-0.106 0.109-77.837-76.206c-37.882-37.092-98.664-36.45-135.756 1.435zM789.213 768.003l13.974-14.269c37.091-37.885 36.448-98.666-1.437-135.757l-145.619-142.576c-37.885-37.091-98.666-36.448-135.757 1.437l-13.974 14.269c-0.723 0.739-1.43 1.488-2.125 2.243l-0.102-0.099c-5.805 5.907-13.885 9.568-22.822 9.568-17.674 0-32-14.326-32-32 0-9.6 4.227-18.211 10.922-24.077l0.397-0.406 13.974-14.272c61.818-63.142 163.12-64.211 226.259-2.39l145.622 142.573c63.139 61.821 64.211 163.12 2.39 226.262l-13.971 14.269c-61.821 63.142-163.12 64.211-226.262 2.394l-74.691-73.133c-0.976-0.845-1.901-1.75-2.768-2.71l-0.374-0.365 0.026-0.026c-4.934-5.629-7.923-13.005-7.923-21.078 0-17.674 14.326-32 32-32 7.83 0 15.005 2.813 20.566 7.482l0.106-0.109 77.834 76.208c37.885 37.091 98.666 36.448 135.757-1.437z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["link"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":10,"id":108,"name":"link","prevSize":32,"code":59772},"setIdx":1,"setId":4,"iconIdx":114},{"icon":{"paths":["M439.274 704.374c0-33.645 26.278-47.677 72.726-47.677s72.73 14.032 72.73 47.677c0 32.96-13.19 111.069-23.914 149.76-4.963 17.808-22.080 25.171-48.816 25.171s-43.85-7.363-48.813-25.174c-10.717-38.666-23.914-116.688-23.914-149.757zM616.778 870.374l0.026-0.090c6.176-22.291 12.566-53.869 17.386-83.453 4.688-28.787 8.72-60.707 8.72-82.458 0-35.891-15.811-67.802-46.797-87.114-26.035-16.227-57.152-19.926-84.112-19.926-26.957 0-58.077 3.699-84.112 19.926-30.982 19.312-46.797 51.222-46.797 87.114 0 21.805 4.035 53.728 8.726 82.515 4.819 29.578 11.21 61.123 17.379 83.392l0.026 0.086c7.402 26.557 24.982 45.664 46.87 56.467 19.472 9.61 40.426 11.834 57.907 11.834 17.485 0 38.435-2.224 57.907-11.83 21.888-10.8 39.469-29.907 46.87-56.464zM459.635 460.8c0-28.275 23.446-51.2 52.365-51.2s52.365 22.925 52.365 51.2c0 28.278-23.446 51.2-52.365 51.2s-52.365-22.922-52.365-51.2zM512 341.334c-67.478 0-122.182 53.488-122.182 119.466 0 65.981 54.704 119.469 122.182 119.469s122.182-53.488 122.182-119.469c0-65.978-54.704-119.466-122.182-119.466zM677.802 537.254c-6.662 13.792-3.882 31.11 6.278 42.573 14.086 15.894 39.85 17.939 50.205-0.602 19.642-35.174 30.806-75.526 30.806-118.426 0-136.672-113.315-247.465-253.091-247.465-139.779 0-253.092 110.793-253.092 247.465 0 42.899 11.164 83.251 30.806 118.426 10.354 18.541 36.119 16.496 50.205 0.602 10.16-11.462 12.938-28.781 6.275-42.573-11.203-23.187-17.469-49.104-17.469-76.454 0-98.97 82.054-179.199 183.274-179.199s183.27 80.229 183.27 179.199c0 27.35-6.262 53.267-17.469 76.454zM730.16 699.795c-0.304-10.659 3.542-21.072 10.928-28.762 52.771-54.957 85.094-128.902 85.094-210.234 0-169.661-140.666-307.199-314.182-307.199s-314.182 137.538-314.182 307.199c0 81.331 32.323 155.28 85.093 210.234 7.386 7.69 11.234 18.102 10.928 28.762-0.833 29.018-31.273 47.917-52.121 27.715-70.223-68.042-113.718-162.41-113.718-266.71 0-207.363 171.923-375.465 384-375.465s384 168.102 384 375.465c0 104.304-43.498 198.672-113.722 266.714-20.848 20.202-51.286 1.302-52.118-27.718z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["live-streaming"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":9,"id":109,"name":"live-streaming","prevSize":32,"code":59773},"setIdx":1,"setId":4,"iconIdx":115},{"icon":{"paths":["M700.144 361.891c4.685-24.973 34.704-34.093 49.13-13.171 31.994 46.403 50.726 102.653 50.726 163.28s-18.733 116.88-50.726 163.283c-14.426 20.922-44.445 11.802-49.13-13.174l-1.706-9.101c-1.581-8.429 0.384-17.082 4.858-24.403 20.749-33.965 32.704-73.888 32.704-116.605 0-42.714-11.955-82.637-32.704-116.605-4.474-7.318-6.438-15.971-4.858-24.4l1.706-9.104z","M320.704 395.395c-20.748 33.968-32.704 73.891-32.704 116.605 0 42.717 11.956 82.64 32.704 116.605 4.474 7.322 6.438 15.974 4.858 24.403l-1.706 9.101c-4.684 24.976-34.705 34.096-49.128 13.174-31.994-46.403-50.728-102.656-50.728-163.283s18.733-116.877 50.728-163.28c14.424-20.922 44.444-11.802 49.128 13.171l1.706 9.104c1.581 8.429-0.384 17.082-4.858 24.4z","M728.765 209.256l-0.515 2.747c-2.234 11.911 2.534 23.967 11.763 31.821 75.866 64.565 123.987 160.751 123.987 268.175 0 107.427-48.122 203.613-123.987 268.176-9.229 7.856-13.997 19.914-11.763 31.824l0.515 2.746c4.192 22.362 29.69 33.194 47.261 18.746 92.794-76.294 151.974-191.981 151.974-321.491 0-129.507-59.181-245.193-151.974-321.489-17.571-14.448-43.069-3.615-47.261 18.745z","M283.986 243.825c9.228-7.854 13.998-19.911 11.764-31.821l-0.515-2.747c-4.192-22.359-29.69-33.193-47.262-18.745-92.793 76.296-151.973 191.981-151.973 321.489 0 129.51 59.18 245.197 151.973 321.491 17.572 14.448 43.070 3.616 47.262-18.746l0.515-2.746c2.233-11.91-2.536-23.968-11.764-31.824-75.864-64.563-123.986-160.749-123.986-268.176 0-107.424 48.122-203.61 123.986-268.175z","M608 512c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.018 42.979-96 96-96s96 42.982 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["live"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":8,"id":110,"name":"live","prevSize":32,"code":59774},"setIdx":1,"setId":4,"iconIdx":116},{"icon":{"paths":["M397.011 527.334c26.576 0 48.122-21.587 48.122-48.214s-21.546-48.214-48.122-48.214c-26.576 0-48.118 21.587-48.118 48.214s21.542 48.214 48.118 48.214z","M589.491 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M733.853 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M88.039 813.683l119.625 31.283c85.312 22.307 173.45-16.256 238.691-79.709 29.501 4.794 59.875 7.242 90.678 7.242 218.294 0 404.339-122.864 404.339-294.518 0-171.664-186.042-294.52-404.339-294.52-218.314 0-404.351 122.852-404.34 294.523 0 65.072 27.642 125.014 75.655 173.587-2.847 24.835-14.596 44.73-36.049 68.55l-84.261 93.562zM537.034 258.997c183.13 0 331.6 98.043 331.6 218.984 0 120.931-148.47 218.982-331.6 218.982-40.781 0-79.834-4.877-115.91-13.763-36.669 45.6-117.335 109.008-195.697 88.518 25.489-28.304 63.251-76.131 55.168-154.909-46.968-37.779-75.162-86.134-75.162-138.829-0.008-120.95 148.461-218.984 331.6-218.984z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["livechat-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":31,"id":111,"name":"livechat-monochromatic","prevSize":32,"code":59775},"setIdx":1,"setId":4,"iconIdx":117},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.326 32 32 32h341.334c17.674 0 32-14.326 32-32s-14.326-32-32-32h-341.334zM85.335 298.672c0-70.692 57.308-128 128-128h597.334c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.334c-70.692 0-128-57.306-128-128v-298.666zM213.335 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.334c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.334zM256 320c0-11.782 9.551-21.333 21.333-21.333h170.667c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.667c-11.782 0-21.333-9.552-21.333-21.334zM277.333 554.666c-11.782 0-21.333 9.552-21.333 21.334s9.551 21.334 21.333 21.334h85.332c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-85.332zM554.666 320c0-11.782 9.552-21.333 21.334-21.333h170.666c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.666c-11.782 0-21.334-9.552-21.334-21.334zM448 554.666c-11.782 0-21.334 9.552-21.334 21.334s9.552 21.334 21.334 21.334h298.666c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-298.666zM256 448c0-11.782 9.551-21.334 21.333-21.334h213.332c11.782 0 21.334 9.552 21.334 21.334s-9.552 21.334-21.334 21.334h-213.332c-11.782 0-21.333-9.552-21.333-21.334zM618.666 426.666c-11.782 0-21.331 9.552-21.331 21.334s9.549 21.334 21.331 21.334h128c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["log-view"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":33,"id":113,"name":"log-view","prevSize":32,"code":59778},"setIdx":1,"setId":4,"iconIdx":119},{"icon":{"paths":["M176 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM521.373 329.373c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.254l-105.373 105.373h418.746c17.674 0 32 14.326 32 32s-14.326 32-32 32h-418.746l105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-160-160c-12.496-12.496-12.496-32.758 0-45.254l160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["login"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":34,"id":114,"name":"login","prevSize":32,"code":59779},"setIdx":1,"setId":4,"iconIdx":120},{"icon":{"paths":["M268.099 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM994.726 489.373l-160-160c-12.496-12.497-32.758-12.497-45.254 0s-12.496 32.758 0 45.254l105.373 105.373h-418.746c-17.674 0-32 14.326-32 32s14.326 32 32 32h418.746l-105.373 105.373c-12.496 12.496-12.496 32.758 0 45.254s32.758 12.496 45.254 0l160-160c12.496-12.496 12.496-32.758 0-45.254z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["logout"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":35,"id":115,"name":"logout","prevSize":32,"code":59780},"setIdx":1,"setId":4,"iconIdx":121},{"icon":{"paths":["M192 736h640v-448h-640v448zM128 256c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32v512c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512zM305.304 389.082c-14.866-9.555-34.665-5.251-44.222 9.613-9.557 14.867-5.253 34.666 9.613 44.224l241.304 155.123 241.306-155.123c14.864-9.558 19.168-29.357 9.613-44.224-9.558-14.864-29.357-19.168-44.224-9.613l-206.694 132.877-206.696-132.877z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mail"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":36,"id":116,"name":"mail","prevSize":32,"code":59781},"setIdx":1,"setId":4,"iconIdx":122},{"icon":{"paths":["M302.769 192h418.463l23.187 72.727h-0.211l23.792 63.999c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818l23.794-63.999h-0.213l23.188-72.727zM212.406 264.727l36.491-114.448c4.231-13.27 16.56-22.279 30.488-22.279h465.23c13.93 0 26.259 9.009 30.49 22.279l56.896 178.447c0 33.939-12.083 64.925-32 88.515v350.778c0 53.018-42.979 96-96 96h-384c-53.019 0-96-42.982-96-96v-350.778c-19.916-23.59-32-54.576-32-88.515l20.406-63.999zM288 458.33v309.69c0 17.67 14.327 32 32 32h128v-192.019h128v192.019h128c17.674 0 32-14.33 32-32v-309.69c-10.227 2.752-20.95 4.214-32 4.214-38.23 0-72.547-17.52-96-45.302-23.453 27.782-57.77 45.302-96 45.302s-72.547-17.52-96-45.302c-23.453 27.782-57.77 45.302-96 45.302-11.050 0-21.772-1.462-32-4.214z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["marketplace"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":37,"id":117,"name":"marketplace","prevSize":32,"code":59782},"setIdx":1,"setId":4,"iconIdx":123},{"icon":{"paths":["M773.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M517.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M261.073 576c-35.346 0-64-28.653-64-64s28.654-64 64-64c35.346 0 63.999 28.653 63.999 64s-28.652 64-63.999 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["meatballs"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":38,"id":118,"name":"meatballs","prevSize":32,"code":59783},"setIdx":1,"setId":4,"iconIdx":124},{"icon":{"paths":["M651.36 116.071c-57.242-19.989-105.792-20.069-138.358-20.071v64l-1.002-64c-92.006 0.342-297.345 47.824-381.242 242.995-17.897 38.97-34.758 103.344-34.758 173.005 0 69.958 17.020 146.285 52.216 207.875 23.229 40.653 92.799 131.376 191.179 173.536 94.861 40.656 206.368 52.349 296.49 16.301 16.41-6.563 24.39-25.187 17.827-41.597s-25.187-24.39-41.597-17.827c-69.878 27.952-163.171 20.445-247.51-15.699-80.819-34.64-141.384-112.451-160.821-146.464-28.804-50.41-43.784-115.418-43.784-176.125 0-60.765 15.020-116.182 29.055-146.589l0.184-0.4 0.173-0.406c69.507-162.181 243.823-204.604 323.589-204.605 31.594 0.002 70.877 0.296 117.258 16.493 46.147 16.114 101.389 48.779 161.824 116.767 43.658 49.115 63.533 114.977 69.389 177.713 5.891 63.12-2.854 118.189-11.546 142.093-6.4 17.6-20.429 45.44-59.392 45.699-18.259-0.806-72.822-14.672-83.12-69.568v-235.062c0-17.674-3.414-34.134-29.014-34.134-19.338 0-26.454 16.461-26.454 34.134v34.131c-35.181-39.859-95.402-68.266-152.746-68.266-106.038 0-192 85.962-192 192s85.962 192 192 192c62.179 0 117.658-29.555 152.746-75.386 25.715 71.078 102.57 93.027 137.014 94.134l0.515 0.016h0.512c82.643 0 111.715-64.806 120.086-87.83 12.64-34.762 21.674-99.696 15.12-169.907-6.589-70.595-29.379-151.401-85.277-214.287-66.902-75.265-131.075-114.597-188.557-134.67zM627.2 512c0 70.691-57.309 128-128 128s-128-57.309-128-128c0-70.691 57.309-128 128-128s128 57.309 128 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mention"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":142,"id":119,"name":"mention","prevSize":32,"code":59784},"setIdx":1,"setId":4,"iconIdx":125},{"icon":{"paths":["M477.84 128c104.256 0 181.251 29.018 237.494 70.652l-44.317 44.317c-45.52-31.22-107.747-53.057-193.178-53.057-129.725 0-207.83 53.576-254.529 118.696-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-7.328 80.928 13.761 143.126 51.784 190.499l-43.879 43.878c-50.179-59.901-78.131-139.043-69.441-238.595 0.276-63.411 19.117-157.053 75.696-235.948 58.132-81.063 154.749-144.433 304.573-144.433zM822.848 332.499l-47.008 47.008c16.502 42.634 20.608 78.525 20.608 89.011v0.179c0 19.517 0 31.792-6.621 56.17-7.094 26.109-21.738 65.648-52.554 137.834-5.699 13.357-2.794 25.981 1.261 34.435 3.834 7.99 9.562 14.403 14.595 19.184 10.227 9.712 24.253 18.842 38.544 26.867 7.888 4.429 18.298 8.995 27.613 13.078l1.843 0.81c10.554 4.634 20.726 9.146 29.613 13.894 3.427 1.834 6.298 3.517 8.672 5.030-5.104 3.229-12.035 6.883-20.941 10.765-22.96 10.003-55.328 19.939-93.888 28.128-77.12 16.371-174.73 24.858-263.341 14.973-43.744-4.88-86.826-14.525-126.534-29.229l-47.542 47.542c52.771 23.018 110.492 36.886 167.267 43.222 96.387 10.752 200.71 1.517 282.909-15.936 41.098-8.726 77.731-19.731 105.68-31.907 13.91-6.064 26.618-12.822 36.858-20.342 9.427-6.925 20.739-17.344 25.61-32.016 7.392-22.269-2.957-40.509-12.816-51.139-9.427-10.166-22.106-17.939-32.954-23.738-11.309-6.048-23.626-11.472-33.891-15.978-11.059-4.854-18.934-8.317-24.054-11.194-9.914-5.565-17.437-10.538-22.506-14.57 27.421-64.81 42.214-104.589 50.048-133.424 8.774-32.304 8.797-50.986 8.797-72.64 0-20.106-7.053-75.501-35.267-136.019zM836.038 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-682.665 682.665c-12.497 12.499-32.758 12.499-45.255 0-12.497-12.496-12.497-32.755 0-45.254l682.666-682.666z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["message-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":57,"id":120,"name":"message-disabled","prevSize":32,"code":59785},"setIdx":1,"setId":4,"iconIdx":126},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.643 51.52 146.602 80.998 235.29 90.893 88.614 9.885 186.224 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.944-10.765-2.378-1.514-5.248-3.197-8.675-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.395-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.83 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.123 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.946 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["message"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":58,"id":121,"name":"message","prevSize":32,"code":59786},"setIdx":1,"setId":4,"iconIdx":127},{"icon":{"paths":["M512 128c75.546 0 138.861 52.356 155.645 122.762l-59.645 59.644v-22.405c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 24.067 8.858 46.067 23.488 62.915l-45.322 45.325c-26.182-28.49-42.166-66.499-42.166-108.24v-128c0-88.365 71.635-160 160-160zM561.35 568.243l102.893-102.893c-15.763 48.672-54.221 87.13-102.893 102.893zM288 416c0 72.154 23.181 123.101 55.328 159.078l-45.304 45.302c-43.428-47.35-74.024-113.99-74.024-204.381 0-17.674 14.327-32 32-32s32 14.326 32 32zM478.659 650.938l-51.808 51.808c18.56 6.374 36.579 10.806 53.149 13.635v115.619h-160c-17.673 0-32 14.326-32 32s14.327 32 32 32h384c17.674 0 32-14.326 32-32s-14.326-32-32-32h-160v-115.619c44.64-7.619 99.818-26.896 147.722-64.381 60.704-47.501 108.278-123.286 108.278-236 0-17.674-14.326-32-32-32s-32 14.326-32 32c0 92.086-37.757 149.632-83.722 185.6-46.464 36.358-102.736 51.581-140.278 54.326-9.971-0.73-21.264-2.339-33.341-4.989zM825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["microphone-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":59,"id":122,"name":"microphone-disabled","prevSize":32,"code":59787},"setIdx":1,"setId":4,"iconIdx":128},{"icon":{"paths":["M608 288c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 53.021 42.979 96 96 96s96-42.979 96-96v-128zM352 288c0-88.365 71.635-160 160-160s160 71.635 160 160v128c0 88.365-71.635 160-160 160s-160-71.635-160-160v-128zM256 384c17.673 0 32 14.326 32 32 0 92.086 37.757 149.632 83.722 185.6 46.464 36.358 102.736 51.581 140.278 54.326 37.542-2.746 93.814-17.968 140.278-54.326 45.962-35.968 83.722-93.514 83.722-185.6 0-17.674 14.326-32 32-32s32 14.326 32 32c0 112.714-47.574 188.499-108.278 236-47.904 37.485-103.082 56.762-147.722 64.381v115.619h160c17.674 0 32 14.326 32 32s-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32s14.327-32 32-32h160v-115.619c-44.64-7.619-99.818-26.896-147.722-64.381-60.703-47.501-108.278-123.286-108.278-236 0-17.674 14.327-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["microphone"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":60,"id":123,"name":"microphone","prevSize":32,"code":59788},"setIdx":1,"setId":4,"iconIdx":129},{"icon":{"paths":["M234.666 170.661c0-47.128 38.205-85.333 85.333-85.333h384.001c47.126 0 85.331 38.205 85.331 85.333v682.667c0 47.13-38.205 85.334-85.331 85.334h-384.001c-47.128 0-85.333-38.205-85.333-85.334v-682.667zM298.666 170.661v682.667c0 11.782 9.551 21.334 21.333 21.334h384.001c11.782 0 21.331-9.552 21.331-21.334v-682.667c0-11.782-9.549-21.333-21.331-21.333h-96.291c-2.653 24.002-23.002 42.672-47.709 42.672h-96c-24.707 0-45.056-18.67-47.709-42.672h-96.292c-11.782 0-21.333 9.551-21.333 21.333z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mobile"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":61,"id":124,"name":"mobile","prevSize":32,"code":59789},"setIdx":1,"setId":4,"iconIdx":130},{"icon":{"paths":["M319.247 231.566c-62.882 49.504-135.086 136.549-141.94 266.127-5.762 108.922 37.404 187.184 89.915 241.51 53.258 55.098 115.702 84.925 144.25 94.438 41.859 13.955 114.269 29.536 234.643-15.603 34.858-13.072 73.165-42.096 108.304-78.426 14.272-14.755 27.616-30.294 39.6-45.773-28.778 9.293-61.699 17.754-96.589 23.594-56.192 9.405-119.29 12.32-179.411-0.237-2.49-0.518-4.96-1.030-7.408-1.536-22.195-4.576-42.733-8.816-62.589-17.648-23.091-10.275-43.805-25.891-69.299-51.386-42.096-42.096-89.142-107.222-89.371-213.843-1.569-34.080 4.622-81.878 13.764-129.216 4.624-23.946 10.142-48.465 16.132-72.003zM345.562 138.217c32.8-17.15 63.709 15.843 53.875 45.907-12.234 37.414-24.586 85.511-33.482 131.58-9.024 46.732-13.949 88.633-12.643 114.7l0.038 0.797v0.8c0 84.915 36.173 134.918 70.627 169.373 22.509 22.509 36.835 32.278 50.064 38.166 13.229 5.885 26.832 8.717 51.085 13.763 1.923 0.4 3.917 0.816 5.978 1.248 49.914 10.426 104.534 8.336 155.76-0.237 65.434-10.954 122.384-31.981 152.374-47.386 17.562-9.021 34.992-2.47 44.477 5.965 9.661 8.589 19.376 27.152 8.886 46.954-20.637 38.95-53.645 84.419-92.182 124.259-38.211 39.51-84.317 76.038-131.834 93.859-135.626 50.858-223.216 34.438-277.354 16.394-36.515-12.173-108.392-46.912-170.026-110.675-62.381-64.534-114.684-159.427-107.81-289.373 10.79-203.979 157.583-317.098 232.165-356.093z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["moon"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":62,"id":125,"name":"moon","prevSize":32,"code":59790},"setIdx":1,"setId":4,"iconIdx":131},{"icon":{"paths":["M144 160c-17.673 0-32 14.327-32 32s14.327 32 32 32h192c17.674 0 32-14.327 32-32s-14.326-32-32-32h-192zM700.4 346.646c11.795-13.165 32.026-14.272 45.187-2.48 13.162 11.795 14.272 32.026 2.477 45.187l-81.222 90.646h216.358c17.674 0 32 14.326 32 32s-14.326 32-32 32h-216.358l81.222 90.646c11.795 13.162 10.685 33.392-2.477 45.187-13.162 11.792-33.392 10.685-45.187-2.48l-129.030-144c-10.893-12.154-10.893-30.554 0-42.707l129.030-144zM112 512c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 640c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192zM112 352c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 800c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["move-to-the-queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":63,"id":126,"name":"move-to-the-queue","prevSize":32,"code":59791},"setIdx":1,"setId":4,"iconIdx":132},{"icon":{"paths":["M809.002 166.758c7.782 6.063 12.333 15.377 12.333 25.242v448h-0.112c0.074 1.734 0.112 3.478 0.112 5.229 0 69.053-57.309 125.030-128 125.030-70.694 0-128-55.978-128-125.030s57.306-125.030 128-125.030c23.312 0 45.171 6.090 64 16.73v-303.86l-384 96.798v409.136c0 69.053-57.309 125.037-128.001 125.037s-128-55.978-128-125.030c0-69.050 57.308-125.027 128-125.027 23.314 0 45.173 6.086 64 16.726v-325.777c0-14.66 9.962-27.446 24.177-31.029l448-112.93c9.568-2.411 19.709-0.276 27.491 5.788z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["musical-note"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":64,"id":127,"name":"musical-note","prevSize":32,"code":59792},"setIdx":1,"setId":4,"iconIdx":133},{"icon":{"paths":["M208 176c-35.346 0-64 28.654-64 64v576c0 35.347 28.654 64 64 64h576c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-576zM208 240h576v576h-576v-576zM698.627 558.15c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.339l1.318-123.594-309.341 308.774c-12.51 12.483-32.771 12.464-45.256-0.042-12.485-12.509-12.467-32.771 0.042-45.258l309.195-308.624-123.382 1.315c-17.674 0.189-32.154-13.984-32.339-31.654-0.189-17.674 13.984-32.15 31.654-32.339l201.92-2.157c8.605-0.093 16.886 3.286 22.97 9.37 6.086 6.086 9.462 14.365 9.373 22.97l-2.157 201.92z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["new-window"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":65,"id":128,"name":"new-window","prevSize":32,"code":59793},"setIdx":1,"setId":4,"iconIdx":134},{"icon":{"paths":["M781.837 402.634c0-5.245-0.154-10.454-0.461-15.622l-63.539 63.539v265.363h-265.363l-66.979 66.979h425.363c12.944 0 24.611-7.795 29.565-19.754 4.954-11.955 2.214-25.722-6.938-34.874l-51.648-51.648v-273.984zM704.765 217.373l-45.254 45.255c-35.638-35.351-84.704-57.189-138.867-57.189-108.909 0-197.194 88.287-197.194 197.195v196.054l-64.001 64v-260.054c0-144.254 116.941-261.195 261.194-261.195 71.837 0 136.899 29.001 184.122 75.934zM433.578 808.934c0 48.086 38.982 87.066 87.066 87.066s87.066-38.979 87.066-87.066h-174.131zM854.275 190.982c-11.334-11.334-29.709-11.334-41.043 0l-612.732 612.733c-11.333 11.331-11.333 29.709 0 41.040 11.334 11.334 29.709 11.334 41.043 0l612.732-612.731c11.334-11.333 11.334-29.709 0-41.043z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["notification-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":66,"id":129,"name":"notification-disabled","prevSize":32,"code":59794},"setIdx":1,"setId":4,"iconIdx":135},{"icon":{"paths":["M601.331 808.928h-174.154c0.003 48.090 38.989 87.072 87.078 87.072s87.075-38.982 87.075-87.072zM815.597 731.677c7.274 9.696 8.442 22.669 3.021 33.51s-16.499 17.69-28.621 17.69h-565.996c-12.943 0-24.611-7.798-29.564-19.757-4.953-11.955-2.215-25.718 6.937-34.87l51.653-51.654v-274.032c0-144.272 116.957-261.228 261.229-261.228s261.229 116.956 261.229 261.228v275.629l40.112 53.485zM711.485 715.894v-313.331c0-108.926-88.304-197.228-197.229-197.228-108.928 0-197.229 88.302-197.229 197.228v313.331h394.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["notification"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":67,"id":130,"name":"notification","prevSize":32,"code":59795},"setIdx":1,"setId":4,"iconIdx":136},{"icon":{"paths":["M712.051 512.675v54.89c-0.195 76.736-43.741 143.283-107.44 176.445-5.53-25.67-28.362-44.906-55.683-44.906h-72.502c-31.459 0-56.963 25.501-56.963 56.963v41.427c0 31.462 25.504 56.963 56.963 56.963h72.502c28.509 0 52.128-20.944 56.307-48.288 69.261-26.829 123.962-82.883 148.966-153.030 4.723 1.27 9.69 1.946 14.813 1.946h28.483c31.459 0 56.963-25.504 56.963-56.963v-85.446c0-31.459-25.504-56.963-56.963-56.963h-28.483v-28.483c0-141.572-114.765-256.338-256.336-256.338s-256.339 114.766-256.339 256.338v23.302h-28.483c-31.46 0-56.964 25.504-56.964 56.966v103.571c0 31.459 25.504 56.963 56.964 56.963h28.482c31.46 0 56.964-25.504 56.964-56.963v-36.253h0.149c-0.099-2.576-0.148-5.165-0.148-7.766v-139.821c0-110.111 89.263-199.374 199.375-199.374s199.373 89.263 199.373 199.374v85.446z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["omnichannel"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":123,"id":131,"name":"omnichannel","prevSize":32,"code":59796},"setIdx":1,"setId":4,"iconIdx":137},{"icon":{"paths":["M705.578 633.158c9.507-9.235 24.701-9.018 33.939 0.486 9.238 9.507 9.021 24.701-0.486 33.939l-208.275 202.387c-9.312 9.050-24.138 9.050-33.45 0l-208.276-202.387c-9.506-9.238-9.724-24.432-0.487-33.939 9.237-9.504 24.432-9.722 33.937-0.486l191.549 186.134 191.549-186.134zM705.578 411.584c9.507 9.238 24.701 9.021 33.939-0.486s9.021-24.701-0.486-33.939l-208.275-202.385c-9.312-9.051-24.138-9.051-33.45 0l-208.276 202.385c-9.506 9.238-9.724 24.432-0.487 33.939 9.237 9.504 24.432 9.725 33.937 0.486l191.549-186.134 191.549 186.134z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["order"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":124,"id":132,"name":"order","prevSize":32,"code":59797},"setIdx":1,"setId":4,"iconIdx":138},{"icon":{"paths":["M742.317 652.566c12.666-12.323 12.944-32.582 0.618-45.248-12.323-12.669-32.582-12.944-45.251-0.621l44.634 45.869zM512 832.019l-22.317 22.934c12.422 12.086 32.211 12.086 44.634 0l-22.317-22.934zM326.317 606.698c-12.667-12.323-32.927-12.048-45.252 0.621-12.324 12.666-12.047 32.925 0.619 45.248l44.632-45.869zM697.683 606.698l-208 202.387 44.634 45.869 208-202.387-44.634-45.869zM534.317 809.085l-208-202.387-44.632 45.869 207.999 202.387 44.634-45.869z","M742.317 371.456c12.666 12.323 12.944 32.582 0.618 45.251-12.323 12.666-32.582 12.944-45.251 0.618l44.634-45.869zM512 192.004l-22.317-22.935c12.422-12.087 32.211-12.087 44.634 0l-22.317 22.935zM326.317 417.325c-12.668 12.326-32.927 12.048-45.252-0.618-12.325-12.669-12.048-32.928 0.619-45.251l44.633 45.869zM697.683 417.325l-208-202.386 44.634-45.87 208 202.387-44.634 45.869zM534.317 214.939l-208 202.386-44.633-45.869 207.999-202.387 44.634 45.87z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]},"tags":["ordering-ascending"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":125,"id":133,"name":"ordering-ascending","prevSize":32,"code":59798,"codes":[59798,59799]},"setIdx":1,"setId":4,"iconIdx":139},{"icon":{"paths":["M281.684 371.434c-12.667 12.323-12.944 32.582-0.619 45.248 12.324 12.669 32.584 12.944 45.252 0.621l-44.633-45.869zM512 191.981l22.317-22.935c-12.422-12.087-32.211-12.087-44.634 0l22.317 22.935zM697.683 417.302c12.669 12.323 32.928 12.048 45.251-0.621 12.326-12.666 12.048-32.925-0.618-45.248l-44.634 45.869zM326.317 417.302l208-202.387-44.634-45.869-207.999 202.387 44.633 45.869zM489.683 214.916l208 202.387 44.634-45.869-208-202.387-44.634 45.869z","M281.684 652.544c-12.667-12.323-12.944-32.582-0.619-45.251 12.324-12.666 32.584-12.944 45.252-0.618l-44.633 45.869zM512 831.997l22.317 22.934c-12.422 12.086-32.211 12.086-44.634 0l22.317-22.934zM697.683 606.675c12.669-12.326 32.928-12.048 45.251 0.618 12.326 12.669 12.048 32.928-0.618 45.251l-44.634-45.869zM326.317 606.675l208 202.384-44.634 45.872-207.999-202.387 44.633-45.869zM489.683 809.059l208-202.384 44.634 45.869-208 202.387-44.634-45.872z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]},"tags":["ordering-descending"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":126,"id":134,"name":"ordering-descending","prevSize":32,"code":59800,"codes":[59800,59801]},"setIdx":1,"setId":4,"iconIdx":140},{"icon":{"paths":["M512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.752 0-416.001 186.25-416.001 416s186.25 416 416.001 416zM399.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256zM559.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pause-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":128,"id":135,"name":"pause-filled","prevSize":32,"code":59802},"setIdx":1,"setId":4,"iconIdx":141},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352-194.405 0-352.001 157.596-352.001 352s157.596 352 352.001 352c194.403 0 352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416-229.752 0-416.001-186.25-416.001-416s186.25-416 416.001-416c229.75 0 416 186.25 416 416zM399.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32zM559.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pause"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":129,"id":136,"name":"pause","prevSize":32,"code":59803},"setIdx":1,"setId":4,"iconIdx":142},{"icon":{"paths":["M825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672zM575.613 569.069l-44.707 44.707c7.846 5.904 15.846 11.453 23.533 16.016 9.2 5.459 22.838 12.579 36.973 13.222 16.224 0.736 31.446-5.302 42.47-10.976 11.741-6.042 22.79-13.824 31.744-20.944 1.053-0.838 2.134-1.232 2.883-1.341 0.403-0.061 0.611-0.032 0.688-0.013l121.094 59.075c-5.578 29.331-20.381 66.771-42.39 92.621-11.229 13.187-23.197 22.038-35.389 26.32-11.597 4.074-25.402 4.762-42.653-1.677-48.422-18.070-103.405-53.152-151.69-89.261-14.026-10.49-27.299-20.922-39.469-30.842l-44.387 44.39c14.186 11.683 29.84 24.061 46.445 36.48 49.808 37.248 110.448 76.56 167.261 97.76 30.275 11.299 59.149 11.238 85.197 2.086 25.45-8.938 46.090-25.786 62.246-44.755 31.866-37.424 50.634-88.144 57.059-126.246 4.72-27.987-11.776-51.77-33.136-62.192l-122.81-59.91c-24.41-11.907-51.462-6-69.834 8.611-7.008 5.571-14.544 10.739-21.443 14.291-5.574 2.867-8.931 3.741-10.314 4.003l-0.093-0.038c-0.992-0.4-3.731-1.514-8.57-4.387-3.277-1.942-6.87-4.301-10.71-7.002zM313.636 589.683l44.389-44.387c-9.92-12.17-20.349-25.44-30.838-39.466-36.109-48.285-71.192-103.267-89.263-151.69-6.437-17.251-5.748-31.056-1.675-42.652 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.291-36.814 92.622-42.392l59.075 121.095c0.019 0.077 0.048 0.285-0.013 0.688-0.109 0.752-0.502 1.83-1.341 2.883-7.12 8.954-14.902 20.003-20.944 31.744-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.134 7.763 27.773 13.222 36.973 4.563 7.686 10.109 15.683 16.013 23.53l44.707-44.707c-2.701-3.837-5.056-7.434-7.002-10.707-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.739 4.006-10.314 3.552-6.899 8.72-14.435 14.291-21.443 14.611-18.371 20.518-45.424 8.611-69.834l-59.91-122.809c-10.422-21.362-34.205-37.856-62.192-33.137-38.103 6.425-88.824 25.194-126.246 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.921 2.087 85.196 21.202 56.813 60.513 117.453 97.761 167.261 12.417 16.605 24.795 32.256 36.478 46.442z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":130,"id":137,"name":"phone-disabled","prevSize":32,"code":59804},"setIdx":1,"setId":4,"iconIdx":143},{"icon":{"paths":["M801.123 657.59c22.474 7.734 50.954 2.582 67.408-20.544 22.4-31.488 44.992-80.624 48.922-129.619 1.99-24.838-0.691-51.344-12.368-75.661-11.949-24.89-32.32-45.35-61.718-58.768-55.165-25.181-125.84-40.262-187.398-49.146-61.946-8.936-117.494-11.98-143.965-11.98v62.469c23.2 0 75.757 2.787 135.043 11.341 59.677 8.611 123.36 22.682 170.381 44.144 16.749 7.645 26.022 17.894 31.344 28.973 5.59 11.651 7.795 26.371 6.413 43.635-2.717 33.843-18.723 70.784-35.52 95.469l-127.398-43.853c-0.067-0.042-0.237-0.17-0.48-0.496-0.451-0.608-0.934-1.651-1.088-2.989-1.296-11.363-3.606-24.678-7.635-37.254-3.786-11.808-10.278-26.842-22.272-37.792-10.451-9.539-25.126-14.15-35.494-16.794-11.914-3.040-25.568-5.181-38.944-6.717-26.858-3.088-55.773-4.093-74.352-4.093v62.47c16.902 0 43.338 0.938 67.219 3.683 11.99 1.379 22.554 3.123 30.64 5.187 5.45 1.389 8.173 2.541 9.162 2.957l0.093 0.038c0.79 1.165 2.544 4.154 4.458 10.125 2.368 7.392 4.045 16.374 5.059 25.267 2.659 23.325 17.61 46.63 43.29 55.469l129.203 44.477zM222.875 657.584c-22.474 7.738-50.954 2.586-67.407-20.544-22.4-31.485-44.993-80.621-48.922-129.616-1.992-24.838 0.691-51.344 12.366-75.664 11.949-24.886 32.321-45.347 61.719-58.765 55.165-25.181 125.841-40.262 187.4-49.146 61.946-8.937 117.494-11.98 143.965-11.98v62.47c-23.2 0-75.757 2.787-135.046 11.341-59.674 8.608-123.358 22.682-170.378 44.144-16.748 7.645-26.024 17.894-31.343 28.973-5.593 11.651-7.797 26.371-6.412 43.635 2.714 33.843 18.721 70.784 35.518 95.469l127.4-43.856c0.067-0.038 0.234-0.166 0.477-0.493 0.454-0.611 0.938-1.651 1.091-2.989 1.296-11.363 3.606-24.682 7.635-37.254 3.786-11.808 10.275-26.842 22.272-37.792 10.448-9.542 25.126-14.15 35.491-16.794 11.917-3.040 25.568-5.181 38.947-6.717 26.858-3.088 55.77-4.093 74.349-4.093v62.47c-16.899 0-43.338 0.938-67.216 3.683-11.99 1.376-22.554 3.123-30.64 5.187-5.453 1.389-8.176 2.541-9.162 2.957l-0.093 0.038c-0.79 1.162-2.547 4.154-4.458 10.125-2.371 7.389-4.045 16.371-5.059 25.267-2.659 23.322-17.61 46.627-43.293 55.469l-129.202 44.474z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone-end"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":131,"id":138,"name":"phone-end","prevSize":32,"code":59805},"setIdx":1,"setId":4,"iconIdx":144},{"icon":{"paths":["M410.502 204.616c-10.419-21.362-34.202-37.856-62.189-33.137-38.104 6.425-88.825 25.194-126.247 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.919 2.087 85.195 21.202 56.816 60.513 117.456 97.761 167.264 37.482 50.122 74.609 91.552 93.329 110.269l44.173-44.173c-16.406-16.403-51.6-55.536-87.472-103.51-36.11-48.285-71.192-103.264-89.264-151.69-6.437-17.248-5.748-31.056-1.675-42.651 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.292-36.814 92.623-42.392l59.075 121.097c0.019 0.074 0.045 0.285-0.013 0.688-0.112 0.749-0.502 1.827-1.344 2.883-7.117 8.95-14.899 20-20.941 31.741-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.138 7.76 27.773 13.222 36.973 6.275 10.576 14.416 21.741 22.79 32.291 16.806 21.171 36.541 42.326 49.68 55.466l44.173-44.173c-11.952-11.952-29.981-31.309-44.928-50.134-7.504-9.453-13.738-18.157-17.997-25.334-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.736 4.006-10.31 3.552-6.902 8.717-14.438 14.291-21.443 14.611-18.374 20.518-45.424 8.611-69.837l-59.914-122.808zM819.386 613.504c21.36 10.419 37.856 34.202 33.136 62.189-6.426 38.106-25.194 88.826-57.059 126.246-16.157 18.973-36.797 35.818-62.246 44.758-26.048 9.149-54.922 9.21-85.197-2.086-56.813-21.203-117.453-60.515-167.261-97.763-50.122-37.482-91.555-74.608-110.272-93.328l44.173-44.173c16.403 16.406 55.539 51.6 103.51 87.472 48.285 36.109 103.267 71.194 151.69 89.264 17.248 6.435 31.056 5.747 42.653 1.674 12.192-4.282 24.16-13.133 35.386-26.317 22.013-25.85 36.816-63.293 42.394-92.624l-121.094-59.075c-0.077-0.019-0.288-0.048-0.688 0.013-0.752 0.112-1.83 0.502-2.886 1.344-8.95 7.117-20 14.899-31.741 20.941-11.024 5.674-26.246 11.715-42.47 10.976-14.134-0.643-27.773-7.76-36.973-13.222-10.576-6.275-21.741-14.416-32.288-22.79-21.174-16.806-42.33-36.541-55.469-49.68l44.173-44.173c11.952 11.952 31.309 29.981 50.134 44.928 9.453 7.504 18.16 13.738 25.334 17.997 4.838 2.87 7.578 3.984 8.57 4.387l0.093 0.038c1.382-0.266 4.739-1.139 10.314-4.006 6.899-3.552 14.435-8.717 21.44-14.291 18.374-14.611 45.427-20.518 69.837-8.611l122.81 59.914z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":68,"id":139,"name":"phone","prevSize":32,"code":59806},"setIdx":1,"setId":4,"iconIdx":145},{"icon":{"paths":["M512.608 128.019c-72.378-1.376-144.906 25.78-199.307 80.524-54.654 54.999-89.301 136.056-89.301 239.464 0 80.234 44.5 174.87 97.546 252.806 53.066 77.965 120.829 148.157 176.141 175.821l15.194 7.6 14.81-8.326c217.158-122.154 272.31-333.882 272.31-427.898 0-101.731-27.923-181.776-80.179-236.932-52.346-55.248-125.296-81.503-207.213-83.060zM288 448.006c0-88.589 29.353-152.745 70.698-194.351 41.6-41.862 97.072-62.705 152.694-61.648 68.992 1.311 124.038 23.054 161.968 63.088 38.019 40.126 62.64 102.649 62.64 192.914 0 74.55-44.691 253.677-224.176 363.030-39.683-25.61-92.186-79.853-137.37-146.237-50.954-74.864-86.454-156.221-86.454-216.797zM544 416c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32zM608 416c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.021 42.979-96 96-96s96 42.979 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pin-map"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":69,"id":140,"name":"pin-map","prevSize":32,"code":59807},"setIdx":1,"setId":4,"iconIdx":146},{"icon":{"paths":["M428.346 199.399c17.542-17.543 45.984-17.543 63.53 0 17.542 17.543 17.542 45.986 0 63.53l-43.661 43.659 177.83 177.828 60.339-60.339c24.992-24.995 65.517-24.995 90.509 0l45.254 45.254-331.869 331.869-45.254-45.254c-24.992-24.995-24.992-65.517 0-90.509l60.339-60.339-177.827-177.83-43.661 43.661c-17.543 17.542-45.987 17.542-63.53 0s-17.543-45.987 0-63.53l208.001-207.999zM175.090 362.144c-42.537 42.538-42.537 111.501 0 154.038 42.001 42.003 109.771 42.531 152.42 1.587l87.334 87.334-15.075 15.075c-49.987 49.987-49.987 131.034 0 181.021l67.882 67.882c12.496 12.496 32.758 12.496 45.254 0l167.936-167.933 88.013 92.003c12.218 12.771 32.474 13.219 45.245 1.002 12.771-12.214 13.219-32.47 1.002-45.242l-88.995-93.030 163.923-163.923c12.499-12.496 12.499-32.758 0-45.254l-67.882-67.882c-49.987-49.987-131.030-49.987-181.018 0l-15.907 15.907-87.325-87.323c41.766-42.596 41.51-110.983-0.768-153.262-42.538-42.537-111.504-42.537-154.042 0l-207.998 208z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pin"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":70,"id":141,"name":"pin","prevSize":32,"code":59808},"setIdx":1,"setId":4,"iconIdx":147},{"icon":{"paths":["M513.354 160c17.674 0 32 13.133 32 29.333v645.332c0 16.202-14.326 29.334-32 29.334s-32-13.133-32-29.334v-645.332c0-16.2 14.326-29.333 32-29.333z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["Pipe"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":71,"id":142,"name":"Pipe","prevSize":32,"code":59809},"setIdx":1,"setId":4,"iconIdx":148},{"icon":{"paths":["M512 928.003c229.75 0 416-186.25 416-416s-186.25-415.999-416-415.999c-229.75 0-416 186.25-416 415.999s186.25 416 416 416zM451.846 357.19l195.258 136.768c14.205 9.952 18.496 30.874 9.578 46.73-2.429 4.323-5.706 7.978-9.578 10.691l-195.258 136.768c-14.205 9.952-32.95 5.165-41.866-10.691-3.037-5.398-4.646-11.645-4.646-18.019v-273.536c0-18.72 13.597-33.894 30.368-33.894 5.712 0 11.309 1.795 16.144 5.184z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["play-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":72,"id":143,"name":"play-filled","prevSize":32,"code":59810},"setIdx":1,"setId":4,"iconIdx":149},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM451.85 357.187l195.254 136.768c14.208 9.949 18.496 30.87 9.581 46.726-2.432 4.326-5.706 7.981-9.581 10.694l-195.254 136.768c-14.208 9.952-32.954 5.165-41.869-10.694-3.037-5.398-4.646-11.642-4.646-18.016v-273.536c0-18.723 13.597-33.898 30.371-33.898 5.709 0 11.306 1.798 16.144 5.187z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["play"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":73,"id":144,"name":"play","prevSize":32,"code":59811},"setIdx":1,"setId":4,"iconIdx":150},{"icon":{"paths":["M325.686 430.88l224.49 224.49-126.118 126.118-224.491-224.49 126.12-126.118zM370.941 385.626l192.115-192.117 224.49 224.491-192.115 192.115-224.49-224.49zM585.683 125.627c-12.496-12.497-32.758-12.497-45.254 0l-408.745 408.745c-12.497 12.496-12.497 32.758 0 45.254l269.746 269.747c5.229 5.229 11.818 8.269 18.63 9.123v0.067h0.57c2.278 0.243 4.576 0.243 6.851 0h440.579c17.674 0 32-14.33 32-32 0-17.674-14.326-32.003-32-32.003h-366.566l353.936-353.933c12.496-12.496 12.496-32.758 0-45.254l-269.747-269.746z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["prune"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":77,"id":148,"name":"prune","prevSize":32,"code":59817},"setIdx":1,"setId":4,"iconIdx":154},{"icon":{"paths":["M230.486 636.688c-14.92-9.472-34.694-5.056-44.167 9.862-9.473 14.922-5.057 34.694 9.862 44.166l298.666 189.632c10.47 6.646 23.837 6.646 34.304 0l298.669-189.632c14.918-9.472 19.334-29.245 9.862-44.166-9.475-14.918-29.248-19.334-44.166-9.862l-281.517 178.739-281.514-178.739zM186.319 494.848c9.473-14.922 29.247-19.334 44.167-9.862l281.514 178.739 281.517-178.739c14.918-9.472 34.691-5.059 44.166 9.862 9.472 14.918 5.056 34.694-9.862 44.166l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-14.92-9.472-19.335-29.248-9.862-44.166zM529.152 143.657l298.669 189.629c9.245 5.872 14.848 16.064 14.848 27.014 0 10.954-5.603 21.146-14.848 27.014l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-9.246-5.869-14.848-16.061-14.848-27.014 0-10.95 5.602-21.142 14.848-27.014l298.666-189.629c10.47-6.647 23.837-6.647 34.304 0zM273.035 360.301l238.965 151.725 238.966-151.725-238.966-151.724-238.965 151.724z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":78,"id":149,"name":"queue","prevSize":32,"code":59818},"setIdx":1,"setId":4,"iconIdx":155},{"icon":{"paths":["M161.352 800c-11.706 0-22.477-6.39-28.087-16.666s-5.161-22.79 1.169-32.64l112.304-174.694h-69.387c-17.673 0-32-14.326-32-32v-288c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-143.999 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM332.269 561.306l-112.304 174.694h51.916l129.469-201.398v-246.602h-191.999v224h96c11.706 0 22.479 6.39 28.085 16.666 5.61 10.275 5.162 22.79-1.168 32.64zM577.35 800c-11.706 0-22.477-6.39-28.086-16.666s-5.162-22.79 1.171-32.64l112.304-174.694h-69.389c-17.67 0-32-14.326-32-32v-288c0-17.673 14.33-32 32-32h256c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-144 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM748.269 561.306l-112.304 174.694h51.917l129.469-201.398v-246.602h-192v224h96c11.706 0 22.48 6.39 28.086 16.666 5.61 10.275 5.162 22.79-1.168 32.64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["quote"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":79,"id":150,"name":"quote","prevSize":32,"code":59819},"setIdx":1,"setId":4,"iconIdx":156},{"icon":{"paths":["M800 560c0 176.73-143.27 320-320 320-176.731 0-320-143.27-320-320s143.269-320 320-320v-64c-212.077 0-384 171.923-384 384s171.923 384 384 384c212.077 0 384-171.923 384-384 0-10.778-0.445-21.45-1.315-32h-64.266c1.046 10.525 1.581 21.2 1.581 32zM800 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v112h-112c-17.674 0-32 14.327-32 32s14.326 32 32 32h112v112c0 17.674 14.326 32 32 32s32-14.326 32-32v-112h112c17.674 0 32-14.327 32-32s-14.326-32-32-32h-112v-112zM384 528c35.347 0 64-28.653 64-64s-28.653-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64zM640 464c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64zM329.805 605.075c-10.451-14.25-30.477-17.331-44.728-6.88s-17.333 30.477-6.882 44.73c37.658 51.35 77.754 84.624 119.178 102.662 41.741 18.179 82.797 19.99 120.362 11.651 73.469-16.307 132.211-70.87 164.070-114.314 10.451-14.253 7.37-34.278-6.88-44.73-14.253-10.451-34.278-7.37-44.73 6.88-26.81 36.557-73.664 77.994-126.33 89.686-25.501 5.661-52.643 4.474-80.938-7.85-28.608-12.461-60.381-37.187-93.123-81.837z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["reaction-add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":132,"id":151,"name":"reaction-add","prevSize":32,"code":59820},"setIdx":1,"setId":4,"iconIdx":157},{"icon":{"paths":["M832 512c0-176.73-143.27-320-320-320s-320 143.27-320 320c0 176.73 143.27 320 320 320s320-143.27 320-320zM896 512c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384s384 171.923 384 384zM512 704c-106.038 0-192-85.962-192-192s85.962-192 192-192c106.038 0 192 85.962 192 192s-85.962 192-192 192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["record"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":133,"id":152,"name":"record","prevSize":32,"code":59821},"setIdx":1,"setId":4,"iconIdx":158},{"icon":{"paths":["M896 512h-63.984c0-175.414-145.754-320-328.518-320-115.27 0-215.818 57.513-274.362 144h110.768c17.674 0 32 14.326 32 32s-14.326 32-32 32h-179.904c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v102.32c71.751-91.401 184.589-150.32 311.498-150.32 216.781 0 392.502 171.923 392.502 384 0 1.114 0.010 2.227 0 3.338v-3.338z","M127.997 512h63.986c0 175.414 145.751 320 328.519 320 115.27 0 215.818-57.514 274.358-144h-110.768c-17.67 0-32-14.326-32-32s14.33-32 32-32h179.907c17.67 0 32 14.326 32 32v192c0 17.674-14.33 32-32 32-17.674 0-32-14.326-32-32v-102.32c-71.754 91.402-184.592 150.32-311.498 150.32-216.782 0-392.505-171.923-392.505-384 0-1.082-0.009-2.166 0-3.245v3.245z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["refresh"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":134,"id":153,"name":"refresh","prevSize":32,"code":59822},"setIdx":1,"setId":4,"iconIdx":159},{"icon":{"paths":["M713.718 450.362c0-142.689-115.824-258.362-258.701-258.362-142.878 0-258.704 115.673-258.704 258.362 0 142.691 115.826 258.365 258.704 258.365 142.877 0 258.701-115.674 258.701-258.365zM659.302 699.965c-55.645 45.475-126.774 72.762-204.285 72.762-178.271 0-322.788-144.326-322.788-322.365 0-178.035 144.517-322.362 322.788-322.362 178.269 0 322.787 144.327 322.787 322.362 0 77.408-27.318 148.442-72.854 204.013l186.838 186.592c12.608 12.589 12.608 33.002 0 45.59-12.605 12.589-33.043 12.589-45.648 0l-186.838-186.592z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["search"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":136,"id":154,"name":"search","prevSize":32,"code":59823},"setIdx":1,"setId":4,"iconIdx":160},{"icon":{"paths":["M891.494 238.96l-297.475 637.446c-16.854 36.115-69.622 31.459-79.891-7.050l-66-247.498 151.248-189.059-219.994 109.997-226.833-113.418c-35.43-17.715-29.696-69.949 8.733-79.555l681.197-170.3c34.842-8.71 64.202 26.892 49.014 59.436z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["send-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":137,"id":155,"name":"send-filled","prevSize":32,"code":59824},"setIdx":1,"setId":4,"iconIdx":161},{"icon":{"paths":["M878.022 192.974c7.85 9.521 9.526 22.708 4.31 33.891l-298.669 640.002c-5.69 12.195-18.403 19.526-31.811 18.342-13.405-1.184-24.637-10.627-28.106-23.632l-81.619-306.070-285.772-142.886c-11.978-5.987-18.959-18.8-17.498-32.112s11.056-24.307 24.048-27.552l682.665-170.668c11.974-2.993 24.598 1.165 32.451 10.686zM505.821 545.968l57.082 214.051 233.027-499.35-533.58 133.395 203.606 101.802 69.51-52.131c14.141-10.605 34.198-7.741 44.8 6.4 10.605 14.138 7.741 34.195-6.4 44.8l-68.045 51.034z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["send"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":138,"id":156,"name":"send","prevSize":32,"code":59825},"setIdx":1,"setId":4,"iconIdx":162},{"icon":{"paths":["M421.334 256c0-44.183-35.818-80-80-80s-80 35.817-80 80c0 44.183 35.817 80 80 80s80-35.817 80-80zM465.302 288c-14.211 55.206-64.326 96-123.968 96-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.327-32-32s14.327-32 32-32h89.367c14.209-55.207 64.324-96 123.968-96 59.642 0 109.757 40.793 123.968 96h430.698c17.674 0 32 14.327 32 32s-14.326 32-32 32h-430.698zM96 768c0-17.674 14.327-32 32-32h89.367c14.209-55.206 64.324-96 123.968-96 60.781 0 111.67 42.365 124.742 99.181 4.208-2.038 8.934-3.181 13.923-3.181h416c17.674 0 32 14.326 32 32s-14.326 32-32 32h-416c-4.989 0-9.715-1.142-13.923-3.181-13.072 56.816-63.962 99.181-124.742 99.181-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.326-32-32zM341.334 848c44.182 0 80-35.818 80-80s-35.818-80-80-80c-44.183 0-80 35.818-80 80s35.817 80 80 80zM796.029 543.757c-14.122 55.331-64.298 96.243-124.029 96.243s-109.904-40.912-124.029-96.243c-1.302 0.16-2.627 0.243-3.971 0.243h-416c-17.673 0-32-14.326-32-32s14.327-32 32-32h416c1.344 0 2.669 0.083 3.971 0.243 14.125-55.331 64.298-96.243 124.029-96.243s109.907 40.912 124.029 96.243c1.302-0.16 2.627-0.243 3.971-0.243h96c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96c-1.344 0-2.669-0.083-3.971-0.243zM752 512c0-44.182-35.818-80-80-80s-80 35.818-80 80c0 44.182 35.818 80 80 80s80-35.818 80-80z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["settings"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":139,"id":157,"name":"settings","prevSize":32,"code":59826},"setIdx":1,"setId":4,"iconIdx":163},{"icon":{"paths":["M690.176 301.708c11.645-11.977 11.645-31.396 0-43.374l-149.091-153.351c-11.645-11.977-30.525-11.977-42.17 0l-149.091 153.351c-11.645 11.977-11.645 31.397 0 43.374s30.525 11.978 42.17 0l98.189-100.993v401.343c0 16.938 13.35 30.669 29.818 30.669s29.818-13.731 29.818-30.669v-401.343l98.189 100.993c11.645 11.978 30.525 11.978 42.17 0z","M221.818 379.274h149.091v59.635h-119.272v387.635h536.728v-387.635h-119.274v-59.635h149.091c16.467 0 29.818 13.35 29.818 29.818v447.274c0 16.467-13.35 29.818-29.818 29.818h-596.364c-16.468 0-29.818-13.35-29.818-29.818v-447.274c0-16.467 13.35-29.818 29.818-29.818z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["share"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":244,"id":158,"name":"share","prevSize":32,"code":59827},"setIdx":1,"setId":4,"iconIdx":164},{"icon":{"paths":["M664.083 405.072c11.638-13.299 10.288-33.517-3.011-45.155s-33.517-10.288-45.155 3.011l-125.251 143.142-39.917-45.619c-11.638-13.299-31.853-14.646-45.155-3.011-13.299 11.638-14.646 31.856-3.008 45.155l64 73.142c6.077 6.944 14.854 10.928 24.080 10.928 9.229 0 18.006-3.984 24.083-10.928l149.334-170.666z","M541.99 143.050c-12.854-3.634-26.448-3.753-39.363-0.345l-264.724 69.849c-29.793 7.861-52.548 33.743-54.753 65.633-23.589 341.205 187.752 520.29 276.51 579.794 33.136 22.211 75.363 22.144 108.416-0.259 88.218-59.792 297.117-239.072 272.611-580.214-2.25-31.321-24.339-56.895-53.504-65.14l-245.194-69.318zM518.957 204.587c1.843-0.487 3.786-0.47 5.622 0.049l245.194 69.318c4.294 1.214 6.838 4.781 7.082 8.139 22.15 308.362-165.306 468.851-244.685 522.65-11.437 7.754-25.363 7.792-36.87 0.077-80.086-53.686-269.606-214.054-248.301-522.218 0.234-3.389 2.833-7.004 7.233-8.164l264.725-69.849z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["shield-check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":80,"id":159,"name":"shield-check","prevSize":32,"code":59828},"setIdx":1,"setId":4,"iconIdx":165},{"icon":{"paths":["M513.302 142.705c12.915-3.408 26.509-3.289 39.36 0.345l245.197 69.318c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.142-184.397 520.422-272.611 580.214-33.053 22.403-75.28 22.47-108.416 0.259-88.762-59.504-300.101-238.589-276.511-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.725-69.849zM535.251 204.637c-1.834-0.519-3.776-0.536-5.622-0.050l-264.723 69.849c-4.4 1.161-6.999 4.775-7.234 8.164-21.305 308.164 168.216 468.532 248.299 522.218 11.507 7.715 25.434 7.677 36.874-0.077 79.379-53.798 266.832-214.288 244.682-522.65-0.24-3.358-2.784-6.925-7.078-8.139l-245.197-69.317z","M490.672 337.334c-19.76 4.672-47.245 12.31-81.149 24.554 20.81 108.771 53.219 187.014 81.149 238.832v-263.386zM492.867 271.316c33.77-6.898 61.805 19.742 61.805 51.125v360.963c0 17.024-10.333 31.747-25.642 37.52-15.67 5.91-33.779 1.331-44.861-12.675-32.656-41.267-106.323-152.95-141.19-354.563-3.242-18.746 7.066-37.695 25.328-44.726 56.186-21.63 99.094-32.442 124.56-37.644z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["shield"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":81,"id":160,"name":"shield-alt","prevSize":32,"code":59829},"setIdx":1,"setId":4,"iconIdx":166},{"icon":{"paths":["M778.64 213.336c-17.674 0-32 14.327-32 32v533.333c0 17.674 14.326 32 32 32s32-14.326 32-32v-533.333c0-17.673-14.326-32-32-32z","M600.87 341.334c-17.674 0-32 14.33-32 32v405.334c0 17.674 14.326 32 32 32s32-14.326 32-32v-405.334c0-17.67-14.326-32-32-32z","M423.104 810.669c-17.674 0-32-14.326-32-32v-277.334c0-17.67 14.326-32 32-32 17.67 0 32 14.33 32 32v277.334c0 17.674-14.33 32-32 32z","M245.333 597.334c-17.673 0-32 14.33-32 32v149.334c0 17.674 14.327 32 32 32s32-14.326 32-32v-149.334c0-17.67-14.327-32-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["signal"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":82,"id":161,"name":"signal","prevSize":32,"code":59830},"setIdx":1,"setId":4,"iconIdx":167},{"icon":{"paths":["M289.362 192c13.364 0 25.321 8.305 29.987 20.829l96.001 257.699c6.17 16.56-2.256 34.986-18.816 41.155-16.563 6.17-34.989-2.253-41.158-18.816l-20.477-54.963h-91.074l-20.476 54.963c-6.17 16.563-24.597 24.986-41.158 18.816s-24.986-24.595-18.816-41.155l96-257.699c4.666-12.524 16.622-20.829 29.987-20.829zM311.058 373.904l-21.695-58.238-21.695 58.238h43.391z","M522.131 626.435c-12.154 12.829-11.606 33.082 1.222 45.238l160 151.587c12.342 11.693 31.674 11.693 44.016 0l160-151.587c12.832-12.157 13.376-32.41 1.222-45.238s-32.41-13.376-45.238-1.222l-105.99 100.419v-501.632c0-17.673-14.326-32-32-32s-32 14.327-32 32v501.632l-105.994-100.419c-12.829-12.154-33.082-11.606-45.238 1.222z","M193.362 570.947c-17.673 0-32 14.326-32 32 0 17.67 14.327 32 32 32h116.145l-139.065 142.73c-8.979 9.216-11.565 22.915-6.564 34.771 5.001 11.853 16.617 19.562 29.484 19.562h192.001c17.674 0 32-14.326 32-32s-14.326-32-32-32h-116.146l139.064-142.733c8.979-9.216 11.565-22.915 6.563-34.768-4.998-11.856-16.614-19.562-29.482-19.562h-192.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["sort-az"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":83,"id":162,"name":"sort-az","prevSize":32,"code":59831},"setIdx":1,"setId":4,"iconIdx":168},{"icon":{"paths":["M919.258 667.229c12.605-12.253 12.877-32.394 0.605-44.982-12.269-12.589-32.435-12.858-45.040-0.605l-106.112 103.155v-500.8c0-17.568-14.259-31.81-31.853-31.81-17.59 0-31.85 14.242-31.85 31.81v500.8l-106.115-103.155c-12.605-12.253-32.768-11.984-45.040 0.605-12.269 12.589-11.997 32.73 0.608 44.982l160.179 155.718c12.368 12.019 32.070 12.019 44.435 0l160.182-155.718zM560.659 333.667c17.59 0 31.85-14.243 31.85-31.811s-14.259-31.809-31.85-31.809h-432.49c-17.591 0-31.852 14.242-31.852 31.809s14.26 31.811 31.852 31.811h432.49zM464.55 536.099c17.59 0 31.85-14.243 31.85-31.811 0-17.565-14.259-31.808-31.85-31.808h-336.381c-17.591 0-31.852 14.24-31.852 31.808s14.26 31.811 31.852 31.811h336.381zM384.458 722.96c17.594 0 31.853-14.24 31.853-31.808s-14.259-31.811-31.853-31.811h-256.289c-17.591 0-31.852 14.243-31.852 31.811s14.26 31.808 31.852 31.808h256.289z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["sort"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":84,"id":163,"name":"sort","prevSize":32,"code":59832},"setIdx":1,"setId":4,"iconIdx":169},{"icon":{"paths":["M593.939 170.244c-20.867-57.726-103.155-55.816-121.322 2.815l-58.976 190.348h-221.513c-58.947 0-86.549 72.944-42.37 111.968l157.591 139.206-53.209 216.928c-14.17 57.77 51.25 101.936 99.533 67.197l177.741-127.875 177.741 127.875c48.285 34.739 113.706-9.427 99.536-67.197l-53.386-217.651 147.888-139.968c42.032-39.779 13.878-110.483-43.99-110.483h-195.443l-69.821-193.164z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["star-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":85,"id":164,"name":"star-filled","prevSize":32,"code":59833},"setIdx":1,"setId":4,"iconIdx":170},{"icon":{"paths":["M472.618 173.508c18.166-58.554 100.454-60.461 121.322-2.812l69.821 192.91h195.44c57.872 0 86.026 70.611 43.994 110.336l-147.888 139.782 53.386 217.363c14.17 57.696-51.251 101.805-99.536 67.11l-177.741-127.709-177.741 127.709c-48.283 34.691-113.703-9.414-99.533-67.11l53.209-216.64-157.591-139.024c-44.179-38.973-16.577-111.818 42.37-111.818h221.513l58.976-190.098zM603.574 385.334l-69.824-192.91-58.976 190.098c-8.304 26.758-33.085 45.002-61.133 45.002h-221.513l157.59 139.021c17.837 15.731 25.456 40.048 19.789 63.13l-53.209 216.643 177.74-127.709c22.33-16.045 52.426-16.045 74.755 0l177.738 127.709-53.386-217.363c-5.478-22.317 1.456-45.856 18.166-61.648l147.888-139.782h-195.44c-26.957 0-51.024-16.87-60.186-42.189z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["star"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":86,"id":165,"name":"star","prevSize":32,"code":59834},"setIdx":1,"setId":4,"iconIdx":171},{"icon":{"paths":["M499.952 539.082c2.714 0.819 5.462 1.629 8.25 2.429 45.341 13.12 76.643 26.47 93.904 40.048 17.264 13.35 25.894 32.339 25.894 56.966s-9.322 44.074-27.965 58.346c-18.643 14.269-45.456 21.405-80.442 21.405-37.514 0-67.552-8.749-90.106-26.24-15.216-12.077-25.245-27.094-30.090-45.050-3.942-14.605-15.664-27.104-30.794-27.104h-11.843c-15.13 0-27.722 12.378-24.893 27.242 3.514 18.47 10.736 35.514 21.667 51.126 16.339 23.018 39.472 41.2 69.392 54.547 29.92 13.12 62.144 19.68 96.666 19.68 53.168 0 95.632-12.198 127.395-36.595 31.76-24.627 47.642-57.309 47.642-98.048 0-25.549-5.754-47.757-17.261-66.63-6.947-11.626-16.25-22.33-27.91-32.122h99.962c15.13 0 27.395-12.266 27.395-27.395s-12.266-27.392-27.395-27.392h-217.398c-1.709-0.493-3.437-0.986-5.178-1.472-41.658-11.738-71.235-24.627-88.726-38.669-17.261-14.269-25.894-31.645-25.894-52.131 0-25.546 9.091-45.456 27.277-59.725 18.41-14.5 43.958-21.75 76.64-21.75 35.216 0 62.49 8.746 81.824 26.24 13.139 11.731 21.814 26.496 26.022 44.288 3.485 14.723 15.242 27.174 30.371 27.174h11.84c15.13 0 27.702-12.374 24.88-27.238-3.331-17.552-9.974-34.134-19.923-49.75-14.733-23.475-35.677-41.888-62.835-55.237-26.928-13.349-57.654-20.024-92.179-20.024-50.634 0-91.834 13.004-123.594 39.012-31.533 25.779-47.299 58.46-47.299 98.047 0 34.986 12.89 64.445 38.669 88.381 1.050 0.957 2.125 1.907 3.222 2.854h-112.56c-15.13 0-27.395 12.262-27.395 27.392s12.265 27.395 27.395 27.395h225.373z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["strike"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":94,"id":166,"name":"strike","prevSize":32,"code":59846},"setIdx":1,"setId":4,"iconIdx":172},{"icon":{"paths":["M481.35 117.336c0-17.673 14.326-32 32-32s32 14.327 32 32v106.667c0 17.673-14.326 32-32 32s-32-14.327-32-32v-106.667zM771.392 214.631c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-75.411 75.413c-12.499 12.496-32.758 12.496-45.254 0-12.499-12.496-12.499-32.759 0-45.255l75.411-75.412zM336.73 694.63c-12.499-12.496-32.759-12.496-45.256 0l-75.495 75.498c-12.497 12.496-12.497 32.755 0 45.254 12.497 12.496 32.758 12.496 45.255 0l75.496-75.498c12.496-12.496 12.496-32.755 0-45.254zM481.35 800.003c0-17.674 14.326-32 32-32s32 14.326 32 32v106.669c0 17.67-14.326 32-32 32s-32-14.33-32-32v-106.669zM213.352 212.001c-12.497 12.497-12.497 32.758 0 45.255l75.349 75.348c12.497 12.496 32.758 12.496 45.254 0 12.499-12.496 12.496-32.757 0-45.254l-75.348-75.349c-12.497-12.497-32.758-12.497-45.255 0zM695.978 739.885c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.254 0l75.331 75.328c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-75.328-75.328zM87.751 512.003c0 17.674 14.327 32 32 32h106.667c17.673 0 32-14.326 32-32s-14.327-32-32-32h-106.667c-17.673 0-32 14.326-32 32zM801.35 544.003c-17.674 0-32-14.326-32-32s14.326-32 32-32h106.669c17.67 0 32 14.326 32 32s-14.33 32-32 32h-106.669zM668.17 512c0-85.504-69.315-154.816-154.819-154.816-85.507 0-154.819 69.312-154.819 154.816 0 85.507 69.312 154.819 154.819 154.819 85.504 0 154.819-69.312 154.819-154.819zM726.682 512c0 117.821-95.51 213.334-213.331 213.334s-213.335-95.514-213.335-213.334c0-117.821 95.514-213.332 213.335-213.332s213.331 95.511 213.331 213.332z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["sun"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":95,"id":167,"name":"sun","prevSize":32,"code":59847},"setIdx":1,"setId":4,"iconIdx":173},{"icon":{"paths":["M930.704 512c0 229.75-186.25 416-416 416s-415.999-186.25-415.999-416c0-229.75 186.25-416 415.999-416s416 186.25 416 416zM570.49 859.603l-41.827-156.102c-4.611 0.33-9.264 0.499-13.958 0.499-4.57 0-9.101-0.16-13.594-0.474l-41.837 156.134c18.058 2.854 36.573 4.339 55.43 4.339 18.986 0 37.616-1.504 55.786-4.397zM438.893 688.451c-47.549-20.454-85.181-59.571-103.674-108.125l-155.029 41.539c33.968 103.485 114.617 185.805 217.045 222.058l41.658-155.472zM162.705 512c0 16.090 1.080 31.926 3.17 47.443l156.906-42.042c-0.051-1.795-0.077-3.594-0.077-5.402 0-4.909 0.186-9.776 0.547-14.595l-156.051-41.814c-2.958 18.368-4.496 37.21-4.496 56.41zM396.31 180.407c-99.16 35.408-177.786 114.033-213.196 213.19l155.535 41.677c19.357-44.352 54.982-79.978 99.334-99.331l-41.674-155.536zM514.704 160c-19.197 0-38.035 1.537-56.4 4.494l41.814 156.053c4.813-0.362 9.68-0.547 14.586-0.547 5.030 0 10.019 0.192 14.95 0.573l41.808-156.021c-18.477-2.995-37.437-4.552-56.758-4.552zM632.512 843.802c102.659-36.451 183.392-119.194 217.094-223.12l-154.973-41.526c-18.291 48.982-56.010 88.493-103.786 109.155l41.664 155.491zM863.699 558.198c1.984-15.117 3.005-30.538 3.005-46.198 0-18.771-1.469-37.197-4.298-55.171l-156.157 41.84c0.301 4.406 0.454 8.851 0.454 13.331 0 1.376-0.013 2.752-0.042 4.122l157.037 42.077zM846.714 394.774c-35.165-99.6-113.885-178.641-213.277-214.247l-41.68 155.559c44.582 19.555 80.314 55.565 99.504 100.342l155.453-41.654zM642.704 512c0-70.691-57.306-128-128-128-70.691 0-128 57.309-128 128s57.309 128 128 128c70.694 0 128-57.309 128-128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["support"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":96,"id":168,"name":"support","prevSize":32,"code":59848},"setIdx":1,"setId":4,"iconIdx":174},{"icon":{"paths":["M368 412.982c-53.592 0-96-42.877-96-94.491 0-51.616 42.408-94.491 96-94.491 53.594 0 96 42.876 96 94.491 0 51.614-42.406 94.491-96 94.491zM368 476.982c88.365 0 160-70.96 160-158.491s-71.635-158.491-160-158.491c-88.365 0-160 70.959-160 158.491s71.635 158.491 160 158.491zM713.6 397.133c-35.92 0-64-28.685-64-62.794s28.080-62.792 64-62.792c35.92 0 64 28.684 64 62.792s-28.080 62.794-64 62.794zM713.6 461.133c70.691 0 128-56.768 128-126.794s-57.309-126.792-128-126.792c-70.691 0-128 56.767-128 126.792s57.309 126.794 128 126.794zM197.459 527.267c27.344-8.707 56.67-9.242 84.319-1.539l48.491 13.51c24.205 6.742 49.882 6.275 73.824-1.347l30.099-9.584c29.475-9.386 61.085-9.962 90.89-1.658 67.962 18.934 114.918 80.333 114.918 150.269v91.987c0 52.518-42.979 95.094-96 95.094h-352c-53.019 0-96-42.576-96-95.094v-103.766c0-62.909 40.999-118.621 101.459-137.872zM264.451 586.758c-15.545-4.333-32.034-4.032-47.407 0.864-33.993 10.822-57.044 42.147-57.044 77.517v103.766c0 17.507 14.327 31.699 32 31.699h352c17.674 0 32-14.192 32-31.699v-91.987c0-41.533-27.885-77.997-68.246-89.242-17.699-4.931-36.474-4.589-53.978 0.986l-30.099 9.584c-35.91 11.434-74.426 12.138-110.737 2.019l-48.489-13.507zM691.2 778.717h140.8c53.021 0 96-42.979 96-96v-30.611c0-56.877-38.614-106.49-93.747-120.454-21.398-5.418-43.853-5.040-65.056 1.098l-16.4 4.746c-21.843 6.323-44.973 6.714-67.018 1.13l-29.805-7.549c-19.907-5.043-40.797-4.691-60.522 1.018-1.066 0.31-2.122 0.634-3.174 0.97 10.71 4.048 20.896 9.539 30.253 16.374l2.429 1.776 15.040 13.206c9.939 8.726 18.141 19.248 24.182 31.014l2.208 4.301 3.677 0.931c33.062 8.374 67.76 7.789 100.525-1.693l16.4-4.749c10.282-2.976 21.171-3.158 31.546-0.531 26.736 6.771 45.462 30.832 45.462 58.413v30.611c0 17.674-14.326 32-32 32h-140.8v64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["team"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":97,"id":169,"name":"team","prevSize":32,"code":59849},"setIdx":1,"setId":4,"iconIdx":175},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.642 51.52 146.602 80.998 235.29 90.893 88.611 9.885 186.221 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.941-10.765-2.374-1.514-5.245-3.197-8.672-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.398-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.834 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.12 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.949 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948zM333.952 422.051c0-17.648 14.25-31.955 31.83-31.955h183.008c17.578 0 31.827 14.307 31.827 31.955s-14.25 31.955-31.827 31.955h-183.008c-17.581 0-31.83-14.307-31.83-31.955zM365.782 539.709c-17.581 0-31.83 14.307-31.83 31.955s14.25 31.955 31.83 31.955h224.118c17.578 0 31.827-14.307 31.827-31.955s-14.25-31.955-31.827-31.955h-224.118z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["threads"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":98,"id":170,"name":"threads","prevSize":32,"code":59850},"setIdx":1,"setId":4,"iconIdx":176},{"icon":{"paths":["M353.354 320c0-17.673 14.326-32 32-32h256c17.674 0 32 14.327 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M385.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 448c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M353.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M513.354 544c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M609.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M385.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 704c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M289.353 160h448.001c35.344 0 64 28.654 64 64v576c0 35.347-28.656 64-64 64h-448.001c-35.346 0-64-28.653-64-64v-576c0-35.346 28.654-64 64-64zM289.353 224v576h448.001v-576h-448.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["total"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":99,"id":171,"name":"total","prevSize":32,"code":59851},"setIdx":1,"setId":4,"iconIdx":177},{"icon":{"paths":["M713.613 91.356c13.162-11.794 33.392-10.685 45.187 2.477l129.034 144c10.89 12.154 10.89 30.556 0 42.71l-129.034 144.001c-11.795 13.162-32.026 14.269-45.187 2.477-13.162-11.795-14.272-32.026-2.477-45.187l81.222-90.646h-216.358c-17.674 0-32-14.327-32-32s14.326-32 32-32h216.358l-81.222-90.645c-11.795-13.162-10.685-33.393 2.477-45.187zM340.026 464.461c8.586-15.45 28.067-21.018 43.514-12.432l128.461 71.366 128.461-71.366c15.446-8.586 34.928-3.018 43.514 12.432 8.582 15.45 3.014 34.931-12.435 43.514l-159.539 88.634-159.539-88.634c-15.45-8.582-21.018-28.064-12.435-43.514zM192 288v448h640v-192c0-17.674 14.326-32 32-32s32 14.326 32 32v224c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512c0-17.673 14.327-32 32-32h272c17.674 0 32 14.327 32 32s-14.326 32-32 32h-240z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["transcript"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":100,"id":172,"name":"transcript","prevSize":32,"code":59852},"setIdx":1,"setId":4,"iconIdx":178},{"icon":{"paths":["M384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 106.038 85.962 192 192 192s192-85.962 192-192v-256c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 70.691-57.309 128-128 128s-128-57.309-128-128v-256zM352 856c-13.254 0-24 10.746-24 24s10.746 24 24 24h320c13.254 0 24-10.746 24-24s-10.746-24-24-24h-320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["underline"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":101,"id":173,"name":"underline","prevSize":32,"code":59853},"setIdx":1,"setId":4,"iconIdx":179},{"icon":{"paths":["M512 832c176.73 0 320-143.27 320-320s-143.27-320-320-320c-111.712 0-210.056 57.244-267.295 144h107.295c17.674 0 32 14.326 32 32s-14.326 32-32 32h-176c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v101.364c70.228-90.856 180.282-149.364 304-149.364 212.077 0 384 171.923 384 384s-171.923 384-384 384c-212.077 0-384-171.923-384-384h64c0 176.73 143.27 320 320 320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["undo"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":102,"id":174,"name":"undo","prevSize":32,"code":59854},"setIdx":1,"setId":4,"iconIdx":180},{"icon":{"paths":["M467.808 512c0-63.322-61.053-128-153.903-128s-153.905 64.678-153.905 128c0 63.322 61.054 128 153.905 128s153.903-64.678 153.903-128zM512 592.099c34.454 66.042 110.195 111.901 198.096 111.901 120.346 0 217.904-85.962 217.904-192s-97.558-192-217.904-192c-87.901 0-163.642 45.859-198.096 111.901-34.451-66.042-110.195-111.901-198.095-111.901-120.345 0-217.905 85.962-217.905 192s97.559 192 217.905 192c87.9 0 163.644-45.859 198.095-111.901zM864 512c0 63.322-61.053 128-153.904 128s-153.904-64.678-153.904-128c0-63.322 61.053-128 153.904-128s153.904 64.678 153.904 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["Unlimited"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":103,"id":175,"name":"Unlimited","prevSize":32,"code":59855},"setIdx":1,"setId":4,"iconIdx":181},{"icon":{"paths":["M829.168 153.372c12.515-12.497 32.803-12.497 45.315 0 12.515 12.497 12.515 32.758 0 45.255l-672.887 672c-12.513 12.496-32.801 12.496-45.315 0s-12.513-32.758 0-45.254l672.887-672zM110.155 480.051c101.936-153.699 303.797-327.676 542.114-225.436l-49.578 49.512c-56.528-19.209-108.077-19.504-153.526-9.726-114.906 24.721-215.653 118.392-280.79 213.871 38.633 48 75.969 86.822 111.862 117.885l-45.363 45.302c-39.684-34.736-80.189-77.437-121.317-129.181-14.248-17.923-16.056-43.146-3.402-62.227zM797.981 350.454l-45.328 45.27c35.546 31.427 72.336 70.947 110.186 120.080-61.546 95.187-158.656 188.682-272.125 213.626-46.752 10.278-100.624 9.734-160.592-11.603l-49.331 49.267c244.662 107.334 443.389-69.158 540.778-224.253 11.674-18.589 9.894-42.656-3.395-60.128-40.493-53.235-80.64-96.931-120.192-132.259zM514.982 347.43c13.709 0 27.037 1.571 39.802 4.541l-203.738 203.469c-3.901-13.837-5.981-28.403-5.981-43.44 0-90.89 76.074-164.57 169.917-164.57zM679.091 469.184l-203.264 202.998c12.57 2.87 25.68 4.39 39.155 4.39 93.843 0 169.917-73.68 169.917-164.573 0-14.81-2.019-29.162-5.808-42.816z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["unread-on-top-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":104,"id":176,"name":"unread-on-top-disabled","prevSize":32,"code":59856},"setIdx":1,"setId":4,"iconIdx":182},{"icon":{"paths":["M589.36 729.43c-107.366 23.603-252.288-9.875-422.339-221.158 65.137-95.478 165.885-189.15 280.79-213.871 108.314-23.302 251.286 10.604 413.674 221.404-61.546 95.187-158.653 188.682-272.125 213.626zM916.819 482.714c-347.59-456.963-669.742-211.156-808.018-2.662-12.655 19.082-10.846 44.304 3.402 62.227 362.786 456.419 677.038 209.142 808.011 0.563 11.674-18.589 9.894-42.656-3.395-60.128zM619.462 512c0-53.709-45.517-100.57-105.834-100.57s-105.834 46.861-105.834 100.57c0 53.709 45.517 100.573 105.834 100.573s105.834-46.864 105.834-100.573zM683.546 512c0 90.893-76.074 164.573-169.917 164.573s-169.917-73.68-169.917-164.573c0-90.89 76.074-164.57 169.917-164.57s169.917 73.68 169.917 164.57z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["unread-on-top"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":105,"id":177,"name":"unread-on-top","prevSize":32,"code":59857},"setIdx":1,"setId":4,"iconIdx":183},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l33.166 49.75h-59.792c-44.011 0-70.484 14.874-86.279 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h143.999v64h-144c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.305-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.616 53.456 30.346 35.626 38.102 81.35 33.443 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-144v-64h144c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 588.778l-96-99.050c-6.029-6.218-14.32-9.728-22.979-9.728s-16.95 3.51-22.979 9.728l-96 99.050c-12.298 12.691-11.981 32.95 0.707 45.251 12.691 12.298 32.95 11.981 45.251-0.707l41.021-42.326v273.005c0 17.674 14.326 32 32 32s32-14.326 32-32v-273.005l41.021 42.326c12.301 12.688 32.56 13.005 45.251 0.707 12.691-12.301 13.005-32.56 0.707-45.251z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["upload"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":106,"id":178,"name":"upload","prevSize":32,"code":59858},"setIdx":1,"setId":4,"iconIdx":184},{"icon":{"paths":["M553.411 326.282c0 91.578-75.846 165.818-169.411 165.818-93.564 0-169.412-74.24-169.412-165.818 0-91.581 75.848-165.821 169.412-165.821 93.565 0 169.411 74.24 169.411 165.821zM485.648 326.282c0-54.949-45.51-99.493-101.648-99.493s-101.647 44.544-101.647 99.493c0 54.947 45.509 99.491 101.647 99.491s101.648-44.544 101.648-99.491z","M203.427 511.232c28.952-9.11 60.004-9.67 89.279-1.61l51.342 14.131c25.632 7.056 52.819 6.566 78.166-1.408l31.872-10.026c31.206-9.821 64.678-10.422 96.234-1.738 71.962 19.811 121.68 84.051 121.68 157.219v96.24c0 54.947-45.51 99.491-101.648 99.491h-372.705c-56.138 0-101.647-44.544-101.647-99.491v-108.566c0-65.814 43.411-124.106 107.427-144.243zM274.359 573.472c-16.46-4.531-33.918-4.218-50.196 0.906-35.992 11.322-60.399 44.093-60.399 81.098v108.566c0 18.317 15.17 33.165 33.882 33.165h372.705c18.714 0 33.882-14.848 33.882-33.165v-96.24c0-43.453-29.523-81.603-72.259-93.366-18.739-5.158-38.618-4.8-57.152 1.030l-31.872 10.026c-38.022 11.962-78.803 12.698-117.248 2.115l-51.343-14.134z","M797.091 189.321c0-15.913-13.024-28.812-29.091-28.812s-29.091 12.9-29.091 28.812v100.844h-101.818c-16.067 0-29.091 12.9-29.091 28.812s13.024 28.812 29.091 28.812h101.818v100.845c0 15.914 13.024 28.813 29.091 28.813s29.091-12.899 29.091-28.813v-100.845h101.818c16.067 0 29.091-12.899 29.091-28.812s-13.024-28.812-29.091-28.812h-101.818v-100.844z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["user-add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":107,"id":179,"name":"user-add","prevSize":32,"code":59859},"setIdx":1,"setId":4,"iconIdx":185},{"icon":{"paths":["M464 318.747c0-51.548-42.406-94.366-96-94.366-53.592 0-96 42.819-96 94.366s42.408 94.367 96 94.367c53.594 0 96-42.819 96-94.367zM528 318.747c0 87.416-71.635 158.284-160 158.284s-160-70.867-160-158.284c0-87.417 71.635-158.282 160-158.282s160 70.865 160 158.282zM281.778 525.712c-27.649-7.693-56.976-7.158-84.319 1.536-60.46 19.226-101.459 74.864-101.459 137.69v103.629c0 52.451 42.981 94.97 96 94.97h352c3.606 0 7.165-0.195 10.666-0.579v-64.534c-3.334 1.168-6.925 1.802-10.666 1.802h-352c-17.673 0-32-14.173-32-31.658v-103.629c0-35.325 23.051-66.605 57.044-77.414 15.373-4.89 31.862-5.187 47.407-0.864l48.489 13.491c36.311 10.102 74.827 9.402 110.737-2.016l30.099-9.571c17.504-5.568 36.278-5.91 53.978-0.986 18.899 5.261 35.066 16.042 46.912 30.282v-79.712c-9.309-4.749-19.203-8.627-29.584-11.517-29.805-8.291-61.414-7.715-90.89 1.654l-30.099 9.574c-23.942 7.61-49.619 8.080-73.824 1.344l-48.491-13.491zM763.366 489.709c-12.326-12.646-32.586-12.918-45.248-0.608-12.666 12.31-12.938 32.544-0.611 45.19l102.842 105.51h-324.349c-17.674 0-32 14.307-32 31.958 0 17.648 14.326 31.958 32 31.958h324.349l-102.842 105.507c-12.326 12.65-12.054 32.88 0.611 45.194 12.662 12.31 32.922 12.038 45.248-0.611l155.718-159.757c12.093-12.406 12.093-32.176 0-44.582l-155.718-159.76z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["user-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":108,"id":180,"name":"user-forward","prevSize":32,"code":59860},"setIdx":1,"setId":4,"iconIdx":186},{"icon":{"paths":["M609.354 336c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM673.354 336c0 88.365-71.635 160-160 160s-160-71.635-160-160c0-88.365 71.635-160 160-160s160 71.635 160 160zM413.805 551.802c-24.621-5.77-50.285-5.366-74.714 1.178-67.086 17.968-113.738 78.762-113.738 148.211v66.81c0 53.021 42.98 96 96 96h384c53.021 0 96-42.979 96-96v-58.531c0-74.301-51.149-138.826-123.488-155.779l-6.458-1.514c-25.674-6.016-52.435-5.594-77.907 1.229l-49.626 13.293c-20.378 5.456-41.789 5.795-62.326 0.979l-67.744-15.875zM355.651 614.8c14.237-3.814 29.197-4.051 43.549-0.688l67.744 15.878c30.806 7.219 62.925 6.714 93.488-1.472l49.629-13.293c15.283-4.096 31.341-4.349 46.742-0.736l6.458 1.51c43.402 10.173 74.093 48.89 74.093 93.469v58.531c0 17.674-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32v-66.81c0-40.483 27.193-75.917 66.298-86.39z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["user"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":109,"id":181,"name":"user","prevSize":32,"code":59861},"setIdx":1,"setId":4,"iconIdx":187},{"icon":{"paths":["M201.583 672c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 576c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 480c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 384c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 288c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M329.584 192c-17.674 0-32.001 14.327-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M201.583 864c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 768c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["view-condensed"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":110,"id":182,"name":"view-condensed","prevSize":32,"code":59862},"setIdx":1,"setId":4,"iconIdx":188},{"icon":{"paths":["M288 192c0-17.673 14.327-32 32-32h544c17.674 0 32 14.327 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32h448c17.674 0 32 14.327 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.327-32-32zM192 304c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M288 464c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 560c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M288 736c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 832c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 848c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["view-extended"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":111,"id":183,"name":"view-extended","prevSize":32,"code":59863},"setIdx":1,"setId":4,"iconIdx":189},{"icon":{"paths":["M192 320c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M320 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 480c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M192 832c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 736c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["view-medium"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":112,"id":184,"name":"view-medium","prevSize":32,"code":59864},"setIdx":1,"setId":4,"iconIdx":190},{"icon":{"paths":["M640.854 256c26.512 0 48-21.49 48-48s-21.488-48-48-48c-26.509 0-48 21.49-48 48s21.491 48 48 48zM640.854 320c61.856 0 112-50.144 112-112s-50.144-112-112-112c-61.856 0-112 50.144-112 112s50.144 112 112 112zM592.854 416v256h-160v128h32v-96h224v-288h-96zM528.854 768h160c35.347 0 64-28.653 64-64v-288c0-35.347-28.653-64-64-64h-96c-35.344 0-64 28.653-64 64v192h-96c-35.344 0-64 28.653-64 64v128c0 35.347 28.656 64 64 64h32c35.347 0 64-28.653 64-64v-32zM784.854 448c0-17.674 14.326-32 32-32s32 14.326 32 32v384c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32s14.326-32 32-32h192v-352zM368.403 401.52c9.677-9.059 10.176-24.246 1.117-33.923l-48.272-51.558v-47.925c0-13.255-10.746-24-24-24s-24 10.745-24 24v57.406c0 6.093 2.316 11.955 6.48 16.403l54.752 58.48c9.059 9.677 24.246 10.176 33.923 1.117zM170.974 414.278c53.308 74.218 156.687 91.171 230.908 37.862 10.765-7.731 25.76-5.274 33.494 5.491 7.731 10.768 5.274 25.763-5.494 33.494-95.75 68.771-229.121 46.902-297.894-48.848s-46.902-229.123 48.848-297.895c75.545-54.26 174.453-52.073 246.597-1.796 10.874 7.578 13.546 22.538 5.968 33.412s-22.538 13.547-33.411 5.968c-55.971-39.005-132.65-40.618-191.153 1.402-74.219 53.308-91.171 156.688-37.864 230.909z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["waiting-on-me"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":113,"id":185,"name":"waiting-on-me","prevSize":32,"code":59865},"setIdx":1,"setId":4,"iconIdx":191},{"icon":{"paths":["M512 352.003c17.674 0 32 14.33 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.67 14.326-32 32-32z","M512 672.003c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.67 14.326-32 32-32z","M567.101 158.348c-24.774-41.922-85.427-41.922-110.202 0l-359.92 609.099c-25.21 42.662 5.544 96.557 55.099 96.557h719.845c49.555 0 80.307-53.894 55.098-96.557l-359.92-609.099zM512 190.906l359.923 609.097h-719.845l359.922-609.097z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["warning"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":114,"id":186,"name":"warning","prevSize":32,"code":59866},"setIdx":1,"setId":4,"iconIdx":192},{"icon":{"paths":["M784.131 240.143c-35.43-35.658-77.581-63.931-124.016-83.181s-96.227-29.094-146.493-28.961c-210.863 0-382.322 171.532-382.414 382.376-0.085 67.104 17.523 133.043 51.047 191.171l-54.256 198.154 202.72-53.174c56.064 30.531 118.883 46.531 182.717 46.538h0.166c210.752 0 382.32-171.552 382.394-382.394 0.16-50.25-9.645-100.029-28.848-146.464-19.2-46.436-47.418-88.604-83.018-124.065zM513.622 828.486h-0.186c-56.922 0.006-112.797-15.293-161.776-44.298l-11.606-6.896-120.302 31.555 32.124-117.347-7.573-12.029c-31.783-50.64-48.608-109.232-48.535-169.021 0-175.235 142.653-317.816 317.981-317.816 84.301 0.049 165.13 33.58 224.707 93.218 59.581 59.638 93.034 140.499 92.998 224.8-0.074 175.254-142.653 317.834-317.834 317.834zM687.958 590.451c-9.552-4.787-56.528-27.907-65.293-31.171s-15.126-4.768-21.491 4.784c-6.362 9.555-24.678 31.171-30.253 37.462-5.574 6.288-11.149 7.187-20.701 2.4-9.555-4.784-40.339-14.87-76.845-47.434-28.403-25.322-47.584-56.621-53.174-66.192-5.594-9.571-0.589-14.669 4.198-19.491 4.291-4.291 9.552-11.168 14.32-16.742s6.381-9.571 9.552-15.933c3.174-6.362 1.597-11.955-0.787-16.739-2.384-4.787-21.491-51.818-29.466-70.96-7.757-18.63-15.622-16.099-21.491-16.394-5.501-0.275-11.955-0.349-18.336-0.349-4.842 0.131-9.606 1.264-13.994 3.325-4.387 2.058-8.298 5.005-11.491 8.65-8.749 9.552-33.428 32.675-33.428 79.706s34.234 92.467 39.002 98.848c4.765 6.381 67.382 102.883 163.187 144.266 17.792 7.68 35.974 14.413 54.477 20.17 22.902 7.334 43.731 6.237 60.179 3.779 18.336-2.733 56.547-23.104 64.506-45.418 7.955-22.317 7.955-41.459 5.501-45.456-2.458-3.997-8.618-6.326-18.173-11.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["whatsapp-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":237,"id":187,"name":"whatsapp-monochromatic","prevSize":32,"code":59868},"setIdx":1,"setId":4,"iconIdx":193},{"icon":{"paths":["M354.006 399.123l14.029 0.627-0.541-16.726-152.878 1.578c49.916-116.491 165.64-198.133 300.366-198.133 99.645 0 188.893 44.659 248.81 115.065-3.712 0.171-7.491 0.492-11.526 1.068 0 0-63.76 14.898-13.302 118.708 0 0 31.085 84.541-19.306 198.774l-28.403 73.306-99.101-264.723c0 0-5.984-28.154 23.61-28.154l23.76-1.472 0.339-16.035h-228.368v14.458c0 0 39.83-0.288 56.15 27.149l40.762 103.779-73.014 174.403-108.608-272.4c0 0-3.389-31.779 27.222-31.27z","M841.603 513.168c0-33.862-5.235-66.643-14.726-97.357l-145.949 378.755c96.134-56.88 160.675-161.571 160.675-281.398z","M411.478 823.011c32.49 10.912 67.267 16.778 103.488 16.778 37.85 0 74.102-6.406 107.898-18.256l-99.709-258.502-111.677 259.981z","M188.279 513.149c0-32.083 4.712-63.066 13.339-92.336l1 2.051 152.656 375.229c-99.606-55.882-166.994-162.538-166.994-284.944z","M130.705 512.093c0-211.775 172.316-384.093 384.076-384.093 211.725 0 383.923 172.318 383.923 384.093 0 211.776-172.198 384.010-383.923 384.010-211.757 0-384.076-172.234-384.076-384.010zM514.781 879.254c202.384 0 367.11-164.742 367.11-367.178 0-202.486-164.726-367.145-367.11-367.161-202.489 0-367.213 164.673-367.213 367.161 0 202.435 164.724 367.178 367.213 367.178z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["wordpress-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":241,"id":188,"name":"wordpress-monochromatic","prevSize":32,"code":59656},"setIdx":1,"setId":4,"iconIdx":194},{"icon":{"paths":["M193.353 405.334h213.332v-213.334h-213.332v213.334zM129.353 170.667c0-23.564 19.102-42.667 42.667-42.667h256c23.565 0 42.666 19.102 42.666 42.667v255.999c0 23.565-19.101 42.669-42.666 42.669h-256c-23.564 0-42.667-19.104-42.667-42.669v-255.999zM620.019 405.334h213.334v-213.334h-213.334v213.334zM556.019 170.667c0-23.564 19.104-42.667 42.666-42.667h256c23.565 0 42.669 19.102 42.669 42.667v255.999c0 23.565-19.104 42.669-42.669 42.669h-256c-23.562 0-42.666-19.104-42.666-42.669v-255.999zM620.019 618.666h213.334v213.334h-213.334v-213.334zM598.685 554.666c-23.562 0-42.666 19.104-42.666 42.669v256c0 23.562 19.104 42.666 42.666 42.666h256c23.565 0 42.669-19.104 42.669-42.666v-256c0-23.565-19.104-42.669-42.669-42.669h-256zM193.353 832h213.332v-213.334h-213.332v213.334zM129.353 597.334c0-23.565 19.102-42.669 42.667-42.669h256c23.565 0 42.666 19.104 42.666 42.669v256c0 23.562-19.101 42.666-42.666 42.666h-256c-23.564 0-42.667-19.104-42.667-42.666v-256z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["workspaces"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":119,"id":189,"name":"workspaces","prevSize":32,"code":59870},"setIdx":1,"setId":4,"iconIdx":195},{"icon":{"paths":["M384.509 149.333c0-11.782 9.562-21.333 21.36-21.333h85.446c11.798 0 21.363 9.551 21.363 21.333v106.667h-106.81c-11.798 0-21.36-9.551-21.36-21.333v-85.333z","M512.678 256h106.806c11.798 0 21.36 9.551 21.36 21.333v85.332c0 11.782-9.562 21.334-21.36 21.334h-106.806v-128z","M384.509 405.334c0-11.782 9.562-21.334 21.36-21.334h106.81v128h-106.81c-11.798 0-21.36-9.552-21.36-21.334v-85.331z","M512.678 512h106.806c11.798 0 21.36 9.552 21.36 21.334v106.666h-128.166v-128z","M427.232 640c-23.597 0-42.723 19.104-42.723 42.666v170.669c0 23.562 19.126 42.666 42.723 42.666h170.89c23.597 0 42.723-19.104 42.723-42.666v-213.334h-213.613zM491.315 725.334c-11.798 0-21.36 9.549-21.36 21.331v42.669c0 11.782 9.562 21.331 21.36 21.331h42.723c11.798 0 21.36-9.549 21.36-21.331v-42.669c0-11.782-9.562-21.331-21.36-21.331h-42.723z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["zip"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":120,"id":190,"name":"zip","prevSize":32,"code":59871},"setIdx":1,"setId":4,"iconIdx":196},{"icon":{"paths":["M544 208c0-17.673-14.326-32-32-32s-32 14.327-32 32v271.997h-271.998c-17.673 0-32 14.326-32 32s14.327 32 32 32h271.998v272.003c0 17.674 14.326 32 32 32s32-14.326 32-32v-272.003l272-0.003c17.674 0 32-14.326 32-32s-14.326-32-32-32l-272 0.003v-271.997z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":240,"id":191,"name":"add","prevSize":32,"code":59872},"setIdx":1,"setId":4,"iconIdx":197}],"height":1024,"metadata":{"name":"custom"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"custom","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/ios/custom.ttf b/ios/custom.ttf index 41bf2cf78192e373a3e3eb69781e26e5f1516f53..5e5e19a16d275ee349ad64d8fd1917cdb465060d 100644 GIT binary patch delta 3244 zcmbVO4Qx}_6+Y)Z+t2_1_OlZ^vGeTbB#uLV?AZBnVgjWEQg8@`K|_|%L9z~7cT^0R zz)@Ses$-Fxhej#TQmSfD@i)RG1nJ7wsY7gRQ(F*XtVG+2$O?!dRie^rcCYO)!>WqS z^11Jx_wGIS+;hM0dvDwG?6qxd#*@A@5z8osb|(b2P}C6AI^RC#0&f| z>Dfs>EGPiMGc`1oo_c%gq?ANk`SVi;raqjyJoV|_ukPLjy!$s^#)Ca;|I&Wbe#3rU z8bRmy4$M@iM~&s6mBGq&1!E&({zV;jSWq4^iFq(7YU0&j0n{z z*u17jF&sxB;xEj0Bbnf(GjfB%A}2(`O^pq98>TEeoh75QSag|;)E6@QNv9QA%uXJ_ z{rGY)?x4>QXzPfxN#11QS&!rmxdbvXnM99FDXYsQ;=!0jcbbkOO)MCHGiu^_)A)&+ z-YV%wJ4cNSoQD_LHs*71K@h+%^~|$M3!mVs1-7ue!WI}+A{Og)Ivmd4SS-=;pMHmQ z_VrfI24xU}CP}+Xlp1$cVN~kd)q~5VBfBaYZCtvzYY~1=s@d&h3}fRxySs4#3nNg? zj<5-6hQ%=O|5cTiG$P2w3h7GJsk17C3Nc?mOi4Wt|Wlt!g*G~)Az!+u|cRp$zA(do_EN!n)gX0tw%Z_WCAJrl^V%CN^*DvG6UA*N(m zjzLECGz~$F;0&~of)Vxr>n6qUf)COiun3kyAN&Bu;0<^eJ^`>a*~_sEZB~T=^%$r{ z0*GAJtw>Uj^351&#%McI6y!D(;L3^x`#MOCy2ksO|Bl!`*SBxB*f zA_+HCW^RX^{C03=l}gh^>)EAAt9lP9ENZLEW!2iapdsk2?d+_z2zqb!9S@>KmrMql z%|^U}cm^?I57|6ota7q47WDD;cE;#48amWgwZRoHWz`Oi$!5__>MSNb{wh{k8Kah< zG@(}2Mb^}-6A6~;2LIl#JQESHgKIZi9faIB0qs&h0; zsg3Np1aeB3)#}o!>P*(o+S*R7CU$%#BWFT7OCnYovWxmXhzx`HstVP*7GW#RV6&Le z5f?e+$Vz76`$u*jaB9|wPZJvtV0^JjHIZLF%G{9Q6`s> zX{bQCI_wEm#t4`gm?W~}Ap~&{Fab_0jw!Dh5mP}kcw0d<80Z=@(zS4ew#K1AdXjF0 zO$>F7HV3lV+%qQ7JlZvMbaa#)1yR`h7OAH!r26B|!OujX;3e2Jg_~ND!jmG<#t|#Z zLBQltS7G67e&IxJ*`&^*BnmY`cP(XVtZ91of3WDXS$YQqjMAo&tdAe;-LEr)tN3jS%{k=W5`Z6QODGR{v(N@<}GXJ9Sf<6UH$mXswVgLaJa zjdcoJn%R)sIMCJ+4+i7ICO*l3snm074I^VHOUQ-%X`uvyTe(eN(p+L74A7f$$XCec zFl>$>qQ@4p8}P>lLbI+wv&O0W>a7Q0hVv1#U!aW9Q5Nu;w7furBsm$%6b0pl(#v-e zSf9S{B|%;q1H36pUKI(3(UzMKDKl^;MN{^=oMB9Em0GP}Wr|Y6R=SM|<|`B=dg7ym&u^z6n7&C8gOCvCOBN%;)N|=2PuF zr^56@3TI9?e>bh|_abJm76at#m9yoWfThhzZUI^2$|X0<1I8zDnVf zQ9LKDIr&E%k=joEf_zS$C!>n(9PvkprHD-yjP_H~ty8_y{E3&O&nD(c^WQt0{-xbz zzs4WsFY#GNwPS(f`;P5Sy>p54j5Awuy3|qnk;~)S>sGs;avv+(Qoi2P=N~KSUR`~-`d08{jk%_?=GURCwT{~U z8L7HA>L%*j>$fy08U`AUH`b;bkA=12w(vxxEwVmxuxUZm96cI4+`OU1+H$tl)4Hkk zL|aQ+Dqa%*Yx`J-uVZ`1M~PJ8&dipXugtvN+1)wO`L9{wS!-tPn{{b+?d*3S`RSYu zkM=+M$=uGleRB_X`MQR?F3np!-#&j!x4t{oJ=T5Uv9ZS{7pz=xd*SSbXOeZvNBWb; zdKNEg=vDS!T73BN^^ad&;#-nga&zfROYeN^^s?p4ZZBWGJp07HK4agXR@hhky?=TC cME`a2g%5BJwd6yL{ut?>r!C{_-rtG;1{4-~H2?qr delta 1880 zcmbVNeN0nV6u(+C~PXI97 z9o^E}zG86u#{ir~7+{T}K;B0=pCG>u`KoAVPoIO@OCrAm0G#UB`cmuW9c2Ol&M|uo zbhh?&gYO{+fRXhGFYjvY6mOYKlgCj2Z47sGZ{5}daFhb)Z@)9V*Aqr79@2w@8~}kl z6-u2=eVO_;HI=$H^Uur-14L1f>PVeSjiTrenJApOF3b_!7yK^xO>kH6EBZC0y%+h( z4`93`b{$Z-5~qL|D1jO6X|@t3ffS;Nznqt=EL3PL%gxp*Xb}Qp0Mw<*}@8iijqmC-g0BaOoY^GBa6l2@mxB6yV==G5bJ~@ zHk)0k*L6DZAe$``t|N$Er@1|**SUB+gf*(wA;KInmV2dA8KqJv!ZzDZyQ5R5uVkY_ zgn<@6gohcC>fEd}3&G2(%1W_j6H1FIlQ7EWM`yr8 zY&g4$ar4ohvmzjcL;$AE=5|90tZ;Zgi^E|t6QpJ><1lTF!2}FH6#s;D)RT`K1rE;< zW!N%PjD>@F(rfcehMajbm^|}lo{5}=$>#|da-#!dR7QBof1h}vxa2Q%6k8<6PvYIl zmIHZ+BiVNF_!9Occmua%KLd0!3NS5R1l9+8RbZzJ$_8cACD56^eRe1u`dkqS6YPmNrG*Xg12pVDuSHZO`IT$r93eT$23Yjj;c^3d&L4T~lb zVv-Jz3h5JLU&Z$Erv+z(yM;%EmxOW7_T$xyTN75y^DkY`; zvc^?zc}ZcYaH#OM;?Lh6#x`Dd8o>%L!dVl@Z2CAW}VXWa^V`XF0 zD~&@7RJPy@9>qNWd956|4{5*%)e(w6tw1 f-*hCjIE21$0HS9cvH_c^3Bb_zg`2!`;XU{-^smq( From 8bc8a07e72c8fb6975ecad0103dce892c6d3d5fa Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Mon, 22 Mar 2021 13:26:44 -0400 Subject: [PATCH 077/177] [FIX] SSO not working with 2FA (TOTP) (#2978) * Update AuthenticationWebView.js * Updated loginTOTP * Added validation * Update rocketchat.js * Update rocketchat.js * Update rocketchat.js * Update rocketchat.js * Fix resolve * Remove incognito * Fix totp being requested on webview Co-authored-by: Diego Mello --- app/lib/rocketchat.js | 34 ++++++++++++++++++++---------- app/views/AuthenticationWebView.js | 6 +++--- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index a6e9137ae7b..d559ab726f6 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -465,18 +465,30 @@ const RocketChat = { if (e.data?.error && (e.data.error === 'totp-required' || e.data.error === 'totp-invalid')) { const { details } = e.data; try { - reduxStore.dispatch(setUser({ username: params.user || params.username })); - const code = await twoFactor({ method: details?.method || 'totp', invalid: e.data.error === 'totp-invalid' }); - - // Force normalized params for 2FA starting RC 3.9.0. - const serverVersion = reduxStore.getState().server.version; - if (compareServerVersion(serverVersion, '3.9.0', methods.greaterThanOrEqualTo)) { - const user = params.user ?? params.username; - const password = params.password ?? params.ldapPass ?? params.crowdPassword; - params = { user, password }; + const code = await twoFactor({ method: details?.method || 'totp', invalid: details?.error === 'totp-invalid' }); + + if (loginEmailPassword) { + reduxStore.dispatch(setUser({ username: params.user || params.username })); + + // Force normalized params for 2FA starting RC 3.9.0. + const serverVersion = reduxStore.getState().server.version; + if (compareServerVersion(serverVersion, '3.9.0', methods.greaterThanOrEqualTo)) { + const user = params.user ?? params.username; + const password = params.password ?? params.ldapPass ?? params.crowdPassword; + params = { user, password }; + } + + return resolve(this.loginTOTP({ ...params, code: code?.twoFactorCode }, loginEmailPassword)); } - return resolve(this.loginTOTP({ ...params, code: code?.twoFactorCode }, loginEmailPassword)); + return resolve(this.loginTOTP({ + totp: { + login: { + ...params + }, + code: code?.twoFactorCode + } + })); } catch { // twoFactor was canceled return reject(); @@ -511,7 +523,7 @@ const RocketChat = { }, async loginOAuthOrSso(params) { - const result = await this.login(params); + const result = await this.loginTOTP(params); reduxStore.dispatch(loginRequest({ resume: result.token })); }, diff --git a/app/views/AuthenticationWebView.js b/app/views/AuthenticationWebView.js index e3f22ac75be..24e0639aeec 100644 --- a/app/views/AuthenticationWebView.js +++ b/app/views/AuthenticationWebView.js @@ -71,7 +71,7 @@ class AuthenticationWebView extends React.PureComponent { navigation.pop(); } - login = async(params) => { + login = (params) => { const { logging } = this.state; if (logging) { return; @@ -80,7 +80,7 @@ class AuthenticationWebView extends React.PureComponent { this.setState({ logging: true }); try { - await RocketChat.loginOAuthOrSso(params); + RocketChat.loginOAuthOrSso(params); } catch (e) { console.warn(e); } @@ -89,7 +89,7 @@ class AuthenticationWebView extends React.PureComponent { } // eslint-disable-next-line react/sort-comp - debouncedLogin = debounce(params => this.login(params), 3000); + debouncedLogin = debounce(params => this.login(params), 3000, true); tryLogin = debounce(async() => { const { Accounts_Iframe_api_url, Accounts_Iframe_api_method } = this.props; From 25b71155e6ba9073ec75964b55132bd54777521a Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Wed, 31 Mar 2021 13:47:17 -0400 Subject: [PATCH 078/177] [IMPROVEMENT] User status icons (#2991) * Add status and teams * Update icons, icon size and getUsersPresence * Minor changes * Refactor RoomTypeIcon * Minor tweaks * Update unit tests * Minor fixes * Fix styles * Small refactor * Update jest Co-authored-by: Diego Mello --- .../__snapshots__/Storyshots.test.js.snap | 1702 +++++++++++++---- android/app/src/main/assets/fonts/custom.ttf | Bin 50792 -> 50732 bytes app/constants/colors.js | 3 +- app/containers/RoomTypeIcon.js | 24 +- app/containers/Status/Status.js | 47 +- app/containers/Status/index.js | 31 +- app/lib/methods/getUsersPresence.js | 5 +- app/lib/selection.json | 2 +- app/presentation/RoomItem/RoomItem.js | 2 - app/presentation/RoomItem/TypeIcon.js | 12 +- app/presentation/RoomItem/index.js | 4 +- app/presentation/RoomItem/styles.js | 4 +- app/views/RoomActionsView/index.js | 10 +- app/views/RoomInfoView/index.js | 10 +- app/views/RoomInfoView/styles.js | 5 - app/views/RoomView/Header/Header.js | 16 +- app/views/RoomView/Header/Icon.js | 72 - app/views/RoomView/Header/index.js | 23 +- app/views/RoomView/index.js | 2 + app/views/SidebarView/index.js | 2 +- app/views/SidebarView/styles.js | 3 - app/views/StatusView.js | 10 +- app/views/Styles.js | 6 +- ios/custom.ttf | Bin 50792 -> 50732 bytes storybook/stories/Avatar.js | 18 +- storybook/stories/RoomItem.js | 1 + 26 files changed, 1465 insertions(+), 549 deletions(-) delete mode 100644 app/views/RoomView/Header/Icon.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 12a5b2600f2..8b698bc0880 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -878,29 +878,46 @@ exports[`Storyshots Avatar list Avatar 1`] = ` + + Object {}, + ] + } + > +  + + - + > +  + - +  + + + diego.mello + + + + + + + + + + + +  + + + Read + + + + + + + +  + + + Favorite + + + + +  + + + Hide + + + + + + + + + + + + + +  + - diego.mello + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + + Type + - + > +  + - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + rocket.cat - - Type - - + > +  + -  +  -  +  -  +  -  +  -  +  + + User status + -  +  - - User status - - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + - + > +  + +Q+@O?{_N?Tly}wEl)ua3UdO22;vi+k8ZL=nOf%9qJ}L< z7qhs{k%cX|IpbEh5a%W;A&XfeGtNH@aVCpK%wh~-%R;p59O?rfJIOicJKy*FzVF`i z{myr%hdj|k_UhxuspD4wfNB6h&!)DWF|>=(c@XUxo3`%WSbeMiTXa4Jz)v5xZ)jVu zmR9Zs;9ME9``VF${{`nHI`2VebNjZAUCyFT@J5r2d(f5!b13;jkXrFj1 zQ3X}Z-iiGa$0tT7#wTvfJe-*UaOO{j!@xu*v?V`-8BDw%6p_tj5okqGjXXZ2pj<{X zTIhE9{Ltq@64sfFR+}AqJxCWpCJd0v5IO*z&lr&dEqg9V1o>fa6LC;#5v49ON+rXF z4TcB~#jc$)txaCS)*#8AhRCQkN;SOlGF=fXYl&W>#kEHWv>8 zpD*A-rw9$oA|rvAN{uQCO{PKxt5mWun3ajpsZpcZY&0}D91R8-#0EBOG(_0cD23ca zD6~aOK|>mQgDcG7Q?tQgP-KKCh8pzN- zzt8G`UIHY#K4QvLI-1s5--T#gy`?bgsu9b8@}}44x^49{`IH@z!Sbdi)WX2sGv?2~gm6Rnc-eUFC8Y z%#|?#O1^$kpT@j4mjH8RREZ}=QlUfQ{(wqNcFl#%mEkbXlgw^v=CE$`98r-pxKbJ@ zL==fK)h)^=L^xY`sgwFM`A5 za$+3#!43eVd>*ZXw672a@;hf)fFHUE5x@cMun;|e9dyxdxpS5{xaKCC6?Fo?&*Okr zqX;#Nf^@^c-NK75P6xFRs~yl|^_rZs48r7c;^#9%HL0PxPhG2~Amj-6LMe|6DSLPR z;e2SP?C(03L8RwMg}f{dtk%@136@f6`qVWT&lT_}36G0meGbAg3nw7SMd*2)sJb>W z7;8)3T6;&3%zQl_Rqr`=W>Kps^f#Et!LI|1ADnHVvwLFT+>fw7xn`Jz3%ii{Wiy8K zHy=$b$2fX$G0}6rIQiT8w_#jB2?m6e@Caq5x!l>Ay7*|S^S5{*hR+R? zMwfBgRA#zs?y#_yUo0u>M(bIdz!tT2FL;n0%-)_oofFsQbmk1_61hin@8{|B`WKEY z{Kp=0MDzDJmCk_kjC0zx-!<;ecYo!vdk%PpyaDf!cha}Ocgg=jpr@d|U@|xuOf6cu z=tzhSMMM9Fha<5!p&?%F?dVp)x_)fyEu=^%bFt z@0RGBmjss_T1qS}UpiFjs+?NZyzH;4XjQE0bakxy=V(!Mtj1XLWi3@3s_lKnwOqXX z_NzlHdg@lxjnotM+v|UASl@7M<*~*<<5*K!)A*{cRri`tHczd-&=P1l+Hxs*V&p9R E4^@G-#{d8T delta 2090 zcmZ`(YfKbZ6ux(6cV^j{oqazBme(%qu&gZXdxc$=hawhOQC@{2h%YwQ$EG%f+Jv=A z`@`54S1_U8fk_UF)^ zj@>CwPnrR^eiWU%L&!m%6AYpK6|~O^9eBIjR`TwTXg>`A?%aQ9SBD+!paB@=IX^ql z(H#a;kOAPcIg4Ajp{Q zj0Rzf^4RQ!+1sEGz)H@IWhw9)(=&0wlDNQSd45#p0j_@fE{#n1+UiAaMqA zR_IX{!+dCkM$SNxkb!D#8Z3f#w@1ktS0j)|vkbC8gDD@H+#U$;OD)>Ii~=%EC}y6E zQp93h^jwI;bWA4h6EVX0zXE{>MwE1jln5V)H_jv_iz!U>Fe#bYsLK+FF;UV3hEs>K zJpvM=Xeh>hQ79mVnbVJJEb{mmqC=$6OE6@wn4t(FeoaUd)wG-tLTN?(3F1PGP)*V4 zx(X(liqFXu_N;1UwiK2DAOuIjcKkg&Ho@NUQ4^pS_hEkkJ;;j|H>E|4N~g(aAX1@L z6=S(iAr#M>GB##(z1EE%F_}A@nnk?|u6?7_CRxzHKUY);jwJ19`v=0w4&QKsz`Hx|ij zmeewkw>_%{(uzu>^;n_H>Gp711lIB-%ZAot*EsBM2Lc)mCeFiyk-fZ<`1(jag!K@^ zG(kctDyP-WPMT#hl}1^VBBi8=5m90ly2Yn68J2QNjmn;Kk(3CMYTA!bumPg0LA?Yf zJDgMkeVjr_gy)geBA9l{jBhSu;m6DDkp%s~68lPkf039^v4&jQzgW^T1z#G^zEYZP z>6uobD-ZQQIivtD0MU{reY7N$8o`pR<{Y0wE?4++%+@?}j$e*0e~vltWfi`xxT(eC zwXnulsS~9~{bC$^h&!;qK?>TaNc2ewqk)S)JEw5q4xNtIJ)cE~u2mb3to0?%V}CZc z3UvHGq|!Jt?QTEhMT|6+_^+ZJZC}eIN~Ht>e%ARd7Jn$pwV#kFB_q5CORT>HLWxMLqzzTh_blF>4hu9ktt}y9 zUS~GWg!)+Gk2V>kP(>JR2>~LJ2C&8MCq-?JhjZ)Eg#5g|ZG0Pe(JIkHeZRgog+bC1 z&;+9(gpBq5{Qi6_pI@smC=e(m1SJUSYxS6pSq#^sZ~;w9l&CK)hC^#2oM++V#lo7@ zEz#ax9kKCnB&Z*4{?*?u_5A}V0smRRbk`S?%WE`r{VE)dWsTs_Jb{j19^+_#6pb(% z_m&24hokj3O7RSEGd6JJ7>rQQ=sx%#EWylI{*3+En{|qHW$SL{ z%~*BTw)}9x>4ITfv8~5W*mu}3JFJdNPTJ{n4!eA=F4v$t=uvnsdWY6`7pe-sE6ON3 zQgp>v=nMOk{r8Le16hHAz@3tC$$V*H>50<0vg)$ovghT_^8Mv!%cnM2H+;GAlZx(5 zZJU0oENiW7tsLB(wK=qT>b3eRO;t}dQys4Eub!;wuelf88Jyd)Var%;L2X;@rLFbb z>~*5LsrsRYu7;V$tj4~^r%fL;&A&d<+|oSPvbQDv#@SX`>kr#C+kbCsX&Y{P5)0oN GhW`Obn8q>y diff --git a/app/constants/colors.js b/app/constants/colors.js index f29f03d1daa..554d7f8d391 100644 --- a/app/constants/colors.js +++ b/app/constants/colors.js @@ -2,7 +2,8 @@ export const STATUS_COLORS = { online: '#2de0a5', busy: '#f5455c', away: '#ffd21f', - offline: '#cbced1' + offline: '#cbced1', + loading: '#9ea2a8' }; export const SWITCH_TRACK_COLOR = { diff --git a/app/containers/RoomTypeIcon.js b/app/containers/RoomTypeIcon.js index 77b70c0a9d8..44044f3318b 100644 --- a/app/containers/RoomTypeIcon.js +++ b/app/containers/RoomTypeIcon.js @@ -3,10 +3,11 @@ import { StyleSheet } from 'react-native'; import PropTypes from 'prop-types'; import { CustomIcon } from '../lib/Icons'; import { STATUS_COLORS, themes } from '../constants/colors'; +import Status from './Status/Status'; +import { withTheme } from '../theme'; const styles = StyleSheet.create({ icon: { - marginTop: 3, marginRight: 4 } }); @@ -18,7 +19,16 @@ const RoomTypeIcon = React.memo(({ return null; } - const color = themes[theme].auxiliaryText; + const color = themes[theme].titleText; + const iconStyle = [ + styles.icon, + { color }, + style + ]; + + if (type === 'd' && !isGroupChat) { + return ; + } let icon = 'channel-private'; if (type === 'discussion') { @@ -27,7 +37,7 @@ const RoomTypeIcon = React.memo(({ icon = 'channel-public'; } else if (type === 'd') { if (isGroupChat) { - icon = 'team'; + icon = 'message'; } else { icon = 'mention'; } @@ -39,11 +49,7 @@ const RoomTypeIcon = React.memo(({ ); }); @@ -61,4 +67,4 @@ RoomTypeIcon.defaultProps = { size: 16 }; -export default RoomTypeIcon; +export default withTheme(RoomTypeIcon); diff --git a/app/containers/Status/Status.js b/app/containers/Status/Status.js index 50ca2ed3a4f..991402b35d9 100644 --- a/app/containers/Status/Status.js +++ b/app/containers/Status/Status.js @@ -1,36 +1,37 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { View } from 'react-native'; -import { STATUS_COLORS, themes } from '../../constants/colors'; +import { CustomIcon } from '../../lib/Icons'; +import { STATUS_COLORS } from '../../constants/colors'; const Status = React.memo(({ - status, size, style, theme, ...props -}) => ( - -)); + status, size, style, ...props +}) => { + const name = `status-${ status }`; + const isNameValid = CustomIcon.hasIcon(name); + const iconName = isNameValid ? name : 'status-offline'; + const calculatedStyle = [{ + width: size, height: size, textAlignVertical: 'center' + }, style]; + + return ( + + ); +}); + Status.propTypes = { status: PropTypes.string, size: PropTypes.number, - style: PropTypes.any, - theme: PropTypes.string + style: PropTypes.any }; Status.defaultProps = { status: 'offline', - size: 16, - theme: 'light' + size: 32 }; export default Status; diff --git a/app/containers/Status/index.js b/app/containers/Status/index.js index 431762b6424..7b389da2cb5 100644 --- a/app/containers/Status/index.js +++ b/app/containers/Status/index.js @@ -1,32 +1,19 @@ -import React from 'react'; +import React, { memo } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import Status from './Status'; -import { withTheme } from '../../theme'; -class StatusContainer extends React.PureComponent { - static propTypes = { - style: PropTypes.any, - size: PropTypes.number, - status: PropTypes.string, - theme: PropTypes.string - }; +const StatusContainer = memo(({ style, size = 32, status }) => ); - static defaultProps = { - size: 16 - } - - render() { - const { - style, size, status, theme - } = this.props; - return ; - } -} +StatusContainer.propTypes = { + style: PropTypes.any, + size: PropTypes.number, + status: PropTypes.string +}; const mapStateToProps = (state, ownProps) => ({ - status: state.meteor.connected ? (state.activeUsers[ownProps.id] && state.activeUsers[ownProps.id].status) : 'offline' + status: state.meteor.connected ? (state.activeUsers[ownProps.id] && state.activeUsers[ownProps.id].status) : 'loading' }); -export default connect(mapStateToProps)(withTheme(StatusContainer)); +export default connect(mapStateToProps)(StatusContainer); diff --git a/app/lib/methods/getUsersPresence.js b/app/lib/methods/getUsersPresence.js index edbd16792c4..ddc1771d252 100644 --- a/app/lib/methods/getUsersPresence.js +++ b/app/lib/methods/getUsersPresence.js @@ -55,8 +55,9 @@ export default async function getUsersPresence() { if (result.success) { const { users } = result; - const activeUsers = users.reduce((ret, item) => { - const { _id, status, statusText } = item; + const activeUsers = ids.reduce((ret, id) => { + const user = users.find(u => u._id === id) ?? { _id: id, status: 'offline' }; + const { _id, status, statusText } = user; if (loggedUser && loggedUser.id === _id) { reduxStore.dispatch(setUser({ status, statusText })); diff --git a/app/lib/selection.json b/app/lib/selection.json index b3ffe759380..09aff4ed883 100644 --- a/app/lib/selection.json +++ b/app/lib/selection.json @@ -1 +1 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M520.534 827.734c-169.664 0-307.201-137.536-307.201-307.2 0-169.661 137.537-307.198 307.201-307.198 169.661 0 307.2 137.538 307.2 307.198 0 169.664-137.539 307.2-307.2 307.2zM563.2 341.334c0-23.563-19.104-42.665-42.666-42.665-23.565 0-42.669 19.103-42.669 42.665v199.709l144.013 115.21c18.4 14.72 45.251 11.738 59.971-6.662s11.738-45.251-6.662-59.971l-111.987-89.59v-158.694z"],"attrs":[{"fill":"rgb(243, 190, 8)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":0}]},"tags":["status-away"],"grid":0},"attrs":[{"fill":"rgb(243, 190, 8)"}],"properties":{"order":23,"id":0,"name":"status-away","prevSize":32,"code":59741},"setIdx":0,"setId":3,"iconIdx":0},{"icon":{"paths":["M520.534 827.734c-169.664 0-307.201-137.536-307.201-307.2 0-169.661 137.537-307.198 307.201-307.198 169.661 0 307.2 137.538 307.2 307.198 0 169.664-137.539 307.2-307.2 307.2zM418.134 477.866c-23.565 0-42.669 19.104-42.669 42.669s19.104 42.666 42.669 42.666h204.8c23.562 0 42.666-19.101 42.666-42.666s-19.104-42.669-42.666-42.669h-204.8z"],"attrs":[{"fill":"rgb(245, 69, 92)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":2}]},"tags":["status-busy"],"grid":0},"attrs":[{"fill":"rgb(245, 69, 92)"}],"properties":{"order":19,"id":1,"name":"status-busy","prevSize":32,"code":59742},"setIdx":0,"setId":3,"iconIdx":1},{"icon":{"paths":["M825.136 560.653l-84.618-11.040c1.238-9.482 1.882-19.187 1.882-29.085s-0.643-19.603-1.882-29.085l84.618-11.037c1.712 13.13 2.598 26.522 2.598 40.122s-0.886 26.992-2.598 40.125zM804.422 402.934l-78.826 32.688c-7.459-17.99-17.242-34.822-28.995-50.118l67.664-51.994c16.243 21.139 29.802 44.451 40.157 69.424zM707.552 276.796l-51.997 67.662c-15.293-11.754-32.125-21.533-50.118-28.994l32.688-78.825c24.976 10.356 48.288 23.913 69.427 40.157zM560.656 215.925l-11.037 84.616c-9.482-1.237-19.187-1.88-29.085-1.88-9.901 0-19.606 0.643-29.088 1.88l-11.037-84.616c13.133-1.713 26.525-2.597 40.125-2.597 13.597 0 26.989 0.884 40.122 2.597zM402.941 236.639l32.688 78.825c-17.99 7.461-34.826 17.241-50.118 28.994l-51.997-67.662c21.139-16.244 44.451-29.801 69.427-40.157zM276.801 333.51l67.663 51.994c-11.754 15.296-21.536 32.128-28.996 50.118l-78.825-32.688c10.356-24.973 23.913-48.285 40.157-69.424zM215.93 480.406c-1.713 13.13-2.596 26.522-2.596 40.122s0.884 26.992 2.596 40.125l84.616-11.040c-1.237-9.482-1.88-19.187-1.88-29.085s0.643-19.603 1.88-29.085l-84.616-11.037zM236.644 638.122l78.825-32.688c7.46 17.99 17.242 34.822 28.996 50.118l-67.663 51.994c-16.244-21.139-29.801-44.451-40.157-69.424zM333.514 764.259l51.997-67.661c15.293 11.754 32.128 21.533 50.118 28.995l-32.688 78.826c-24.976-10.358-48.288-23.914-69.427-40.16zM480.41 825.133l11.037-84.618c9.482 1.235 19.187 1.878 29.088 1.878 9.898 0 19.603-0.643 29.085-1.878l11.037 84.618c-13.133 1.712-26.525 2.595-40.122 2.595-13.6 0-26.992-0.883-40.125-2.595zM638.125 804.419l-32.688-78.826c17.994-7.462 34.826-17.242 50.118-28.995l51.997 67.661c-21.139 16.246-44.451 29.802-69.427 40.16zM764.266 707.546l-67.664-51.994c11.754-15.296 21.536-32.128 28.995-50.118l78.826 32.688c-10.355 24.973-23.914 48.285-40.157 69.424z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":3}]},"tags":["status-loading"],"grid":0},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":20,"id":2,"name":"status-loading","prevSize":32,"code":59743},"setIdx":0,"setId":3,"iconIdx":2},{"icon":{"paths":["M520.534 742.403c-122.534 0-221.868-99.334-221.868-221.869 0-122.531 99.334-221.865 221.868-221.865 122.531 0 221.866 99.334 221.866 221.865 0 122.534-99.334 221.869-221.866 221.869zM520.534 827.734c169.661 0 307.2-137.536 307.2-307.2 0-169.661-137.539-307.198-307.2-307.198-169.664 0-307.201 137.538-307.201 307.198 0 169.664 137.537 307.2 307.201 307.2z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":3}]},"tags":["status-offline"],"grid":0},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":21,"id":3,"name":"status-offline","prevSize":32,"code":59744},"setIdx":0,"setId":3,"iconIdx":3},{"icon":{"paths":["M819.2 511.997c0 169.661-137.539 307.2-307.2 307.2s-307.2-137.539-307.2-307.2c0-169.661 137.54-307.2 307.2-307.2s307.2 137.539 307.2 307.2z"],"attrs":[{"fill":"rgb(45, 224, 165)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"15816216812431908124569921452241651":[{"f":1}]},"tags":["status-online"],"grid":0},"attrs":[{"fill":"rgb(45, 224, 165)"}],"properties":{"order":22,"id":4,"name":"status-online","prevSize":32,"code":59745},"setIdx":0,"setId":3,"iconIdx":4},{"icon":{"paths":["M368 182.4c0-17.673-14.326-32-32-32s-32 14.327-32 32v144h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v288h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v144c0 17.674 14.327 32 32 32s32-14.326 32-32v-144h288v144c0 17.674 14.326 32 32 32s32-14.326 32-32v-144h144c17.674 0 32-14.326 32-32s-14.326-32-32-32h-144v-80h-64v80h-288v-288h80v-64h-80v-144z","M640.515 327.283c-15.328-3.59-31.306-3.338-46.512 0.733-41.763 11.187-70.803 49.030-70.803 92.269v35.539c0 36.003 29.187 65.194 65.194 65.194h210.413c36.006 0 65.194-29.19 65.194-65.194v-28.336c0-47.667-33.040-88.957-79.27-99.792-16.413-3.846-33.613-3.603-49.946 0.771l-25.827 6.918c-10.381 2.781-21.286 2.95-31.747 0.499l-36.694-8.602z","M782.637 217.037c0 49.174-39.862 89.037-89.037 89.037s-89.037-39.863-89.037-89.037c0-49.174 39.862-89.037 89.037-89.037s89.037 39.863 89.037 89.037z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["channel-auto-join"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":2,"id":202,"name":"channel-auto-join","prevSize":32,"code":59746},"setIdx":1,"setId":4,"iconIdx":0},{"icon":{"paths":["M236.709 162.578c11.779-5.037 25.426-2.564 34.688 6.286l150.709 144c6.32 6.037 9.894 14.396 9.894 23.136s-3.574 17.101-9.894 23.136l-150.709 144c-9.262 8.851-22.909 11.325-34.688 6.288s-19.419-16.614-19.419-29.424v-112h-73.29c-17.673 0-32-14.326-32-32 0-17.672 14.327-31.999 32-31.999h73.29v-112c0-12.81 7.64-24.386 19.419-29.423zM320 368.179v-0.179h0.189l-0.189 0.179zM320.189 304.001h-0.189v-0.179l0.189 0.179z","M492.899 303.258c8.762-9.388 21.245-15.258 35.101-15.258 26.509 0 48 21.49 48 48s-21.491 48-48 48c-16.582 0-31.203-8.41-39.824-21.197l-43.098 48.483c20.49 22.554 50.051 36.714 82.922 36.714 61.856 0 112-50.144 112-112s-50.144-112-112-112c-25.549 0-49.098 8.554-67.942 22.955l32.842 56.303z","M145.615 483.229l32.174 64.349c-0.861 3.040-1.318 6.23-1.318 9.501v44.688c0 17.674 14.327 32 32 32h79.53v64h-79.53c-53.019 0-96-42.979-96-96v-44.688c0-28.848 12.515-55.488 33.144-73.85z","M625.267 640h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786z","M424.714 640h-0.797v1.786c0.272-0.592 0.538-1.187 0.797-1.786z","M477.901 494.515c-28.56-10.957-60.291-10.211-88.307 2.067-42.282 18.534-69.594 60.326-69.594 106.49v132.928c0 53.021 42.979 96 96 96h224c53.021 0 96-42.979 96-96v-125.062c0-51.162-31.536-97.034-79.306-115.354-30.352-11.642-64.067-10.851-93.84 2.198l-2.070 0.909c-21.523 9.434-45.901 10.006-67.843 1.59l-15.040-5.766zM415.286 555.2c12.595-5.52 26.858-5.856 39.699-0.931l15.040 5.77c37.664 14.445 79.504 13.462 116.451-2.73l2.070-0.909c14.349-6.288 30.602-6.669 45.229-1.059 23.024 8.829 38.224 30.938 38.224 55.597v125.062c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32v-132.928c0-20.752 12.278-39.539 31.286-47.872z","M864 320c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM800 320c0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.673 14.326-32 32-32s32 14.327 32 32z","M840.714 697.766h-72.714v-64h72.714c17.674 0 32-14.326 32-32v-44.688c0-15.050-9.664-28.394-23.958-33.091-7.536-2.474-15.69-2.304-23.114 0.483l-4.554 1.709c-19.77 7.421-40.89 9.978-61.619 7.632-12.438-31.683-37.722-57.549-70.774-70.227-1.754-0.672-3.52-1.302-5.296-1.894 18.058-5.312 37.36-5.040 55.344 0.867l14.182 4.659c14.886 4.893 30.998 4.554 45.667-0.954l4.554-1.709c21.069-7.91 44.205-8.394 65.581-1.37 40.566 13.325 67.987 51.197 67.987 93.894v44.688c0 53.021-42.982 96-96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["channel-move-to-team"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":3,"id":201,"name":"channel-move-to-team","prevSize":32,"code":59747},"setIdx":1,"setId":4,"iconIdx":1},{"icon":{"paths":["M512 128c-97.203 0-176 78.798-176 176v142.477h-16c-53.020 0-96 42.979-96 96v257.523c0 53.021 42.981 96 96 96h384c53.021 0 96-42.979 96-96v-257.523c0-53.021-42.979-96-96-96h-16v-142.477c0-97.202-78.797-176-176-176zM624 304v142.477h-224v-142.477c0-61.856 50.144-112 112-112s112 50.144 112 112z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lock-filled"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":4,"id":200,"name":"lock-filled","prevSize":32,"code":59748},"setIdx":1,"setId":4,"iconIdx":2},{"icon":{"paths":["M336 304c0-97.202 78.797-176 176-176s176 78.798 176 176v142.477h16c53.021 0 96 42.979 96 96v257.523c0 53.021-42.979 96-96 96h-384c-53.019 0-96-42.979-96-96v-257.523c0-53.021 42.981-96 96-96h16v-142.477zM400 446.477h224v-142.477c0-61.856-50.144-112-112-112s-112 50.144-112 112v142.477zM320 510.477c-17.673 0-32 14.326-32 32v257.523c0 17.674 14.327 32 32 32h384c17.674 0 32-14.326 32-32v-257.523c0-17.674-14.326-32-32-32h-384z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["locker"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":5,"id":199,"name":"locker","prevSize":32,"code":59749},"setIdx":1,"setId":4,"iconIdx":3},{"icon":{"paths":["M632 256c-17.674 0-32 14.327-32 32v192c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-192c0-17.673-14.326-32-32-32h-24v-56c0-57.438-46.563-104-104-104s-104 46.563-104 104v56h-24zM760 160c-22.093 0-40 17.908-40 40v55.238h80v-55.238c0-22.092-17.907-40-40-40z","M528 224c10.096 0 19.878 1.336 29.184 3.84-13.251 16.46-21.184 37.383-21.184 60.16v0.664c-2.602-0.436-5.274-0.664-8-0.664-26.509 0-48 21.49-48 48s21.491 48 48 48c2.726 0 5.398-0.227 8-0.662v64.381c-2.643 0.186-5.309 0.282-8 0.282-61.856 0-112-50.144-112-112s50.144-112 112-112z","M492.941 500.282c14.883 5.709 30.886 7.283 46.358 4.758 6.179 22.938 20.643 42.474 39.987 55.206-35.123 13.318-74.019 13.309-109.261-0.208l-15.040-5.77c-12.842-4.925-27.104-4.589-39.699 0.931-19.008 8.333-31.286 27.12-31.286 47.872v132.928c0 17.674 14.326 32 32 32h224c17.674 0 32-14.326 32-32v-125.062c0-12.842-4.122-24.995-11.328-34.938h70.291c3.293 11.162 5.037 22.902 5.037 34.938v125.062c0 53.021-42.979 96-96 96h-224c-53.021 0-96-42.979-96-96v-132.928c0-46.163 27.312-87.955 69.594-106.49 28.016-12.278 59.747-13.024 88.307-2.067l15.040 5.766z","M888 576h-15.286v25.766c0 17.674-14.326 32-32 32h-72.714v64h72.714c53.018 0 96-42.979 96-96v-39.027c-14.282 8.426-30.931 13.261-48.714 13.261z","M281.184 416c53.018 0 96-42.979 96-96 0-53.019-42.982-96-96-96-53.020 0-96 42.981-96 96 0 53.021 42.98 96 96 96zM281.184 352c-17.673 0-32-14.326-32-32s14.327-32 32-32c17.673 0 32 14.327 32 32s-14.327 32-32 32z","M625.267 640h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786z","M357.594 464.582c2.528-1.107 5.088-2.122 7.674-3.043-17.907-5.155-37.014-4.832-54.824 1.018l-14.183 4.659c-14.887 4.893-30.998 4.554-45.668-0.954l-4.554-1.709c-21.067-7.91-44.203-8.394-65.581-1.37-40.565 13.325-67.986 51.197-67.986 93.894v44.688c0 53.021 42.981 96 96 96h79.53v-64h-79.53c-17.673 0-32-14.326-32-32v-44.688c0-15.050 9.664-28.394 23.96-33.091 7.534-2.474 15.688-2.304 23.112 0.483l4.554 1.709c21.238 7.974 44.041 10.333 66.238 7.027 10.398-30.173 32.994-55.357 63.259-68.624z","M423.917 640h0.797c-0.259 0.598-0.525 1.194-0.797 1.786v-1.786z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["teams-private"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":6,"id":198,"name":"teams-private","prevSize":32,"code":59750},"setIdx":1,"setId":4,"iconIdx":4},{"icon":{"paths":["M281.184 336c17.673 0 32-14.326 32-32s-14.327-32-32-32c-17.673 0-32 14.327-32 32s14.327 32 32 32zM281.184 400c-53.020 0-96-42.979-96-96 0-53.019 42.98-96 96-96 53.018 0 96 42.981 96 96 0 53.021-42.982 96-96 96zM576 320c0-26.51-21.491-48-48-48s-48 21.49-48 48c0 26.509 21.491 48 48 48s48-21.491 48-48zM640 320c0 61.856-50.144 112-112 112s-112-50.144-112-112c0-61.856 50.144-112 112-112s112 50.144 112 112zM477.901 478.515c-28.56-10.957-60.291-10.211-88.307 2.067-42.282 18.534-69.594 60.326-69.594 106.49v132.928c0 53.021 42.979 96 96 96h224c53.021 0 96-42.979 96-96v-125.062c0-51.162-31.536-97.034-79.306-115.354-30.352-11.642-64.067-10.851-93.84 2.198l-2.070 0.909c-21.523 9.434-45.901 10.006-67.843 1.59l-15.040-5.766zM415.286 539.2c12.595-5.52 26.858-5.856 39.699-0.931l15.040 5.77c37.664 14.445 79.504 13.462 116.451-2.73l2.070-0.909c14.349-6.288 30.602-6.669 45.229-1.059 23.024 8.829 38.224 30.938 38.224 55.597v125.062c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32v-132.928c0-20.752 12.278-39.539 31.286-47.872zM768 336c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.674 0 32 14.327 32 32s-14.326 32-32 32zM768 400c53.021 0 96-42.979 96-96 0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96zM840.714 681.766h-72.714v-64h72.714c17.674 0 32-14.326 32-32v-44.688c0-15.050-9.664-28.394-23.958-33.091-7.536-2.474-15.69-2.304-23.114 0.483l-4.554 1.709c-19.77 7.421-40.89 9.978-61.619 7.632-12.438-31.683-37.722-57.549-70.774-70.227-1.754-0.672-3.52-1.302-5.296-1.894 18.058-5.312 37.36-5.040 55.344 0.867l14.182 4.659c14.886 4.893 30.998 4.554 45.667-0.954l4.554-1.709c21.069-7.91 44.205-8.394 65.581-1.37 40.566 13.325 67.987 51.197 67.987 93.894v44.688c0 53.021-42.982 96-96 96zM625.267 624h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786zM357.594 448.582c2.528-1.107 5.088-2.122 7.674-3.043-17.907-5.155-37.014-4.832-54.824 1.018l-14.183 4.659c-14.887 4.893-30.998 4.554-45.668-0.954l-4.554-1.709c-21.067-7.91-44.203-8.394-65.581-1.37-40.565 13.325-67.986 51.197-67.986 93.894v44.688c0 53.021 42.981 96 96 96h79.53v-64h-79.53c-17.673 0-32-14.326-32-32v-44.688c0-15.050 9.664-28.394 23.96-33.091 7.534-2.474 15.688-2.304 23.112 0.483l4.554 1.709c21.238 7.974 44.041 10.333 66.238 7.027 10.398-30.173 32.994-55.357 63.259-68.624zM423.917 624h0.797c-0.259 0.598-0.525 1.194-0.797 1.786v-1.786z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["teams"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":7,"id":197,"name":"teams","prevSize":32,"code":59751},"setIdx":1,"setId":4,"iconIdx":5},{"icon":{"paths":["M502.627 142.69c12.915-3.408 26.509-3.289 39.363 0.345l245.194 69.317c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.145-184.394 520.422-272.611 580.214-33.053 22.403-75.28 22.474-108.416 0.259-88.758-59.504-300.1-238.589-276.51-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.724-69.849zM524.579 204.621c-1.837-0.519-3.779-0.536-5.622-0.049l-264.725 69.849c-4.4 1.161-6.999 4.775-7.233 8.165-21.305 308.166 168.214 468.531 248.301 522.218 11.507 7.715 25.434 7.677 36.87-0.077 79.379-53.798 266.835-214.288 244.685-522.649-0.243-3.358-2.787-6.925-7.082-8.139l-245.194-69.317z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["set-as-moderator"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":245,"id":0,"name":"shield","prevSize":32,"code":59661},"setIdx":1,"setId":4,"iconIdx":6},{"icon":{"paths":["M864 512c0-86.89-31.482-166.429-83.664-227.826l-496.162 496.162c61.397 52.182 140.937 83.664 227.826 83.664 194.403 0 352-157.597 352-352zM239.349 734.65l495.3-495.3c-60.662-49.597-138.182-79.349-222.65-79.349-194.404 0-352 157.596-352 352 0 84.467 29.753 161.987 79.349 222.65zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["ignore"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":246,"id":1,"name":"ignore","prevSize":32,"code":59740},"setIdx":1,"setId":4,"iconIdx":7},{"icon":{"paths":["M819.2 204.8v614.4h-614.4v-614.4h614.4zM204.8 128c-42.415 0-76.8 34.385-76.8 76.8v614.4c0 42.416 34.385 76.8 76.8 76.8h614.4c42.416 0 76.8-34.384 76.8-76.8v-614.4c0-42.415-34.384-76.8-76.8-76.8h-614.4z"],"attrs":[{"fill":"rgb(203, 206, 209)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":8}]},"tags":["checkbox-unchecked"],"grid":0},"attrs":[{"fill":"rgb(203, 206, 209)"}],"properties":{"order":242,"id":2,"name":"checkbox-unchecked","prevSize":32,"code":59648},"setIdx":1,"setId":4,"iconIdx":8},{"icon":{"paths":["M204.8 128h614.4c42.416 0 76.8 34.385 76.8 76.8v614.4c0 42.416-34.384 76.8-76.8 76.8h-614.4c-42.415 0-76.8-34.384-76.8-76.8v-614.4c0-42.415 34.385-76.8 76.8-76.8zM769.062 336.88c9.322-9.424 9.238-24.619-0.182-33.941-9.424-9.322-24.621-9.241-33.942 0.182l-339.085 342.745-106.782-108.051c-9.317-9.43-24.513-9.52-33.94-0.202s-9.518 24.512-0.201 33.939l123.842 125.318c4.509 4.56 10.653 7.126 17.066 7.13s12.557-2.563 17.069-7.12l356.157-360z"],"attrs":[{"fill":"rgb(29, 116, 245)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":5}]},"tags":["checkbox-checked"],"grid":0},"attrs":[{"fill":"rgb(29, 116, 245)"}],"properties":{"order":243,"id":3,"name":"checkbox-checked","prevSize":32,"code":59649},"setIdx":1,"setId":4,"iconIdx":9},{"icon":{"paths":["M862.454 324.045c-35.2-60.31-82.944-108.057-143.248-143.253-60.314-35.198-126.16-52.792-197.581-52.792-71.414 0-137.28 17.6-197.581 52.792-60.31 35.194-108.053 82.943-143.253 143.253-35.194 60.307-52.792 126.166-52.792 197.571 0 85.77 25.024 162.899 75.086 231.405 50.056 68.509 114.721 115.917 193.989 142.224 9.229 1.712 16.058 0.509 20.499-3.584 4.442-4.096 6.662-9.226 6.662-15.37 0-1.024-0.090-10.246-0.259-27.674-0.176-17.43-0.259-32.637-0.259-45.61l-11.789 2.038c-7.517 1.379-16.998 1.962-28.445 1.795-11.443-0.16-23.322-1.357-35.619-3.587-12.304-2.211-23.747-7.334-34.342-15.366-10.588-8.029-18.104-18.538-22.547-31.514l-5.125-11.795c-3.416-7.853-8.795-16.573-16.142-26.134-7.348-9.571-14.778-16.058-22.294-19.475l-3.588-2.57c-2.391-1.706-4.61-3.766-6.662-6.154-2.050-2.39-3.585-4.781-4.61-7.174-1.027-2.397-0.176-4.365 2.562-5.907 2.738-1.539 7.685-2.288 14.864-2.288l10.247 1.53c6.834 1.37 15.287 5.462 25.371 12.298 10.078 6.835 18.363 15.715 24.856 26.646 7.863 14.013 17.335 24.688 28.445 32.038 11.101 7.347 22.294 11.014 33.568 11.014s21.011-0.854 29.216-2.557c8.192-1.709 15.882-4.275 23.062-7.69 3.075-22.902 11.446-40.499 25.11-52.797-19.475-2.045-36.982-5.13-52.534-9.226-15.542-4.106-31.603-10.765-48.173-20-16.579-9.222-30.331-20.672-41.262-34.333-10.932-13.67-19.905-31.613-26.904-53.818-7.003-22.214-10.505-47.837-10.505-76.88 0-41.35 13.5-76.541 40.493-105.584-12.645-31.088-11.451-65.939 3.585-104.55 9.908-3.079 24.606-0.768 44.078 6.916 19.478 7.689 33.738 14.275 42.797 19.736 9.059 5.46 16.317 10.087 21.786 13.837 31.782-8.88 64.582-13.322 98.406-13.322s66.63 4.442 98.416 13.322l19.475-12.295c13.318-8.204 29.046-15.722 47.142-22.556 18.112-6.83 31.958-8.712 41.53-5.633 15.37 38.612 16.739 73.46 4.093 104.548 26.992 29.046 40.496 64.243 40.496 105.587 0 29.043-3.514 54.746-10.506 77.13-7.002 22.387-16.051 40.314-27.152 53.818-11.114 13.501-24.957 24.864-41.526 34.083-16.573 9.226-32.637 15.888-48.179 19.99-15.552 4.102-33.059 7.187-52.534 9.238 17.763 15.37 26.646 39.632 26.646 72.774v108.134c0 6.141 2.134 11.27 6.41 15.37 4.272 4.090 11.018 5.296 20.243 3.581 79.28-26.304 143.946-73.712 194-142.224 50.048-68.502 75.082-145.632 75.082-231.405-0.019-71.395-17.626-137.248-52.803-197.555z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["github-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":152,"id":4,"name":"github-monochromatic","prevSize":32,"code":59650},"setIdx":1,"setId":4,"iconIdx":10},{"icon":{"paths":["M133.618 423.61h215.092l-92.537-284.607c-4.74-14.67-25.504-14.67-30.244 0l-92.311 284.607zM86.899 567.171l46.72-143.546h737.133l46.72 143.546c4.288 13.088-0.451 27.533-11.51 35.434l-403.776 293.408-403.776-293.408c-11.060-7.901-15.799-22.346-11.511-35.434zM655.661 423.61h215.091l-92.31-284.607c-4.739-14.67-25.504-14.67-30.243 0l-92.538 284.607z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["gitlab-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":153,"id":5,"name":"gitlab-monochromatic","prevSize":32,"code":59651},"setIdx":1,"setId":4,"iconIdx":11},{"icon":{"paths":["M658.794 338.154c-39.798-38.052-90.416-57.426-146.794-57.426-100.016 0-184.669 67.548-214.865 158.313l-0.002-0.003c-7.679 23.040-12.042 47.648-12.042 72.957s4.364 49.92 12.044 72.96l0 0.003c30.196 90.765 114.849 158.314 214.865 158.314 51.664 0 95.651-13.613 130.035-36.653v-0.016c40.669-27.229 67.725-67.898 76.627-115.898h-206.662v-148.538h361.658c4.538 25.136 6.982 51.315 6.982 78.547 0 116.944-41.891 215.389-114.502 282.24v0.013c-63.533 58.646-150.458 93.030-254.138 93.030-150.109 0-279.971-86.048-343.156-211.549l-0-0.003c-26.007-51.84-40.844-110.49-40.844-172.451 0-61.965 14.836-120.611 40.844-172.451h0.004c63.187-125.495 193.047-211.542 343.153-211.542 103.504 0 190.429 38.051 256.931 100.014l-110.138 110.139z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["google-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":154,"id":6,"name":"google-monochromatic","prevSize":32,"code":59652},"setIdx":1,"setId":4,"iconIdx":12},{"icon":{"paths":["M840.541 128c31.318 0 56.813 24.79 56.813 55.383v657.212c0 30.592-25.494 55.427-56.813 55.427h-654.546c-31.254 0-56.642-24.835-56.642-55.427v-657.212c0-30.593 25.387-55.383 56.642-55.383h654.546zM300.196 233.75c-36.588 0-66.093 29.59-66.093 66.050 0 36.482 29.505 66.072 66.093 66.072 36.437 0 66.005-29.59 66.005-66.072 0-36.46-29.568-66.050-66.005-66.050zM243.148 782.461h114.029v-366.515h-114.029v366.515zM537.814 415.923h-109.187v366.515h113.773v-181.274c0-47.83 9.046-94.147 68.333-94.147 58.454 0 59.181 54.678 59.181 97.174v178.246h113.901v-201.008c0-98.714-21.312-174.598-136.666-174.598-55.402 0-92.566 30.381-107.757 59.203h-1.578v-50.112z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["linkedin-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":155,"id":7,"name":"linkedin-monochromatic","prevSize":32,"code":59653},"setIdx":1,"setId":4,"iconIdx":13},{"icon":{"paths":["M86.686 85.336l730.792 774.088c0 0 24.899 17.558 43.936-2.928 19.040-20.486 4.394-40.973 4.394-40.973l-779.122-730.187zM318.080 158.503l556.516 599.955c0 0 24.896 17.558 43.936-2.928 19.037-20.486 4.394-40.973 4.394-40.973l-604.845-556.054zM712.035 915.030l-556.517-599.955 604.843 556.054c0 0 14.646 20.486-4.39 40.973-19.040 20.486-43.936 2.928-43.936 2.928zM513.693 221.419l388.803 419.15c0 0 17.395 12.269 30.694-2.042 13.302-14.314 3.069-28.627 3.069-28.627l-422.566-388.482zM597.878 915.677l-388.805-419.152 422.568 388.48c0 0 10.234 14.314-3.069 28.627-13.302 14.31-30.694 2.045-30.694 2.045zM713.498 312.143l176.221 190.551c0 0 8.605 5.747 15.184-0.96 6.579-6.704 1.517-13.411 1.517-13.411l-192.922-176.18zM482.582 880.23l-176.219-190.55 192.923 176.179c0 0 5.059 6.707-1.52 13.414-6.579 6.704-15.184 0.957-15.184 0.957z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["meteor-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":156,"id":8,"name":"meteor-monochromatic","prevSize":32,"code":59654},"setIdx":1,"setId":4,"iconIdx":14},{"icon":{"paths":["M378.861 853.331c317.456 0 491.091-262.662 491.091-490.442 0-7.462 0-14.89-0.506-22.282 33.779-24.401 62.938-54.614 86.112-89.224-31.501 13.94-64.918 23.082-99.136 27.12 36.032-21.542 62.998-55.424 75.882-95.34-33.878 20.078-70.944 34.228-109.597 41.839-53.501-56.814-138.515-70.72-207.37-33.919-68.851 36.801-104.426 115.155-86.768 191.127-138.774-6.947-268.074-72.409-355.715-180.093-45.811 78.76-22.412 179.517 53.436 230.1-27.467-0.813-54.335-8.214-78.337-21.574 0 0.704 0 1.443 0 2.182 0.022 82.051 57.937 152.723 138.47 168.97-25.41 6.922-52.071 7.933-77.933 2.957 22.611 70.218 87.409 118.32 161.25 119.706-61.116 47.968-136.616 74.010-214.35 73.933-13.732-0.026-27.452-0.858-41.087-2.486 78.931 50.586 170.772 77.418 264.557 77.293z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["twitter-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":157,"id":9,"name":"twitter-monochromatic","prevSize":32,"code":59655},"setIdx":1,"setId":4,"iconIdx":15},{"icon":{"paths":["M512 928c-14.218 0-28.275-0.714-42.144-2.112-16.694-1.68-30.557-12.528-36.688-27.395l-40.538-98.304-98.162 40.838c-14.837 6.173-32.3 4.048-45.292-6.554-21.838-17.818-41.831-37.811-59.65-59.648-10.601-12.992-12.726-30.454-6.553-45.293l40.839-98.16-98.307-40.541c-14.864-6.131-25.714-19.994-27.395-36.688-1.396-13.869-2.111-27.926-2.111-42.144 0-14.214 0.714-28.275 2.11-42.141 1.681-16.694 12.531-30.557 27.395-36.688l98.308-40.541-40.84-98.163c-6.173-14.837-4.047-32.3 6.553-45.292 17.818-21.838 37.81-41.83 59.648-59.648 12.992-10.6 30.455-12.726 45.292-6.553l98.165 40.84 40.541-98.309c6.128-14.865 19.994-25.714 36.688-27.395 13.866-1.396 27.926-2.11 42.141-2.11s28.275 0.714 42.141 2.11c16.694 1.681 30.56 12.531 36.688 27.395l40.541 98.309 98.163-40.84c14.838-6.173 32.301-4.047 45.293 6.553 21.837 17.818 41.83 37.81 59.648 59.648 10.602 12.992 12.726 30.455 6.554 45.292l-40.842 98.163 98.31 40.541c14.864 6.131 25.712 19.994 27.392 36.688 1.398 13.866 2.112 27.926 2.112 42.141 0 14.218-0.714 28.275-2.112 42.144-1.68 16.694-12.528 30.557-27.395 36.688l-98.307 40.541 40.842 98.16c6.173 14.838 4.045 32.301-6.554 45.293-17.821 21.837-37.811 41.83-59.651 59.648-12.992 10.602-30.454 12.726-45.29 6.554l-98.163-40.838-40.538 98.304c-6.131 14.867-19.994 25.715-36.688 27.395-13.869 1.398-27.93 2.112-42.144 2.112zM444.451 757.984l43.386 105.2c7.981 0.541 16.038 0.816 24.163 0.816s16.182-0.275 24.163-0.816l43.382-105.2c9.456-22.925 35.731-33.808 58.627-24.285l105.056 43.709c12.157-10.602 23.578-22.022 34.179-34.179l-43.709-105.056c-9.526-22.893 1.36-49.171 24.282-58.624l105.203-43.386c0.541-7.978 0.816-16.038 0.816-24.163s-0.275-16.182-0.816-24.16l-105.203-43.386c-22.922-9.453-33.808-35.731-24.282-58.624l43.709-105.060c-10.602-12.156-22.022-23.577-34.176-34.177l-105.059 43.708c-22.896 9.525-49.171-1.359-58.627-24.283l-43.382-105.204c-7.981-0.54-16.038-0.815-24.163-0.815s-16.182 0.275-24.163 0.815l-43.386 105.204c-9.453 22.924-35.728 33.808-58.624 24.283l-105.058-43.708c-12.156 10.6-23.577 22.021-34.177 34.177l43.708 105.059c9.525 22.893-1.359 49.171-24.284 58.624l-105.203 43.386c-0.54 7.978-0.815 16.035-0.815 24.16 0 8.128 0.275 16.186 0.815 24.163l105.203 43.386c22.924 9.453 33.809 35.731 24.284 58.624l-43.708 105.056c10.601 12.157 22.022 23.578 34.178 34.179l105.056-43.709c22.896-9.523 49.171 1.36 58.624 24.285zM416 512c0-53.021 42.979-96 96-96s96 42.979 96 96c0 53.021-42.979 96-96 96s-96-42.979-96-96zM512 352c-88.365 0-160 71.635-160 160s71.635 160 160 160c88.365 0 160-71.635 160-160s-71.635-160-160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["administration"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":159,"id":10,"name":"administration","prevSize":32,"code":59657},"setIdx":1,"setId":4,"iconIdx":16},{"icon":{"paths":["M878.739 567.622c-41.853-41.136-161.235-29.824-220.925-22.282-59.005-35.997-98.458-85.706-126.243-158.73 13.379-55.194 34.646-139.185 18.525-191.98-14.41-89.82-129.674-80.907-146.141-20.227-15.094 55.195-1.373 131.988 24.013 230.034-34.304 81.936-85.421 191.984-121.441 255.062-68.611 35.312-161.235 89.821-174.957 158.384-11.321 54.166 89.194 189.238 261.063-106.96 76.845-25.37 160.547-56.566 234.65-68.909 64.835 34.97 140.65 58.282 191.421 58.282 87.478 0 96.054-96.678 60.035-132.675zM199.152 834.342c17.496-46.97 84.048-101.133 104.288-119.99-65.18 103.875-104.288 122.39-104.288 119.99zM479.082 180.918c25.386 0 22.986 110.047 6.176 139.873-15.094-47.653-14.752-139.873-6.176-139.873zM395.379 649.216c33.274-57.936 61.747-126.845 84.733-187.526 28.474 51.766 64.838 93.251 103.258 121.706-71.354 14.739-133.446 44.909-187.99 65.821zM846.835 632.074c0 0-17.152 20.57-127.958-26.739 120.413-8.912 140.307 18.512 127.958 26.739z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["adobe-reader-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":161,"id":11,"name":"adobe-reader-monochromatic","prevSize":32,"code":59658},"setIdx":1,"setId":4,"iconIdx":17},{"icon":{"paths":["M448 188.865c0 33.615 27.251 60.865 60.864 60.865 33.616 0 60.867-27.25 60.867-60.865s-27.251-60.865-60.867-60.865c-33.613 0-60.864 27.25-60.864 60.865zM384 188.865c0 59.026 40.957 108.485 96 121.512v77.745c-44.314 11.69-78.986 47.13-89.578 91.878h-80.045c-13.027-55.043-62.486-96-121.512-96-68.961 0-124.865 55.904-124.865 124.864 0 68.963 55.904 124.867 124.865 124.867 56.762 0 104.678-37.875 119.854-89.731h83.361c12.227 41.773 45.696 74.47 87.92 85.61v77.744c-55.043 13.027-96 62.486-96 121.51 0 68.963 55.904 124.867 124.864 124.867 68.963 0 124.867-55.904 124.867-124.867 0-56.762-37.875-104.675-89.731-119.853v-79.437c42.163-11.171 75.578-43.846 87.789-85.574h77.222c15.178 51.856 63.091 89.731 119.853 89.731 68.963 0 124.867-55.904 124.867-124.867 0-68.96-55.904-124.864-124.867-124.864-59.024 0-108.483 40.957-121.51 96h-73.907c-10.579-44.707-45.194-80.122-89.446-91.843v-79.438c51.856-15.176 89.731-63.092 89.731-119.854 0-68.961-55.904-124.865-124.867-124.865-68.96 0-124.864 55.904-124.864 124.865zM828.864 569.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867zM188.865 569.731c-33.615 0-60.865-27.251-60.865-60.867 0-33.613 27.25-60.864 60.865-60.864s60.865 27.251 60.865 60.864c0 33.616-27.25 60.867-60.865 60.867zM451.069 508.864c0 33.616 27.251 60.867 60.867 60.867 33.613 0 60.864-27.251 60.864-60.867 0-33.613-27.251-60.864-60.864-60.864-33.616 0-60.867 27.251-60.867 60.864zM508.864 889.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["all-contacts-in-channels"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":162,"id":12,"name":"all-contacts-in-channels","prevSize":32,"code":59659},"setIdx":1,"setId":4,"iconIdx":18},{"icon":{"paths":["M861.437 160c17.67 0 32 14.327 32 32s-14.33 32-32 32h-384c-17.674 0-32-14.327-32-32s14.326-32 32-32h384zM334.717 442.397c-24.962 0-45.197-20.237-45.197-45.2 0-24.96 20.236-45.197 45.197-45.197 24.963 0 45.2 20.237 45.2 45.197 0 24.963-20.237 45.2-45.2 45.2zM334.717 506.397c-60.308 0-109.197-48.89-109.197-109.2 0-60.307 48.89-109.197 109.197-109.197 60.31 0 109.2 48.89 109.2 109.197 0 60.31-48.89 109.2-109.2 109.2zM456.278 535.504c-18.288-4.899-37.504-5.2-55.939-0.88l-45.005 10.547c-13.194 3.091-26.947 2.877-40.036-0.63l-31.676-8.483c-19.669-5.27-40.384-5.562-60.154-0.928-55.68 13.050-95.468 62.781-95.468 120.179v34.752c0 42.906 34.783 77.686 77.689 77.686h258.057c42.906 0 77.69-34.781 77.69-77.686v-43.587c0-52-34.928-97.514-85.158-110.97zM414.944 596.934c8.166-1.914 16.675-1.779 24.774 0.39 22.246 5.958 37.718 26.118 37.718 49.149v43.587c0 7.558-6.131 13.686-13.69 13.686h-258.057c-7.56 0-13.689-6.128-13.689-13.686v-34.752c0-27.469 19.123-51.552 46.072-57.869 9.556-2.24 19.564-2.086 28.99 0.438l31.676 8.483c23.277 6.237 47.738 6.621 71.2 1.12l45.005-10.547zM893.437 512c0-17.674-14.33-32-32-32h-224c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.67 0 32-14.326 32-32zM861.437 640c17.67 0 32 14.326 32 32s-14.33 32-32 32h-192c-17.674 0-32-14.326-32-32s14.326-32 32-32h192zM893.437 352c0-17.674-14.33-32-32-32h-288c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.67 0 32-14.326 32-32zM861.437 800c17.67 0 32 14.326 32 32s-14.33 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32h256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["all-contacts-in-queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":163,"id":13,"name":"all-contacts-in-queue","prevSize":32,"code":59660},"setIdx":1,"setId":4,"iconIdx":19},{"icon":{"paths":["M523.571 295.385c33.133 0 74.669-22.133 99.402-51.645 22.4-26.745 38.733-64.095 38.733-101.445 0-5.072-0.467-10.144-1.402-14.294-36.864 1.383-81.2 24.439-107.798 55.334-21.002 23.517-40.134 60.406-40.134 98.218 0 5.533 0.934 11.067 1.402 12.911 2.333 0.461 6.067 0.922 9.798 0.922zM406.906 853.334c45.267 0 65.334-29.974 121.798-29.974 57.402 0 70 29.050 120.4 29.050 49.469 0 82.602-45.187 113.869-89.456 34.998-50.72 49.466-100.522 50.4-102.829-3.267-0.922-98-39.194-98-146.634 0-93.146 74.666-135.107 78.867-138.333-49.469-70.090-124.602-71.935-145.136-71.935-55.533 0-100.8 33.199-129.264 33.199-30.8 0-71.402-31.354-119.469-31.354-91.466 0-184.333 74.701-184.333 215.802 0 87.61 34.533 180.294 77 240.24 36.402 50.723 68.133 92.224 113.867 92.224z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["apple-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":236,"id":14,"name":"apple-monochromatic","prevSize":32,"code":59662},"setIdx":1,"setId":4,"iconIdx":20},{"icon":{"paths":["M498.694 141.561l-298.666 136.533c-11.39 5.207-18.696 16.58-18.696 29.103v386.844c0 11.818 6.513 22.675 16.941 28.237l298.667 159.286c9.411 5.021 20.707 5.021 30.118 0l298.666-159.286c10.429-5.562 16.941-16.419 16.941-28.237v-386.844c0-12.524-7.306-23.896-18.694-29.103l-298.666-136.533c-8.451-3.862-18.16-3.862-26.611 0zM245.333 357.011l234.667 107.277v335.709l-234.667-125.155v-317.83zM544 799.997l234.666-125.155v-317.83l-234.666 107.277v335.709zM512 408.544l-221.7-101.347 221.7-101.348 221.699 101.348-221.699 101.347z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["apps"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":166,"id":15,"name":"apps","prevSize":32,"code":59663},"setIdx":1,"setId":4,"iconIdx":21},{"icon":{"paths":["M374.627 297.372c-12.496-12.497-32.758-12.497-45.254 0l-192 192c-12.497 12.496-12.497 32.758 0 45.254l192 192c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-137.372-137.373h578.745v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-160c0-17.674-14.326-32-32-32h-610.745l137.372-137.373c12.496-12.496 12.496-32.758 0-45.255z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-back"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":167,"id":16,"name":"arrow-back","prevSize":32,"code":59664},"setIdx":1,"setId":4,"iconIdx":22},{"icon":{"paths":["M551.392 242.502c0.189-17.672 14.669-31.845 32.339-31.656 17.674 0.189 31.846 14.668 31.658 32.34l-1.318 123.489 193.44-193.439c12.496-12.497 32.755-12.497 45.254 0 12.496 12.497 12.496 32.758 0 45.255l-193.44 193.439 123.488-1.318c17.674-0.189 32.154 13.984 32.339 31.654 0.189 17.674-13.984 32.154-31.654 32.342l-201.92 2.154c-8.605 0.093-16.886-3.283-22.97-9.37-6.086-6.083-9.462-14.365-9.373-22.97l2.157-201.92zM475.981 782.147c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.342l1.318-123.488-193.438 193.44c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l193.438-193.44-123.488 1.318c-17.672 0.189-32.151-13.984-32.34-31.654-0.189-17.674 13.984-32.154 31.656-32.342l201.922-2.154c8.605-0.093 16.883 3.283 22.966 9.37 6.086 6.083 9.462 14.365 9.373 22.97l-2.157 201.92z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-collapse"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":168,"id":17,"name":"arrow-collapse","prevSize":32,"code":59665},"setIdx":1,"setId":4,"iconIdx":23},{"icon":{"paths":["M576 672c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.674 0 32-14.326 32-32v-208c0-17.674-14.326-32-32-32s-32 14.326-32 32v130.746l-233.373-233.373c-12.496-12.496-32.758-12.496-45.254 0l-73.373 73.373-169.372-169.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.759 0 45.255l192 192c12.496 12.496 32.758 12.496 45.254 0l73.373-73.373 210.746 210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-decrease"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":169,"id":18,"name":"arrow-decrease","prevSize":32,"code":59666},"setIdx":1,"setId":4,"iconIdx":24},{"icon":{"paths":["M329.373 550.627c-12.497-12.496-12.497-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373v-418.746c0-17.673 14.326-32 32-32s32 14.327 32 32v418.746l105.373-105.373c12.496-12.496 32.758-12.496 45.254 0s12.496 32.758 0 45.254l-160 160c-12.496 12.496-32.758 12.496-45.254 0l-160-160zM112 864c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-512c0-17.674-14.326-32-32-32h-96c-17.674 0-32 14.326-32 32s14.326 32 32 32h64v448h-704v-448h64c17.673 0 32-14.326 32-32s-14.327-32-32-32h-96c-17.673 0-32 14.326-32 32v512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down-box"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":170,"id":19,"name":"arrow-down-box","prevSize":32,"code":59667},"setIdx":1,"setId":4,"iconIdx":25},{"icon":{"paths":["M865.139 512c0-194.404-157.802-352-352.464-352-194.66 0-352.464 157.596-352.464 352s157.804 352 352.464 352c194.662 0 352.464-157.597 352.464-352zM929.226 512c0 229.75-186.496 416-416.55 416-230.053 0-416.548-186.25-416.548-416s186.495-416 416.548-416c230.054 0 416.55 186.25 416.55 416zM695.178 571.37l-160.182 155.715c-12.438 12.093-32.259 12.093-44.701 0l-160.179-155.715c-12.682-12.33-12.955-32.589-0.611-45.251 12.342-12.666 32.63-12.938 45.309-0.611l105.789 102.842 0.003-276.349c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v276.349l105.789-102.842c12.682-12.326 32.966-12.054 45.309 0.611 12.346 12.662 12.070 32.922-0.608 45.251z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down-circle"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":171,"id":20,"name":"arrow-down-circle","prevSize":32,"code":59668},"setIdx":1,"setId":4,"iconIdx":26},{"icon":{"paths":["M726.88 526.064c12.355 12.637 12.128 32.896-0.509 45.254l-191.968 187.715c-12.438 12.163-32.31 12.163-44.746 0l-191.97-187.715c-12.636-12.358-12.863-32.618-0.507-45.254 12.356-12.634 32.615-12.861 45.252-0.506l137.597 134.55v-372.109c0-17.673 14.33-32 32-32 17.674 0 32 14.327 32 32v372.109l137.6-134.55c12.634-12.355 32.896-12.128 45.251 0.506z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":172,"id":21,"name":"arrow-down","prevSize":32,"code":59669},"setIdx":1,"setId":4,"iconIdx":27},{"icon":{"paths":["M859.978 398.15c-0.189 17.67-14.666 31.843-32.339 31.654-17.67-0.189-31.846-14.666-31.658-32.339l1.318-123.488-193.437 193.437c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.755 0-45.254l193.437-193.437-123.488 1.318c-17.67 0.189-32.15-13.984-32.339-31.656s13.984-32.151 31.658-32.34l201.92-2.156c8.605-0.092 16.883 3.286 22.97 9.371 6.083 6.085 9.462 14.364 9.37 22.969l-2.157 201.922zM167.394 626.522c0.189-17.674 14.668-31.846 32.34-31.658s31.845 14.669 31.657 32.339l-1.319 123.488 193.438-193.437c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-193.438 193.437 123.489-1.318c17.67-0.189 32.15 13.984 32.339 31.658 0.189 17.67-13.984 32.15-31.658 32.339l-201.92 2.157c-8.605 0.093-16.884-3.286-22.969-9.37-6.085-6.086-9.463-14.365-9.371-22.97l2.156-201.92z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-expand"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":173,"id":22,"name":"arrow-expand","prevSize":32,"code":59670},"setIdx":1,"setId":4,"iconIdx":28},{"icon":{"paths":["M576 352c-17.674 0-32-14.326-32-32s14.326-32 32-32h224c17.674 0 32 14.327 32 32v208c0 17.674-14.326 32-32 32s-32-14.326-32-32v-130.746l-233.373 233.373c-12.496 12.496-32.758 12.496-45.254 0l-73.373-73.373-169.372 169.373c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l192-192c12.496-12.496 32.758-12.496 45.254 0l73.373 73.373 210.746-210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-increase"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":174,"id":23,"name":"arrow-increase","prevSize":32,"code":59671},"setIdx":1,"setId":4,"iconIdx":29},{"icon":{"paths":["M297.766 105.372c12.513-12.497 32.801-12.497 45.316 0 12.512 12.497 12.512 32.758 0 45.255l-105.513 105.372h611.551c17.699 0 32.045 14.327 32.045 32v112c0 17.674-14.346 32-32.045 32-17.696 0-32.042-14.326-32.042-32v-80h-579.51l105.513 105.373c12.512 12.496 12.512 32.758 0 45.254-12.515 12.496-32.803 12.496-45.316 0l-160.212-160c-12.513-12.497-12.513-32.758 0-45.255l160.212-160zM711.568 918.627c-12.515 12.496-32.803 12.496-45.315 0-12.515-12.496-12.515-32.758 0-45.254l105.51-105.373h-611.552c-17.696 0-32.042-14.326-32.042-32v-112c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v80h579.509l-105.51-105.373c-12.515-12.496-12.515-32.758 0-45.254 12.512-12.496 32.8-12.496 45.315 0l160.211 160c12.512 12.496 12.512 32.758 0 45.254l-160.211 160z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-looping"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":175,"id":24,"name":"arrow-looping","prevSize":32,"code":59672},"setIdx":1,"setId":4,"iconIdx":30},{"icon":{"paths":["M374.627 769.296c-12.496 12.496-32.758 12.496-45.254 0l-192-192c-12.497-12.496-12.497-32.758 0-45.254l192-192c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-137.372 137.373h578.745v-192h-192c-17.674 0-32-14.328-32-32.001s14.326-32 32-32h224c17.674 0 32 14.327 32 32v256.001c0 17.674-14.326 32-32 32h-610.745l137.372 137.373c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-return"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":176,"id":25,"name":"arrow-return","prevSize":32,"code":59673},"setIdx":1,"setId":4,"iconIdx":31},{"icon":{"paths":["M694.627 473.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373v418.746c0 17.674-14.326 32-32 32s-32-14.326-32-32v-418.746l-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.497-32.758 0-45.254l160-160c12.496-12.497 32.758-12.497 45.254 0l160 160zM912 160c0-17.673-14.326-32-32-32h-768c-17.673 0-32 14.327-32 32v512c0 17.674 14.327 32 32 32h96c17.673 0 32-14.326 32-32s-14.327-32-32-32h-64v-448h704v448h-64c-17.674 0-32 14.326-32 32s14.326 32 32 32h96c17.674 0 32-14.326 32-32v-512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-up-box"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":177,"id":26,"name":"arrow-up-box","prevSize":32,"code":59674},"setIdx":1,"setId":4,"iconIdx":32},{"icon":{"paths":["M297.181 498.090c-12.356-12.634-12.129-32.896 0.507-45.251l191.97-187.717c12.435-12.161 32.307-12.161 44.746 0l191.968 187.717c12.637 12.355 12.864 32.618 0.509 45.251-12.355 12.637-32.618 12.864-45.251 0.509l-137.6-134.55v372.109c0 17.674-14.326 32-32 32-17.67 0-32-14.326-32-32v-372.109l-137.597 134.55c-12.637 12.355-32.895 12.128-45.251-0.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-up"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":178,"id":27,"name":"arrow-up","prevSize":32,"code":59675},"setIdx":1,"setId":4,"iconIdx":33},{"icon":{"paths":["M482.323 229.047c19.77-23.932 49.891-36.827 80.854-34.615l143.933 10.281c42.051 3.004 77.222 33.091 86.704 74.17l30.349 131.517c6.643 28.787-0.336 59.027-18.925 81.99l-252.368 311.744c-11.12 13.738-31.267 15.859-45.005 4.739s-15.856-31.27-4.736-45.008l252.365-311.744c6.195-7.654 8.522-17.734 6.307-27.331l-30.349-131.517c-3.162-13.693-14.883-23.722-28.902-24.723l-143.933-10.281c-10.323-0.737-20.362 3.561-26.95 11.538l-266 322c-5.438 6.582-8.020 15.066-7.17 23.562l7.581 75.814c1.636 16.358 15.401 28.816 31.841 28.816h104.305c9.44 0 18.397-4.166 24.477-11.386l227.594-270.269-10.048-70.346h-69.258l-230.406 276.486c-11.312 13.578-31.492 15.411-45.068 4.096-13.577-11.312-15.411-31.491-4.097-45.069l230.404-276.483c12.16-14.593 30.173-23.029 49.168-23.029h69.258c31.85 0 58.851 23.42 63.357 54.949l10.048 70.346c2.579 18.045-2.659 36.333-14.4 50.275l-227.594 270.266c-18.243 21.661-45.114 34.163-73.434 34.163h-104.305c-49.32 0-90.616-37.373-95.524-86.448l-7.581-75.811c-2.549-25.491 5.196-50.944 21.511-70.694l265.998-321.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["attach"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":179,"id":28,"name":"attach","prevSize":32,"code":59676},"setIdx":1,"setId":4,"iconIdx":34},{"icon":{"paths":["M866.128 153.127c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.245c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.245c12.496-12.497 12.496-32.758 0-45.255zM674.643 480.358l55.92-55.923c16.259 79.565 14.515 161.866-5.229 240.842l-11.622 46.49c-4.288 17.146-21.661 27.571-38.806 23.283-17.146-4.285-27.568-21.661-23.283-38.806l11.622-46.486c13.875-55.507 17.677-112.874 11.398-169.398zM817.162 385.923l-11.312-36.771 51.203-51.206 21.28 69.155c33.344 108.368 31.994 224.445-3.859 332.010l-33.45 100.342c-5.587 16.765-23.709 25.827-40.477 20.24-16.765-5.59-25.827-23.712-20.237-40.48l33.446-100.339c31.635-94.912 32.826-197.334 3.405-292.95zM490.666 664.333l64-64v210.346c0 23.562-19.101 42.666-42.666 42.666h-85.334c-35.459 0-68.394-10.816-95.683-29.325l46.611-46.611c14.701 7.629 31.395 11.936 49.072 11.936h64v-125.011zM128 682.678c0 19.738 13.403 36.346 31.604 41.216l62.552-62.55h-30.156v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v158.155l64-64v-115.488c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":180,"id":29,"name":"audio-disabled","prevSize":32,"code":59677},"setIdx":1,"setId":4,"iconIdx":35},{"icon":{"paths":["M310.99 661.344h-118.99v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v554.667h-64c-49.613 0-91.466-33.933-103.309-79.952l-12.367-48.048zM170.667 725.344h90.71c18.946 73.61 85.766 128 165.289 128h85.334c23.565 0 42.666-19.104 42.666-42.666v-597.335c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334c0 23.562 19.103 42.666 42.667 42.666zM886.627 393.373c12.496 12.496 12.496 32.758 0 45.254l-73.373 73.373 73.373 73.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-73.373-73.373-73.373 73.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l73.373-73.373-73.373-73.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l73.373 73.373 73.373-73.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio-unavailable"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":181,"id":30,"name":"audio-unavailable","prevSize":32,"code":59678},"setIdx":1,"setId":4,"iconIdx":36},{"icon":{"paths":["M300.1 631.12h-113.433v-280.89h113.433l12.366-48.048c11.054-42.953 50.123-74.619 96.423-74.619h58.666v526.223h-58.666c-46.301 0-85.37-31.667-96.423-74.621l-12.366-48.045zM163.556 695.12h86.931c18.156 70.541 82.192 122.666 158.403 122.666h81.776c22.582 0 40.89-18.307 40.89-40.89v-572.444c0-22.582-18.307-40.889-40.89-40.889h-81.776c-76.211 0-140.247 52.124-158.403 122.667h-86.931c-22.582 0-40.889 18.306-40.889 40.89v327.11c0 22.582 18.307 40.89 40.889 40.89zM646.461 316.515c17.146-4.286 34.518 6.138 38.806 23.284l11.136 44.55c20.81 83.229 20.81 170.301 0 253.533l-11.136 44.55c-4.288 17.146-21.661 27.568-38.806 23.283-17.146-4.288-27.571-21.661-23.283-38.806l11.136-44.55c18.262-73.040 18.262-149.45 0.003-222.486l-11.139-44.55c-4.288-17.146 6.138-34.522 23.283-38.807zM807.472 235.936c-5.197-16.892-23.104-26.372-39.994-21.174-16.893 5.197-26.371 23.104-21.174 39.996l35.536 115.489c28.112 91.37 26.976 189.242-3.254 279.933l-32.054 96.16c-5.59 16.765 3.472 34.886 20.237 40.477 16.768 5.587 34.89-3.472 40.48-20.24l32.051-96.16c34.448-103.344 35.747-214.87 3.709-318.989l-35.536-115.491z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":182,"id":31,"name":"audio","prevSize":32,"code":59679},"setIdx":1,"setId":4,"iconIdx":37},{"icon":{"paths":["M418.704 128c-35.344 0-64 28.654-64 64v226.637c20.774-2.822 42.134-3.456 64-1.526v-225.11h176v180.707c0 35.344 28.656 64 64 64h176v331.293h-120.554c-17.155 22.179-36.323 43.869-57.312 64h177.866c35.347 0 64-28.653 64-64v-363.293c0-6.413-1.923-12.675-5.526-17.978l-156.63-230.681c-11.914-17.544-31.741-28.049-52.947-28.049h-264.896zM658.704 372.707v-180.707h24.896l122.698 180.707h-147.594zM167.939 668.547c120.524 156.138 218.24 174.586 285.133 158.739 73.293-17.36 139.232-81.648 183.466-151.763-115.155-155.869-211.581-174.589-279.149-158.915-74.362 17.251-142.707 81.683-189.45 151.939zM104.428 649.037c100.621-162.8 337.62-357.19 593.252 1.789 9.072 12.739 10.32 29.818 2.422 43.315-95.27 162.854-326.394 358.346-593.234-0.224-9.745-13.094-11.022-30.995-2.44-44.88zM401.664 735.994c31.514 0 60.269-26.858 60.269-64 0-37.146-28.755-64-60.269-64-31.51 0-60.266 26.854-60.266 64 0 37.142 28.755 64 60.266 64zM401.664 799.994c68.634 0 124.269-57.309 124.269-128 0-70.694-55.635-128-124.269-128-68.63 0-124.267 57.306-124.267 128 0 70.691 55.636 128 124.267 128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["auditing"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":183,"id":32,"name":"auditing","prevSize":32,"code":59680},"setIdx":1,"setId":4,"iconIdx":38},{"icon":{"paths":["M224 224c-17.673 0-32 14.327-32 32v544c0 17.674 14.327 32 32 32h544c17.674 0 32-14.326 32-32v-544c0-17.673-14.326-32-32-32h-544zM128 256c0-53.019 42.981-96 96-96h544c53.021 0 96 42.981 96 96v544c0 53.021-42.979 96-96 96h-544c-53.019 0-96-42.979-96-96v-544zM608 460.813c0 41.798-26.714 77.357-64 90.538v133.462h-64v-133.462c-37.286-13.181-64-48.739-64-90.538 0-53.021 42.979-96 96-96s96 42.979 96 96zM608 588.826c38.861-29.19 64-75.667 64-128.013 0-88.365-71.635-160-160-160s-160 71.636-160 160c0 52.346 25.139 98.822 64 128.013v127.987c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-127.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["auth"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":184,"id":33,"name":"auth","prevSize":32,"code":59681},"setIdx":1,"setId":4,"iconIdx":39},{"icon":{"paths":["M513.35 554.019c66.467 0 120.349-52.493 120.349-117.242 0-64.752-53.882-117.243-120.349-117.243-66.464 0-120.346 52.491-120.346 117.243 0 64.749 53.882 117.242 120.346 117.242zM513.35 490.019c-32.704 0-56.346-25.405-56.346-53.242 0-27.84 23.642-53.242 56.346-53.242 32.707 0 56.349 25.402 56.349 53.242 0 27.837-23.642 53.242-56.349 53.242z","M365.478 894.144h-172.126c-17.673 0-32-14.33-32-32v-702.144c0-17.673 14.327-32 32-32h640.001c17.674 0 32 14.327 32 32v702.144c0 17.67-14.326 32-32 32h-172.128c-6.24 1.274-12.701 1.942-19.318 1.942h-257.11c-6.618 0-13.078-0.669-19.318-1.942zM225.353 830.144h68.244c-3.114-9.456-4.799-19.558-4.799-30.058v-93.446c0-56.109 37.881-105.142 92.172-119.309 19.171-5.002 39.264-5.312 58.579-0.902l42.778 9.766c20.051 4.579 40.909 4.259 60.81-0.934l28.070-7.325c20.694-5.398 42.384-5.734 63.232-0.973 60.534 13.821 103.469 67.664 103.469 129.754v83.37c0 10.499-1.686 20.602-4.8 30.058h68.246v-638.144h-576.001v638.144zM652.918 830.144c12.246-4.49 20.989-16.253 20.989-30.058v-83.37c0-32.234-22.288-60.186-53.715-67.36-10.822-2.47-22.083-2.298-32.826 0.506l-28.070 7.325c-29.853 7.789-61.139 8.272-91.216 1.405l-42.774-9.766c-9.293-2.122-18.957-1.974-28.176 0.432-26.112 6.813-44.333 30.397-44.333 57.382v93.446c0 13.805 8.742 25.568 20.989 30.058h279.133z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["avatar"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":185,"id":34,"name":"avatar","prevSize":32,"code":59682},"setIdx":1,"setId":4,"iconIdx":40},{"icon":{"paths":["M737.779 361.376c12.499 12.496 12.499 32.758 0 45.254l-110.947 110.95 110.947 110.947c12.499 12.496 12.499 32.758 0 45.254-12.496 12.499-32.758 12.499-45.254 0l-110.947-110.947-110.95 110.947c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.758 0-45.254l110.95-110.947-110.95-110.95c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l110.95 110.95 110.947-110.95c12.496-12.496 32.758-12.496 45.254 0z","M312.246 218.073c12.061-16.393 31.2-26.073 51.552-26.073h468.202c35.347 0 64 28.654 64 64v512c0 35.347-28.653 64-64 64h-468.202c-20.352 0-39.491-9.68-51.552-26.074l-188.343-256c-16.598-22.56-16.598-53.293 0-75.853l188.343-256.001zM363.798 256l-188.343 256 188.343 256h468.202v-512h-468.202z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["backspace"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":186,"id":35,"name":"backspace","prevSize":32,"code":59683},"setIdx":1,"setId":4,"iconIdx":41},{"icon":{"paths":["M376 775.418c-13.254 0-24-10.746-24-24v-469.168c0-13.255 10.746-24 24-24h145.075c56.118 0 98.269 11.603 126.448 34.809 28.416 23.206 42.624 57.542 42.624 103.008 0 24.154-6.867 45.584-20.602 64.291-13.734 18.47-32.442 32.794-56.122 42.976 27.942 7.814 49.965 22.733 66.067 44.755 16.339 21.786 24.509 47.834 24.509 78.144 0 46.413-15.037 82.88-45.11 109.402s-72.579 39.782-127.517 39.782h-155.373zM420.198 533.526v186.125h112.595c31.731 0 56.714-8.17 74.947-24.509 18.47-16.576 27.706-39.309 27.706-68.198 0-62.278-33.862-93.418-101.587-93.418h-113.661zM420.198 478.829h103.008c29.834 0 53.632-7.459 71.392-22.378 17.997-14.918 26.995-35.165 26.995-60.739 0-28.416-8.288-49.018-24.864-61.805-16.576-13.024-41.795-19.536-75.654-19.536h-100.877v164.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["bold"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":187,"id":36,"name":"bold","prevSize":32,"code":59684},"setIdx":1,"setId":4,"iconIdx":42},{"icon":{"paths":["M352 445.437c0-17.67 14.326-32 32-32h256c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M352 322.557c0-17.672 14.326-31.999 32-31.999h256c17.674 0 32 14.327 32 31.999 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M864 679.68c0 17.674-14.326 32-32 32h-18.509c-8.218 40.547-8.218 82.333 0 122.88h19.789c16.966 0 30.72 13.754 30.72 30.72s-13.754 30.72-30.72 30.72h-545.28c-70.692 0-128-55.014-128-122.88v-453.12c0-106.038 85.961-192 192-192h480c17.674 0 32 14.327 32 32v519.68zM748.419 834.56c-6.787-40.678-6.787-82.202 0-122.88h-460.419c-35.346 0-64 27.507-64 61.44s28.654 61.44 64 61.44h460.419zM224 647.68h576v-455.68h-448c-70.692 0-128 57.308-128 128v327.68z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["book"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":188,"id":37,"name":"book","prevSize":32,"code":59685},"setIdx":1,"setId":4,"iconIdx":43},{"icon":{"paths":["M224 224h320v576h-96v-112c0-8.835-7.165-16-16-16h-96c-8.835 0-16 7.165-16 16v112h-96v-576zM608 448h192v352h-192v-352zM832 384h-224v-192c0-17.673-14.326-32-32-32h-384c-17.673 0-32 14.327-32 32v640c0 17.674 14.327 32 32 32h640c17.674 0 32-14.326 32-32v-416c0-17.674-14.326-32-32-32zM304 288c-8.836 0-16 7.164-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.836-7.165-16-16-16h-32zM288 432c0-8.835 7.164-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.836 0-16-7.165-16-16v-32zM304 544c-8.836 0-16 7.165-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 304c0-8.836 7.165-16 16-16h32c8.835 0 16 7.164 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM432 416c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 560c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM688 512c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM672 656c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["business"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":189,"id":38,"name":"business","prevSize":32,"code":59686},"setIdx":1,"setId":4,"iconIdx":44},{"icon":{"paths":["M277.831 157.44c0-16.259 13.181-29.44 29.44-29.44s29.439 13.181 29.439 29.44v58.876h353.28v-58.876c0-16.259 13.181-29.44 29.44-29.44s29.44 13.181 29.44 29.44v58.876h85.76c17.674 0 32 14.327 32 32v583.68c0 17.674-14.326 32-32 32h-642.559c-17.673 0-32-14.326-32-32v-583.68c0-1.105 0.056-2.196 0.165-3.272 1.639-16.136 15.266-28.728 31.835-28.728h85.76v-58.876zM802.63 392.957h-578.559v407.040h578.559v-407.040zM425.034 644.474c0-8.835 7.162-16 16-16h26.88c8.835 0 16 7.165 16 16v26.88c0 8.838-7.165 16-16 16h-26.88c-8.838 0-16-7.162-16-16v-26.88zM323.27 510.72c-8.836 0-15.999 7.162-15.999 16v26.88c0 8.835 7.163 16 15.999 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.838-7.162-16-16-16h-26.88zM542.79 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM323.27 628.474c-8.835 0-15.999 7.165-15.999 16v26.88c0 8.838 7.164 16 15.999 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM542.79 644.474c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.838-7.162 16-16 16h-26.88c-8.835 0-16-7.162-16-16v-26.88zM441.030 510.72c-8.835 0-16 7.165-16 16v26.88c0 8.835 7.165 16 16 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM660.55 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM676.55 628.474c-8.835 0-16 7.165-16 16v26.88c0 8.838 7.165 16 16 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["calendar"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":190,"id":39,"name":"calendar","prevSize":32,"code":59687},"setIdx":1,"setId":4,"iconIdx":45},{"icon":{"paths":["M866.128 153.126c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.246c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.246c12.496-12.497 12.496-32.758 0-45.255zM298.667 170.671c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999zM574.173 309.327h-403.506c-41.237 0-74.667 33.428-74.667 74.667v384c0 6.010 0.71 11.856 2.051 17.453l61.949-61.949v-339.504c0-5.891 4.776-10.666 10.667-10.666h339.506l64-64.001zM376.339 778.659h306.326c5.891 0 10.669-4.774 10.669-10.666v-85.334c0-11.373 6.038-21.891 15.859-27.629s21.949-5.83 31.856-0.243l97.83 55.162c2.531 1.427 4.858 3.194 6.912 5.248 6.72 6.72 18.208 1.962 18.208-7.542v-263.322c0-9.501-11.488-14.262-18.208-7.542-2.054 2.054-4.381 3.821-6.912 5.248l-97.83 55.162c-9.907 5.587-22.035 5.494-31.856-0.243-9.821-5.734-15.859-16.256-15.859-27.629v-7.661l110.778-73.498c47.418-41.99 123.888-8.701 123.888 56.163v263.322c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.378v30.554c0 41.238-33.43 74.666-74.669 74.666h-370.327l64.001-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["camera-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":191,"id":40,"name":"camera-disabled","prevSize":32,"code":59688},"setIdx":1,"setId":4,"iconIdx":46},{"icon":{"paths":["M288 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.674 0 32-14.327 32-32s-14.326-32-32-32h-256z","M170.667 341.328c-23.564 0-42.667 19.104-42.667 42.666v384c0 23.565 19.102 42.669 42.667 42.669h511.999c23.565 0 42.669-19.104 42.669-42.669v-128l97.83 97.83c26.877 26.88 72.835 7.843 72.835-30.17v-263.318c0-38.013-45.958-57.050-72.835-30.173l-97.83 97.83v-128c0-23.562-19.104-42.666-42.669-42.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["camera-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":192,"id":41,"name":"camera-filled","prevSize":32,"code":59689},"setIdx":1,"setId":4,"iconIdx":47},{"icon":{"paths":["M196.731 191.997c0-15.807 12.814-28.622 28.622-28.622h128.001c15.805 0 28.621 12.814 28.621 28.622s-12.816 28.621-28.621 28.621h-128.001c-15.807 0-28.622-12.814-28.622-28.621z","M737.354 559.997c0 97.203-78.8 176-176 176-97.203 0-176-78.797-176-176s78.797-176 176-176c97.2 0 176 78.797 176 176zM673.354 559.997c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112z","M193.353 255.997c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h640.001c35.344 0 64-28.653 64-64v-448c0-35.346-28.656-64-64-64h-640.001zM833.354 319.997v448h-640.001v-448h640.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["camera-photo"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":193,"id":42,"name":"camera-photo","prevSize":32,"code":59690},"setIdx":1,"setId":4,"iconIdx":48},{"icon":{"paths":["M298.667 170.672c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999z","M545.712 503.453c11.267-11.267 11.19-29.61-0.17-40.97s-29.706-11.437-40.973-0.17l-71.402 71.402-71.994-71.997c-11.363-11.36-29.706-11.437-40.973-0.17s-11.19 29.61 0.17 40.97l71.997 71.997-71.402 71.402c-11.266 11.267-11.19 29.61 0.17 40.97 11.363 11.36 29.706 11.437 40.973 0.17l71.402-71.402 71.997 71.997c11.36 11.36 29.702 11.437 40.97 0.17s11.19-29.61-0.17-40.97l-71.997-71.997 71.402-71.402z","M96 383.994c0-41.235 33.429-74.666 74.667-74.666h511.999c41.238 0 74.669 33.43 74.669 74.666v30.554l46.778-26.378c47.418-41.99 123.888-8.698 123.888 56.166v263.318c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.374v30.55c0 41.238-33.43 74.669-74.669 74.669h-511.999c-41.237 0-74.667-33.43-74.667-74.669v-384zM170.667 373.328c-5.891 0-10.667 4.774-10.667 10.666v384c0 5.891 4.776 10.669 10.667 10.669h511.999c5.891 0 10.669-4.778 10.669-10.669v-85.331c0-11.376 6.038-21.894 15.859-27.632s21.949-5.83 31.856-0.243l97.83 55.165c2.531 1.427 4.858 3.19 6.912 5.245 6.72 6.72 18.208 1.962 18.208-7.542v-263.318c0-9.504-11.488-14.262-18.208-7.546-2.054 2.058-4.381 3.821-6.912 5.248l-97.83 55.165c-9.907 5.587-22.035 5.494-31.856-0.243s-15.859-16.256-15.859-27.632v-85.334c0-5.891-4.778-10.666-10.669-10.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["camera-unavailable"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":194,"id":43,"name":"camera-unavailable","prevSize":32,"code":59691},"setIdx":1,"setId":4,"iconIdx":49},{"icon":{"paths":["M256 202.672c0-17.673 19.102-32 42.667-32h255.999c23.565 0 42.669 14.327 42.669 32s-19.104 32-42.669 32h-255.999c-23.564 0-42.667-14.327-42.667-32zM160 383.994c0-5.891 4.776-10.666 10.667-10.666h511.999c5.891 0 10.669 4.774 10.669 10.666v85.334c0 11.376 6.038 21.894 15.859 27.632s21.949 5.83 31.856 0.243l97.83-55.165c2.531-1.427 4.858-3.19 6.912-5.248 6.72-6.717 18.208-1.958 18.208 7.546v263.318c0 9.504-11.488 14.262-18.208 7.542-2.054-2.054-4.381-3.818-6.912-5.245l-97.83-55.165c-9.907-5.587-22.035-5.494-31.856 0.243s-15.859 16.256-15.859 27.632v85.331c0 5.891-4.778 10.669-10.669 10.669h-511.999c-5.891 0-10.667-4.778-10.667-10.669v-384zM170.667 309.328c-41.237 0-74.667 33.43-74.667 74.666v384c0 41.238 33.429 74.669 74.667 74.669h511.999c41.238 0 74.669-33.43 74.669-74.669v-30.55l46.778 26.374c47.418 41.99 123.888 8.701 123.888-56.163v-263.318c0-64.864-76.47-98.157-123.888-56.166l-46.778 26.378v-30.554c0-41.235-33.43-74.666-74.669-74.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["camera"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":195,"id":44,"name":"camera","prevSize":32,"code":59692},"setIdx":1,"setId":4,"iconIdx":50},{"icon":{"paths":["M224.248 304.026c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.702 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.152 83.731 244.197 93.958 91.965 10.218 193.27 1.446 273.306-15.482 40.022-8.461 73.616-18.733 97.443-29.075 9.245-4.013 16.438-7.786 21.734-11.126-2.464-1.565-5.446-3.306-9.002-5.197-9.222-4.912-19.779-9.578-30.733-14.368l-1.914-0.835c-9.667-4.221-20.47-8.941-28.656-13.517-14.835-8.298-29.389-17.734-40.006-27.776-5.222-4.941-11.165-11.571-15.146-19.827-4.208-8.742-7.226-21.792-1.306-35.597 31.978-74.621 47.178-115.494 54.538-142.483 6.874-25.2 6.874-37.888 6.874-58.064v-0.182c0-16.035-9.318-89.517-55.811-158.032-45.018-66.338-125.99-129.968-274.854-129.968-134.637 0-215.698 55.382-264.165 122.698zM172.309 266.63c60.333-83.796 160.606-149.302 316.103-149.302 171.136 0 271.494 75.037 327.811 158.032 54.842 80.819 66.854 167.338 66.854 193.968 0 22.384-0.022 41.696-9.126 75.088-8.131 29.805-23.485 70.928-51.946 137.923 5.261 4.166 13.072 9.306 23.36 15.062 5.315 2.97 13.485 6.55 24.963 11.568 10.653 4.659 23.437 10.266 35.174 16.515 11.258 5.994 24.416 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.056 15.168-16.794 25.939-26.576 33.094-10.63 7.776-23.818 14.762-38.253 21.030-29.008 12.589-67.030 23.962-109.683 32.982-85.309 18.038-193.581 27.587-293.616 16.474-99.955-11.107-202.74-44.634-278.468-108.71-76.833-65.011-123.811-159.994-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904zM493.744 320c17.674 0 32 14.326 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.674 14.326-32 32-32zM525.744 672c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["canned-response"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":196,"id":45,"name":"canned-response","prevSize":32,"code":59693},"setIdx":1,"setId":4,"iconIdx":51},{"icon":{"paths":["M193.352 181.331c-53.020 0-96 42.981-96 96v469.335c0 53.018 42.98 96 96 96h639.999c53.021 0 96-42.982 96-96v-469.335c0-53.019-42.979-96-96-96h-639.999zM161.352 277.331c0-17.673 14.327-32 32-32h639.999c17.674 0 32 14.327 32 32v202.673h-703.999v-202.673zM161.352 544.003h703.999v202.662c0 17.67-14.326 32-32 32h-639.999c-17.673 0-32-14.33-32-32v-202.662zM812.016 661.331c0-35.347-28.653-64-64-64-35.344 0-64 28.653-64 64s28.656 64 64 64c35.347 0 64-28.653 64-64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["card"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":197,"id":46,"name":"card","prevSize":32,"code":59694},"setIdx":1,"setId":4,"iconIdx":52},{"icon":{"paths":["M368 160c0-17.673-14.326-32-32-32s-32 14.327-32 32v144h-144c-17.673 0-32 14.327-32 32s14.327 32 32 32h144v288h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v144c0 17.674 14.327 32 32 32s32-14.326 32-32v-144h288v144c0 17.674 14.326 32 32 32s32-14.326 32-32v-144h144c17.674 0 32-14.326 32-32s-14.326-32-32-32h-144v-80h-58.666c-1.786 0-3.565-0.042-5.334-0.118v80.118h-288v-288h168.79c-0.522-5.264-0.79-10.602-0.79-16v-48h-168v-144z","M760 96c-57.437 0-104 46.562-104 104v56h-24c-17.674 0-32 14.327-32 32v192c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-192c0-17.673-14.326-32-32-32h-24v-56c0-57.438-46.563-104-104-104zM800 255.238h-80v-55.238c0-22.092 17.907-40 40-40s40 17.908 40 40v55.238z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["channel-private"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":198,"id":47,"name":"channel-private","prevSize":32,"code":59695},"setIdx":1,"setId":4,"iconIdx":53},{"icon":{"paths":["M336 128c17.674 0 32 14.327 32 32v144h288v-144c0-17.673 14.326-32 32-32s32 14.327 32 32v144h144c17.674 0 32 14.327 32 32s-14.326 32-32 32h-144v288h144c17.674 0 32 14.326 32 32s-14.326 32-32 32h-144v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-288v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-288h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-144c0-17.673 14.327-32 32-32zM368 368v288h288v-288h-288z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["channel-public"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":199,"id":48,"name":"channel-public","prevSize":32,"code":59696},"setIdx":1,"setId":4,"iconIdx":54},{"icon":{"paths":["M886.627 105.372c12.496 12.497 12.496 32.758 0 45.255l-89.373 89.372 89.373 89.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-89.373-89.372-89.373 89.372c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l89.373-89.373-89.373-89.372c-12.496-12.497-12.496-32.758 0-45.255s32.758-12.497 45.254 0l89.373 89.373 89.373-89.373c12.496-12.497 32.758-12.497 45.254 0zM226.501 304.042c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.701 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.151 83.731 244.196 93.958 91.968 10.218 193.27 1.446 273.309-15.482 40.019-8.461 73.613-18.733 97.44-29.075 9.245-4.013 16.438-7.786 21.738-11.126-2.467-1.565-5.446-3.306-9.005-5.2-9.222-4.909-19.776-9.574-30.733-14.365l-1.917-0.838c-9.667-4.221-20.47-8.938-28.653-13.517-14.835-8.294-29.389-17.731-40.003-27.773-5.226-4.941-11.168-11.571-15.146-19.827-4.211-8.742-7.226-21.792-1.309-35.6 42.086-98.205 54.957-137.722 59.219-163.318 2.906-17.434 19.392-29.21 36.822-26.307 17.434 2.906 29.213 19.389 26.307 36.822-5.453 32.749-20.333 76.41-58.006 165.088 5.261 4.166 13.069 9.306 23.357 15.059 5.315 2.973 13.485 6.554 24.963 11.571 10.656 4.656 23.437 10.266 35.174 16.515 11.261 5.994 24.419 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.053 15.168-16.794 25.939-26.576 33.094-10.627 7.776-23.814 14.762-38.253 21.027-29.005 12.592-67.027 23.965-109.68 32.986-85.312 18.038-193.584 27.587-293.616 16.47-99.955-11.104-202.742-44.63-278.471-108.707-76.833-65.014-123.811-159.997-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904 60.333-83.796 160.605-149.302 316.103-149.302 17.674 0 32 14.327 32 32s-14.326 32-32 32c-134.637 0-215.697 55.382-264.164 122.698z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chat-close"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":200,"id":49,"name":"chat-close","prevSize":32,"code":59697},"setIdx":1,"setId":4,"iconIdx":55},{"icon":{"paths":["M778 93.833c-11.795-13.162-32.026-14.271-45.187-2.477s-14.272 32.025-2.477 45.187l81.222 90.645h-216.358c-17.674 0-32 14.327-32 32s14.326 32 32 32h216.358l-81.222 90.646c-11.795 13.162-10.685 33.392 2.477 45.187 13.162 11.792 33.392 10.685 45.187-2.477l129.030-144.001c10.893-12.154 10.893-30.556 0-42.71l-129.030-144zM159.999 512.010c0-55.322 16.86-139.021 66.502-207.968 48.467-67.316 129.527-122.698 264.164-122.698 17.674 0 32-14.327 32-32s-14.326-32-32-32c-155.498 0-255.77 65.507-316.102 149.302-58.72 81.555-78.275 178.355-78.561 243.904-11.151 127.229 35.827 222.211 112.66 287.222 75.729 64.077 178.516 97.603 278.471 108.707 100.032 11.117 208.304 1.568 293.616-16.47 42.653-9.021 80.675-20.394 109.68-32.982 14.438-6.269 27.626-13.254 38.253-21.030 9.782-7.155 21.523-17.926 26.579-33.094 7.67-23.018-3.069-41.872-13.302-52.864-9.782-10.509-22.941-18.544-34.202-24.538-11.738-6.25-24.518-11.859-35.171-16.515-11.482-5.018-19.651-8.598-24.966-11.571-10.288-5.754-18.096-10.89-23.357-15.059 37.674-88.678 52.554-132.339 58.010-165.088 2.902-17.43-8.877-33.917-26.31-36.822-17.43-2.902-33.917 8.877-36.822 26.307-4.262 25.597-17.133 65.114-59.219 163.318-5.917 13.808-2.902 26.858 1.309 35.6 3.978 8.256 9.92 14.886 15.146 19.827 10.614 10.042 25.171 19.478 40.003 27.776 8.186 4.576 18.989 9.296 28.656 13.517v0l1.914 0.835c10.957 4.79 21.51 9.456 30.733 14.368 3.558 1.891 6.541 3.632 9.005 5.197-5.299 3.341-12.493 7.114-21.738 11.126-23.827 10.342-57.421 20.614-97.44 29.075-80.038 16.928-181.341 25.699-273.309 15.482-92.045-10.227-181.258-40.704-244.196-93.958-61.545-52.077-99.836-127.29-90.135-234.006l0.132-1.446v-1.453z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chat-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":201,"id":50,"name":"chat-forward","prevSize":32,"code":59698},"setIdx":1,"setId":4,"iconIdx":56},{"icon":{"paths":["M854.506 233.252c12.563 12.429 12.672 32.691 0.243 45.254l-474.877 480c-6.013 6.077-14.208 9.498-22.755 9.494-8.55-0.003-16.742-3.427-22.752-9.507l-165.126-167.088c-12.423-12.57-12.303-32.832 0.268-45.254s32.831-12.304 45.254 0.269l142.375 144.067 452.115-456.992c12.429-12.564 32.691-12.672 45.254-0.243z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":202,"id":51,"name":"check","prevSize":32,"code":59699},"setIdx":1,"setId":4,"iconIdx":57},{"icon":{"paths":["M281.372 436.042c12.497-12.499 32.758-12.499 45.255 0l185.373 185.373 185.373-185.373c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-208 208c-12.496 12.496-32.758 12.496-45.254 0l-208-208c-12.497-12.496-12.497-32.758 0-45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-down"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":203,"id":52,"name":"chevron-down","prevSize":32,"code":59700},"setIdx":1,"setId":4,"iconIdx":58},{"icon":{"paths":["M670.17 183.165c16.662 16.662 16.662 43.677 0 60.34l-268.496 268.495 268.496 268.499c16.662 16.662 16.662 43.677 0 60.339s-43.677 16.662-60.339 0l-298.668-298.669c-8.002-8-12.497-18.851-12.497-30.17 0-11.315 4.495-22.166 12.497-30.17l298.668-298.666c16.662-16.662 43.677-16.662 60.339 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-left-big"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":204,"id":53,"name":"chevron-left-big","prevSize":32,"code":59701},"setIdx":1,"setId":4,"iconIdx":59},{"icon":{"paths":["M587.962 281.372c12.496 12.497 12.496 32.758 0 45.255l-185.373 185.373 185.373 185.373c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-208-208c-12.496-12.496-12.496-32.758 0-45.254l208-208c12.499-12.497 32.758-12.497 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-left"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":205,"id":54,"name":"chevron-left","prevSize":32,"code":59702},"setIdx":1,"setId":4,"iconIdx":60},{"icon":{"paths":["M436.038 742.627c-12.496-12.496-12.496-32.758 0-45.254l185.373-185.373-185.373-185.373c-12.496-12.497-12.496-32.758 0-45.254 12.499-12.497 32.758-12.497 45.254 0l208 208c12.499 12.496 12.499 32.758 0 45.254l-207.997 208c-12.499 12.496-32.758 12.496-45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-right"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":206,"id":55,"name":"chevron-right","prevSize":32,"code":59703},"setIdx":1,"setId":4,"iconIdx":61},{"icon":{"paths":["M742.627 587.958c-12.496 12.499-32.758 12.499-45.254 0l-185.373-185.373-185.373 185.373c-12.496 12.499-32.758 12.499-45.254 0-12.497-12.496-12.497-32.758 0-45.254l208-208c12.496-12.496 32.758-12.496 45.254 0l208 208c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-up"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":207,"id":56,"name":"chevron-up","prevSize":32,"code":59704},"setIdx":1,"setId":4,"iconIdx":62},{"icon":{"paths":["M512 864c194.403 0 352-157.597 352-352 0-46.522-9.024-90.931-25.418-131.581l48.518-48.518c26.211 54.496 40.899 115.581 40.899 180.099 0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416 95.376 0 183.254 32.096 253.424 86.076l-45.712 45.712c-58.221-42.623-130.029-67.788-207.712-67.788-194.404 0-352 157.596-352 352s157.596 352 352 352zM902.63 230.623c12.496-12.499 12.493-32.76-0.006-45.255s-32.762-12.491-45.254 0.008l-345.386 345.503-105.341-105.491c-12.486-12.506-32.749-12.522-45.254-0.032-12.506 12.486-12.522 32.749-0.032 45.254l127.971 128.157c6 6.006 14.144 9.386 22.634 9.389 8.493 0 16.637-3.373 22.64-9.376l368.029-368.157z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["circle-check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":208,"id":57,"name":"circle-check","prevSize":32,"code":59705},"setIdx":1,"setId":4,"iconIdx":63},{"icon":{"paths":["M608 192c0-53.019-42.979-96-96-96s-96 42.981-96 96h-192c-17.673 0-32 14.327-32 32v672c0 17.674 14.327 32 32 32h576c17.674 0 32-14.326 32-32v-672c0-17.673-14.326-32-32-32h-192zM256 864v-608h96v64c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-64h96v608h-512zM512 224c17.674 0 32-14.327 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["clipboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":209,"id":58,"name":"clipboard","prevSize":32,"code":59706},"setIdx":1,"setId":4,"iconIdx":64},{"icon":{"paths":["M864 512c0 194.403-157.597 352-352 352s-352-157.597-352-352c0-194.404 157.596-352 352-352s352 157.596 352 352zM928 512c0-229.75-186.25-416-416-416s-416 186.25-416 416c0 229.75 186.25 416 416 416s416-186.25 416-416zM544 288c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["clock"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":210,"id":59,"name":"clock","prevSize":32,"code":59707},"setIdx":1,"setId":4,"iconIdx":65},{"icon":{"paths":["M806.627 262.628c12.496-12.497 12.496-32.758 0-45.255s-32.758-12.497-45.254 0l-249.373 249.373-249.372-249.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.758 0 45.255l249.373 249.372-249.373 249.373c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l249.372-249.373 249.373 249.373c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-249.373-249.373 249.373-249.372z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["close"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":211,"id":60,"name":"close","prevSize":32,"code":59708},"setIdx":1,"setId":4,"iconIdx":66},{"icon":{"paths":["M273.129 356.678c6.747-28.298 25.696-52.004 51.21-67.152 25.6-15.2 56.323-20.858 84.698-14.53 27.642 6.163 55.117 24.12 74.874 60.339l22.541 41.325 30.134-36.16c27.238-32.689 85.126-39.713 134.714-14.064 23.562 12.186 42.208 30.618 52.064 53.488 9.654 22.406 12.112 51.898-1.434 89.149l-15.616 42.938h45.686c53.606 0 82.419 15.882 97.642 33.75 15.651 18.374 21.898 44.646 18.557 74.714-3.344 30.083-16.054 60.518-33.456 82.89-17.939 23.066-36.646 32.646-50.742 32.646h-543.998c-18.791 0-37.068-10.362-52.195-31.578-15.217-21.344-24.978-51.050-25.818-81.312-0.84-30.227 7.237-57.914 23.733-77.491 15.796-18.746 42.268-33.619 86.279-33.619h59.791l-33.165-49.75c-27.882-41.824-32.118-77.814-25.498-105.581zM518.218 272.084c-26.339-32.073-59.667-51.619-95.251-59.554-45.626-10.174-92.902-0.833-131.301 21.965-38.487 22.85-69.538 60.142-80.791 107.342-8.278 34.72-5.369 72.758 10.731 111.77-35.67 8.464-64.099 26.186-84.825 50.784-29.004 34.422-39.927 78.733-38.766 120.506 1.159 41.738 14.399 84.032 37.682 116.688 23.373 32.784 59.097 58.426 104.306 58.426h543.999c41.907 0 77.2-26.419 101.261-57.354 24.598-31.629 41.888-73.197 46.544-115.114 4.659-41.933-3.094-87.658-33.443-123.283-24.106-28.301-59.504-46.774-105.616-53.456 5.83-35.194 1.686-67.674-10.605-96.205-16.646-38.628-46.998-67.197-81.437-85.010-54.902-28.397-128.733-32.652-182.486 2.495zM512 437.331c17.674 0 32 14.33 32 32v53.328h53.334c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-53.334v53.341c0 17.674-14.326 32-32 32s-32-14.326-32-32v-53.341h-53.331c-17.674 0-32-14.326-32-32 0-17.67 14.326-32 32-32h53.331v-53.328c0-17.67 14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["cloud-connectivity"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":212,"id":61,"name":"cloud-connectivity","prevSize":32,"code":59709},"setIdx":1,"setId":4,"iconIdx":67},{"icon":{"paths":["M630.154 204.798c16.496 6.344 24.723 24.859 18.381 41.355l-213.334 554.667c-6.342 16.496-24.858 24.723-41.354 18.381-16.496-6.346-24.723-24.861-18.381-41.357l213.334-554.666c6.346-16.495 24.858-24.724 41.354-18.38zM321.293 361.37c12.499 12.499 12.499 32.758 0 45.258l-105.371 105.37 105.371 105.373c12.499 12.499 12.499 32.758 0 45.258-12.495 12.496-32.756 12.496-45.253 0l-128-128c-12.497-12.499-12.497-32.758 0-45.258l128-128c12.497-12.496 32.758-12.496 45.253 0zM702.707 361.37c12.496-12.496 32.758-12.496 45.254 0l128 128c12.496 12.499 12.496 32.758 0 45.258l-128 128c-12.496 12.496-32.758 12.496-45.254 0-12.499-12.499-12.499-32.758 0-45.258l105.373-105.373-105.373-105.37c-12.499-12.499-12.499-32.758 0-45.258z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["code"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":213,"id":62,"name":"code","prevSize":32,"code":59710},"setIdx":1,"setId":4,"iconIdx":68},{"icon":{"paths":["M770.704 224c17.674 0 32 14.327 32 32v544c0 17.674-14.326 32-32 32h-543.999c-17.673 0-32-14.326-32-32v-128c17.673 0 32-14.326 32-32s-14.327-32-32-32v-192c17.673 0 32-14.326 32-32s-14.327-32-32-32v-96c0-17.673 14.327-32 32-32h543.999zM130.705 608c-17.673 0-32 14.326-32 32s14.327 32 32 32v128c0 53.021 42.981 96 96 96h543.999c53.021 0 96-42.979 96-96v-544c0-53.019-42.979-96-96-96h-543.999c-53.019 0-96 42.981-96 96v96c-17.673 0-32 14.326-32 32s14.327 32 32 32v192zM427.91 514.266c13.315-3.568 27.309-3.789 40.73-0.643l31.52 7.389c8.73 2.045 17.83 1.904 26.49-0.416l22.186-5.942c14.285-3.827 29.328-4.042 43.683-0.675 40.429 9.475 69.325 45.584 69.325 87.277v24.336c0 31.811-25.789 57.6-57.6 57.6h-180.739c-31.811 0-57.6-25.789-57.6-57.6v-30.525c0-37.862 25.434-71.005 62.006-80.8zM456.957 563.472c-5.206-1.219-10.634-1.133-15.798 0.25-14.189 3.798-24.054 16.656-24.054 31.344v30.525c0 3.536 2.867 6.4 6.4 6.4h180.739c3.533 0 6.4-2.864 6.4-6.4v-24.336c0-17.75-12.365-33.341-29.808-37.427-6.186-1.45-12.662-1.35-18.752 0.282l-22.186 5.942c-16.813 4.502-34.474 4.781-51.421 0.81l-31.52-7.389zM539.155 420.48c0-13.962-11.318-25.28-25.28-25.28s-25.283 11.318-25.283 25.28c0 13.962 11.322 25.28 25.283 25.28s25.28-11.318 25.28-25.28zM590.355 420.48c0 42.24-34.243 76.48-76.48 76.48-42.24 0-76.483-34.24-76.483-76.48s34.243-76.48 76.483-76.48c42.237 0 76.48 34.24 76.48 76.48z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["contacts"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":214,"id":63,"name":"contacts","prevSize":32,"code":59711},"setIdx":1,"setId":4,"iconIdx":69},{"icon":{"paths":["M464 272c-35.347 0-64 28.654-64 64v480c0 35.347 28.653 64 64 64h352c35.347 0 64-28.653 64-64v-304c0-6.509-1.984-12.864-5.69-18.214l-134.458-194.215c-11.952-17.267-31.619-27.571-52.621-27.571h-223.232zM464 336h144v144c0 35.347 28.653 64 64 64h144v272h-352v-480zM672 480v-144h15.232l99.693 144h-114.925zM144 208c0-35.346 28.654-64 64-64h241.844c18.032 0 35.229 7.607 47.357 20.949l39.136 43.051h-328.336v480h128v64h-128c-35.346 0-64-28.653-64-64v-480z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["copy"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":215,"id":64,"name":"copy","prevSize":32,"code":59712},"setIdx":1,"setId":4,"iconIdx":70},{"icon":{"paths":["M824.682 183.521c-37.19-37.986-98.202-38.583-136.131-1.333l-348.48 342.237c-12.739 12.512-21.733 28.32-25.976 45.654l-23.681 96.749c-6.94 28.355 16.754 54.845 45.747 51.142l90.691-11.578c20.224-2.582 39.104-11.52 53.907-25.52l360.486-340.922c38.986-36.868 40.173-98.482 2.637-136.82l-19.2-19.61zM733.485 227.821c12.643-12.417 32.979-12.218 45.376 0.444l19.2 19.61c12.512 12.78 12.115 33.317-0.88 45.607l-69.965 66.169-63.446-63.364 69.715-68.466zM618.074 341.162l62.592 62.512-243.971 230.73c-4.934 4.666-11.229 7.645-17.968 8.506l-58.307 7.443 15.926-65.075c1.414-5.779 4.413-11.046 8.659-15.219l233.069-228.896zM193.608 265.602c0-17.673 14.346-32 32.042-32h281.332c17.696 0 32.042-14.327 32.042-32s-14.346-32-32.042-32h-281.332c-53.089 0-96.127 42.981-96.127 96v534.402c0 53.018 43.037 95.997 96.127 95.997h529.764c53.091 0 96.128-42.979 96.128-96v-279.414c0-17.67-14.346-32-32.042-32s-32.042 14.33-32.042 32v279.414c0 17.674-14.346 32-32.045 32h-529.764c-17.696 0-32.042-14.326-32.042-31.997v-534.402z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["create"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":216,"id":65,"name":"create","prevSize":32,"code":59713},"setIdx":1,"setId":4,"iconIdx":71},{"icon":{"paths":["M717.373 298.663c0-17.673-14.326-32-32-32s-32 14.327-32 32v426.665c0 17.674 14.326 32 32 32s32-14.326 32-32v-426.665z","M514.704 394.672c17.674 0 32 14.326 32 32v298.666c0 17.674-14.326 32-32 32s-32-14.326-32-32v-298.666c0-17.674 14.326-32 32-32z","M376.038 554.672c0-17.674-14.326-32-32-32s-32 14.326-32 32v170.669c0 17.67 14.327 32 32 32s32-14.33 32-32v-170.669z","M130.705 199.556v624.889c0 39.52 32.036 71.555 71.556 71.555h624.888c39.52 0 71.555-32.035 71.555-71.555v-624.889c0-39.519-32.035-71.556-71.555-71.556h-624.888c-39.519 0-71.556 32.036-71.556 71.556zM202.26 192h624.888c4.173 0 7.555 3.383 7.555 7.556v624.889c0 4.173-3.382 7.555-7.555 7.555h-624.888c-4.173 0-7.556-3.382-7.556-7.555v-624.889c0-4.173 3.383-7.556 7.556-7.556z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["dashboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":217,"id":66,"name":"dashboard","prevSize":32,"code":59714},"setIdx":1,"setId":4,"iconIdx":72},{"icon":{"paths":["M739.68 864v-448h-448.593v448h448.593zM227.003 864v-448c-35.393 0-64.084-28.653-64.084-64v-128c0-35.346 28.692-64 64.084-64h224.297c0-35.346 28.691-64 64.083-64 35.395 0 64.086 28.654 64.086 64h224.294c35.395 0 64.086 28.654 64.086 64v128c0 35.347-28.691 64-64.086 64v448c0 35.347-28.691 64-64.083 64h-448.593c-35.393 0-64.085-28.653-64.085-64zM803.763 224h-576.761v128h576.761v-128zM419.258 544v192c0 17.674 14.346 32 32.042 32s32.042-14.326 32.042-32v-192c0-17.674-14.346-32-32.042-32s-32.042 14.326-32.042 32zM579.469 512c17.696 0 32.042 14.326 32.042 32v192c0 17.674-14.346 32-32.042 32s-32.042-14.326-32.042-32v-192c0-17.674 14.346-32 32.042-32z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["delete"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":218,"id":67,"name":"delete","prevSize":32,"code":59715},"setIdx":1,"setId":4,"iconIdx":73},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.327 32 32 32h341.334c17.67 0 32-14.326 32-32s-14.33-32-32-32h-341.334z","M85.334 298.672c0-70.692 57.308-128 128-128h597.335c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.335c-70.692 0-128-57.306-128-128v-298.666zM213.334 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.335c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.335z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["desktop"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":219,"id":68,"name":"desktop","prevSize":32,"code":59716},"setIdx":1,"setId":4,"iconIdx":74},{"icon":{"paths":["M325.837 160c0-17.673-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.327-32.042 32v64c0 17.673 14.346 32 32.042 32h64.085c17.696 0 32.043-14.327 32.043-32v-64zM325.837 586.666c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64zM454.006 160c0-17.673 14.346-32 32.042-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.327-32.042-32v-64zM582.173 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM454.006 586.666c0-17.674 14.346-32 32.042-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.326-32.042-32v-64zM582.173 800c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 160c0-17.673 14.346-32 32.045-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.327-32.045-32v-64zM838.512 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.699 0-32.045 14.326-32.045 32v64c0 17.674 14.346 32 32.045 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 586.666c0-17.674 14.346-32 32.045-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.326-32.045-32v-64zM325.837 373.334c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["dialpad"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":220,"id":69,"name":"dialpad","prevSize":32,"code":59717},"setIdx":1,"setId":4,"iconIdx":75},{"icon":{"paths":["M514.704 96c80.096 0 154.906 22.636 218.378 61.859l-46.746 46.746c-24.739-13.843-51.322-24.785-79.286-32.368 12.166 22.395 23.078 49.095 32.403 79.249l-51.997 51.999c-5.654-22.994-12.17-44.005-19.347-62.666-12.822-33.339-26.522-55.927-38.474-69.070-8.4-9.235-13.43-11.291-14.928-11.698-1.501 0.407-6.531 2.463-14.931 11.698-11.949 13.143-25.651 35.731-38.474 69.070-16.298 42.377-29.174 96.867-36.339 159.18h65.974l-63.997 64h-7.117c-0.115 2.47-0.221 4.95-0.32 7.437l-64.538 64.538c-0.173-7.933-0.259-15.926-0.259-23.974 0-16.234 0.355-32.25 1.053-48h-189.81c-2.14 15.696-3.245 31.718-3.245 48 0 33.28 4.619 65.485 13.251 96h106.984l-64 64h-17.852c2.004 3.92 4.078 7.798 6.223 11.629l-46.746 46.749c-39.223-63.475-61.859-138.282-61.859-218.378 0-229.75 186.25-416 415.999-416zM868.845 293.623l-46.746 46.748c10.56 18.87 19.434 38.816 26.413 59.629h-86.045l-64 64h164.992c2.141 15.696 3.245 31.718 3.245 48 0 33.28-4.618 65.485-13.248 96h-183.030c2.8-30.816 4.282-62.957 4.282-96 0-8.045-0.090-16.042-0.262-23.974l-64.538 64.534c-0.752 19.008-2.022 37.523-3.763 55.44h-51.677l-64 64h107.091c-7.37 42.458-17.488 80.083-29.45 111.184-12.822 33.338-26.522 55.926-38.474 69.069-8.397 9.235-13.43 11.29-14.928 11.699-1.501-0.41-6.531-2.464-14.931-11.699-11.949-13.142-25.651-35.731-38.474-69.069-7.178-18.662-13.693-39.677-19.347-62.669l-52 51.997c9.328 30.154 20.24 56.854 32.406 79.251-27.965-7.584-54.547-18.525-79.286-32.368l-46.747 46.746c63.348 39.146 137.985 61.77 217.899 61.859h0.957c229.53-0.259 415.52-186.41 415.52-416 0-80.096-22.634-154.902-61.859-218.377zM422.362 172.237c-113.55 30.788-204.31 116.98-241.464 227.763h179.676c10-93.226 32.176-173.252 61.789-227.763zM607.050 851.763c24.397-44.902 43.741-107.117 55.395-179.763h165.878c-44.653 87.35-124.723 153.584-221.274 179.763zM828.077 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-671.999 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l671.999-672z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["directory-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":221,"id":70,"name":"directory-disabled","prevSize":32,"code":59718},"setIdx":1,"setId":4,"iconIdx":76},{"icon":{"paths":["M866.493 512c0 33.28-4.624 65.485-13.267 96h-183.27c2.803-30.816 4.285-62.957 4.285-96 0-16.234-0.358-32.25-1.053-48h190.058c2.141 15.696 3.248 31.718 3.248 48zM609.037 464c0.736 15.67 1.12 31.686 1.12 48 0 33.398-1.606 65.555-4.57 96h-183.117c-2.96-30.445-4.566-62.602-4.566-96 0-16.314 0.381-32.33 1.12-48h190.013zM668.368 400c-10.013-93.226-32.218-173.252-61.872-227.763 113.699 30.788 204.579 116.981 241.782 227.763h-179.91zM421.565 172.237c-29.654 54.51-51.859 134.537-61.872 227.763h-179.913c37.204-110.782 128.083-196.975 241.785-227.763zM424.17 400c7.171-62.314 20.067-116.804 36.387-159.18 12.838-33.339 26.557-55.927 38.525-69.070 8.41-9.235 13.446-11.291 14.947-11.698 1.501 0.407 6.541 2.463 14.95 11.698 11.965 13.143 25.683 35.731 38.525 69.070 16.32 42.377 29.213 96.867 36.387 159.18h-179.722zM354.874 464c-0.698 15.75-1.056 31.766-1.056 48 0 33.043 1.485 65.184 4.288 96h-183.274c-8.643-30.515-13.268-62.72-13.268-96 0-16.282 1.107-32.304 3.249-48h190.060zM366.096 672c11.667 72.646 31.040 134.861 55.466 179.763-96.675-26.179-176.853-92.413-221.565-179.763h166.099zM514.509 928c229.834-0.259 416.070-186.41 416.070-416 0-229.75-186.496-416-416.55-416s-416.549 186.25-416.549 416c0 229.59 186.237 415.741 416.073 416 0.16 0 0.317 0 0.477 0s0.32 0 0.48 0zM606.496 851.763c24.426-44.902 43.798-107.117 55.466-179.763h166.099c-44.71 87.35-124.886 153.584-221.565 179.763zM596.992 672c-7.379 42.458-17.51 80.083-29.488 111.184-12.842 33.338-26.56 55.926-38.525 69.069-8.41 9.235-13.45 11.29-14.95 11.699-1.501-0.41-6.538-2.464-14.947-11.699-11.968-13.142-25.686-35.731-38.525-69.069-11.978-31.101-22.112-68.726-29.491-111.184h165.926z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["directory"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":222,"id":71,"name":"directory","prevSize":32,"code":59719},"setIdx":1,"setId":4,"iconIdx":77},{"icon":{"paths":["M561.667 127.992c-121.696 0-200.973 50.509-248.813 115.801-46.216 63.073-61.638 137.752-61.933 188.616-8.705 98.746 28.601 172.896 89.422 223.469 59.686 49.626 140.202 75.258 217.85 83.738 77.75 8.486 161.715 1.197 227.856-12.547 33.066-6.87 62.774-15.581 85.642-25.331 11.366-4.848 22.029-10.368 30.797-16.669 7.875-5.661 18.541-14.976 23.242-28.835 7.286-21.475-3.133-38.784-11.965-48.102-8.41-8.877-19.427-15.405-28.24-20.016-9.306-4.867-19.379-9.206-27.533-12.707-8.973-3.856-14.858-6.4-18.56-8.432-4.845-2.662-8.842-5.088-12.026-7.203 20.256-47.142 31.549-77.043 37.696-99.19 7.293-26.272 7.315-41.725 7.315-58.909 0-21.523-9.603-88.542-52.81-151.108-44.701-64.73-124.074-122.573-257.939-122.573zM314.916 433.898c0-40.416 12.607-101.84 49.564-152.277 35.782-48.836 95.882-89.628 197.187-89.628 112.086 0 172.090 46.886 205.277 94.94 34.678 50.219 41.472 104.040 41.472 114.741v0.198c0 14.918 0 23.638-4.982 41.594-5.491 19.779-16.963 50.189-41.539 106.538-5.802 13.296-2.762 25.77 1.155 33.754 3.664 7.478 9.005 13.242 13.331 17.261 8.835 8.211 20.653 15.686 32.224 22.045 6.618 3.638 15.238 7.334 22.563 10.477l1.562 0.672c5.904 2.534 11.52 4.97 16.688 7.418-0.909 0.406-1.856 0.819-2.835 1.238-17.741 7.568-43.078 15.206-73.555 21.539-60.947 12.666-138.064 19.21-207.888 11.587-69.926-7.635-136.982-30.336-183.878-69.328-45.459-37.798-73.674-92.064-66.481-169.821l0.136-1.469v-1.478zM819.162 553.354l-0.074-0.086c0 0.003 0.010 0.013 0.029 0.035 0.010 0.013 0.026 0.029 0.045 0.051z","M178.552 502.474c7.496-11.258 16.26-22.259 26.436-32.592 0.876 31.747 6.169 61.226 15.216 88.358-15.094 30.877-18.374 59.315-18.374 65.357v0.186c0 11.382 0 17.536 3.524 30.701 3.993 14.918 12.441 38.211 30.867 82.022 5.256 12.496 2.48 24.099-0.985 31.43-3.249 6.874-7.925 12.058-11.512 15.514-7.319 7.053-16.852 13.254-25.75 18.326-5.008 2.854-11.333 5.706-16.546 8.029 11.182 3.939 24.98 7.814 40.802 11.226 44.977 9.693 101.833 14.669 153.062 8.87 51.28-5.808 99.776-23.014 133.35-51.965l0.608-0.528c14.794 2.784 29.53 4.938 44.051 6.525 10.886 1.187 21.862 2.086 32.877 2.72-10.122 14.797-22.163 28.045-35.741 39.754-46.362 39.974-108.547 60.362-167.946 67.088-59.45 6.73-123.405 0.947-173.744-9.901-25.17-5.424-48.056-12.352-65.901-20.243-8.86-3.92-17.458-8.502-24.686-13.891-6.431-4.794-15.831-13.171-20.001-25.92-6.422-19.632 2.792-35.443 10.458-43.834 7.193-7.872 16.405-13.462 23.248-17.174 7.309-3.965 15.158-7.466 21.235-10.173 6.907-3.078 10.854-4.858 13.183-6.186 1.349-0.768 2.591-1.501 3.727-2.195-13.937-33.885-21.976-56.118-26.48-72.947-5.68-21.222-5.7-33.875-5.7-47.434 0-17.712 7.436-71.139 40.721-121.123zM155.337 797.248c-0.012 0 0.084 0.102 0.317 0.301-0.19-0.202-0.306-0.301-0.317-0.301zM179.587 737.085c-0.004 0-0.052 0.051-0.137 0.15l0.112-0.118c0.019-0.022 0.027-0.032 0.025-0.032z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["discussions"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":223,"id":72,"name":"discussions","prevSize":32,"code":59720},"setIdx":1,"setId":4,"iconIdx":78},{"icon":{"paths":["M160 256c0-17.673 14.327-32 32-32h640c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.327-32-32zM160 421.162c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 602.838c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 768c0-17.674 14.327-32 32-32h344.614c17.674 0 32 14.326 32 32s-14.326 32-32 32h-344.614c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["document"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":224,"id":73,"name":"document","prevSize":32,"code":59721},"setIdx":1,"setId":4,"iconIdx":79},{"icon":{"paths":["M128.169 352c0-17.674 14.346-32 32.042-32h704.928c17.696 0 32.045 14.326 32.045 32s-14.349 32-32.045 32h-704.928c-17.696 0-32.042-14.326-32.042-32zM213.615 522.669c0-17.674 14.346-32 32.042-32h534.036c17.699 0 32.045 14.326 32.045 32s-14.346 32-32.045 32h-534.036c-17.697 0-32.042-14.326-32.042-32zM331.104 661.331c-17.698 0-32.043 14.326-32.043 32s14.346 32 32.043 32h363.146c17.696 0 32.042-14.326 32.042-32s-14.346-32-32.042-32h-363.146z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["donner"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":225,"id":74,"name":"donner","prevSize":32,"code":59722},"setIdx":1,"setId":4,"iconIdx":80},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l21.374 32.061v17.69h-48c-44.011 0-70.483 14.874-86.278 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h79.999v64h-80c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.304-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.613 53.456 30.349 35.626 38.106 81.35 33.446 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-80v-64h80c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 787.222c12.298-12.691 11.981-32.95-0.707-45.251-12.691-12.298-32.95-11.981-45.251 0.707l-41.021 42.326v-273.005c0-17.674-14.326-32-32-32s-32 14.326-32 32v273.005l-41.021-42.326c-12.301-12.688-32.56-13.005-45.251-0.707-12.688 12.301-13.005 32.56-0.707 45.251l96 99.050c6.029 6.218 14.32 9.728 22.979 9.728s16.95-3.51 22.979-9.728l96-99.050z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["download"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":226,"id":75,"name":"download","prevSize":32,"code":59723},"setIdx":1,"setId":4,"iconIdx":81},{"icon":{"paths":["M795.648 132.004c-25.027-25.027-65.603-25.027-90.63-0l-530.467 530.469c-9.577 9.574-15.873 21.939-17.985 35.318l-19.611 124.186c-1.386 8.771-0.942 17.299 1.006 25.261 7.597 31.037 38.083 53.44 72.291 48.038l124.184-19.613c13.379-2.112 25.744-8.41 35.322-17.984l530.467-530.47c12.512-12.513 18.768-28.914 18.768-45.316 0-10.379-2.506-20.757-7.517-30.15-2.906-5.451-6.656-10.57-11.251-15.164l-104.576-104.575zM630.675 296.979l119.658-119.658 104.576 104.574-119.658 119.657-104.576-104.573zM200.255 831.974l19.611-124.186 365.494-365.494 104.576 104.573-365.494 365.494-124.187 19.613z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["edit"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":227,"id":76,"name":"edit","prevSize":32,"code":59724},"setIdx":1,"setId":4,"iconIdx":82},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM353.226 720c8.963 0 17.526-3.53 24.272-9.437 21.603-18.918 42.64-31.958 62.701-40.509 36.563-15.59 71.805-17.107 104.794-9.939 37.632 8.176 72.659 27.808 102.109 51.341 6.726 5.376 14.995 8.544 23.606 8.544 30.218 0 45.616-34.256 22.397-53.594-36.912-30.742-82.79-57.59-134.522-68.832-44.794-9.734-93.67-7.632-143.485 13.606-28.79 12.275-57.232 30.653-85.024 55.933-21.572 19.619-6.010 52.886 23.152 52.886z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["emoji-bad-mood"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":228,"id":77,"name":"emoji-bad-mood","prevSize":32,"code":59725},"setIdx":1,"setId":4,"iconIdx":83},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM384 640h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["emoji-neutral-mood"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":229,"id":78,"name":"emoji-neutral-mood","prevSize":32,"code":59726},"setIdx":1,"setId":4,"iconIdx":84},{"icon":{"paths":["M330.074 644.886c-21.572-19.619-6.010-52.886 23.152-52.886 8.963 0 17.526 3.53 24.272 9.437 21.603 18.918 42.64 31.958 62.701 40.509 36.563 15.59 71.805 17.107 104.794 9.939 37.632-8.176 72.659-27.808 102.109-51.341 6.726-5.376 14.995-8.544 23.606-8.544 30.218 0 45.616 34.256 22.397 53.594-36.912 30.742-82.79 57.59-134.522 68.832-44.794 9.734-93.67 7.632-143.485-13.606-28.79-12.275-57.232-30.653-85.024-55.933z","M400.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M624.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["emoji"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":230,"id":79,"name":"emoji","prevSize":32,"code":59727},"setIdx":1,"setId":4,"iconIdx":85},{"icon":{"paths":["M655.744 512c88.365 0 160-71.635 160-160s-71.635-160-160-160c-88.368 0-160 71.635-160 160 0 26.934 6.653 52.314 18.41 74.582l-11.914 11.914 0.128 0.131-299.135 299.136c-3.533 9.926-6.41 20.976-7.738 31.606-1.652 13.219-0.563 22.966 1.874 28.938 1.768 4.333 4.22 7.232 10.772 9.014 8.316 2.262 24.518 2.794 52.822-5.501 8.524-3.808 27.721-16.285 45.132-35.382 18.18-19.939 29.648-41.856 29.648-62.438 0-15.642 11.309-28.992 26.736-31.565l91.75-15.293c3.766-2.656 18.768-15.693 10.134-58.867-2.099-10.49 1.184-21.338 8.749-28.902l88.198-88.195c26.467 19.379 59.114 30.822 94.432 30.822zM439.571 410.915c-5.104-18.771-7.827-38.525-7.827-58.915 0-123.712 100.288-224 224-224 123.709 0 224 100.288 224 224s-100.291 224-224 224c-29.29 0-57.264-5.619-82.906-15.843l-43.008 43.008c7.158 65.494-23.99 104.534-55.968 115.194l-2.384 0.794-74.854 12.477c-7.085 31.405-25.174 58.122-43.235 77.933-23.123 25.357-50.958 44.627-69.762 52.15l-1.324 0.528-1.365 0.41c-34.714 10.416-64.73 13.19-89.594 6.429-26.782-7.286-44.33-24.784-53.228-46.586-8.23-20.163-8.473-42.282-6.126-61.062 2.402-19.216 7.899-37.958 14.042-53.315 1.61-4.022 4.020-7.677 7.084-10.742l286.456-286.458zM623.744 336c0 26.509 21.488 48 48 48 26.509 0 48-21.491 48-48s-21.491-48-48-48c-26.512 0-48 21.49-48 48z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["encrypted"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":231,"id":80,"name":"encrypted","prevSize":32,"code":59728},"setIdx":1,"setId":4,"iconIdx":86},{"icon":{"paths":["M536.89 64c233.677 0 423.11 189.433 423.11 423.11h-423.11v-423.11z","M64 536.89c0-233.678 189.433-423.112 423.11-423.112v423.112h423.11c0 233.677-189.43 423.11-423.11 423.11-233.677 0-423.11-189.434-423.11-423.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["engagement-dashboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":232,"id":81,"name":"engagement-dashboard","prevSize":32,"code":59729},"setIdx":1,"setId":4,"iconIdx":87},{"icon":{"paths":["M416 586.445v177.232l75.514-62.928c11.869-9.888 29.104-9.888 40.973 0l75.514 62.928v-177.232c-29.098 13.821-61.645 21.555-96 21.555s-66.902-7.734-96-21.555zM352 540.768v291.232c0 12.416 7.184 23.712 18.426 28.979 11.245 5.267 24.522 3.552 34.061-4.397l107.514-89.594 107.514 89.594c9.539 7.949 22.816 9.664 34.061 4.397 11.242-5.267 18.426-16.563 18.426-28.979v-291.232c39.59-40.403 64-95.734 64-156.768 0-123.712-100.288-224.001-224-224.001s-224 100.288-224 224.001c0 61.034 24.41 116.365 64 156.768zM416 512.013l-0.016-0.013c-38.854-29.19-63.984-75.661-63.984-128 0-88.366 71.635-160.001 160-160.001s160 71.635 160 160.001c0 52.339-25.13 98.81-63.984 128l-0.016 0.013c-26.742 20.083-59.981 31.987-96 31.987s-69.258-11.904-96-31.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["enterprise-feature"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":233,"id":82,"name":"enterprise-feature","prevSize":32,"code":59730},"setIdx":1,"setId":4,"iconIdx":88},{"icon":{"paths":["M500.64 128c213.35 0 386.336 172.985 386.336 386.336 0 192.87-141.254 352.707-325.974 381.664v-269.958h90.022l17.114-111.706h-107.136v-72.47c0-11.462 2.102-22.822 7.274-32.544 2.474-4.656 5.651-8.934 9.635-12.666 9.866-9.245 24.688-15.152 46.058-15.152h48.733v-95.080c0 0-44.224-7.552-86.493-7.552-84.698 0-141.258 49.313-145.651 138.907-0.182 3.738-0.275 7.546-0.275 11.424v85.133h-98.122v111.706h98.122v269.958c-184.721-29.011-325.978-188.848-325.978-381.664 0-213.351 172.985-386.336 386.336-386.336z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["facebook-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":30,"id":83,"name":"facebook-monochromatic","prevSize":32,"code":59731},"setIdx":1,"setId":4,"iconIdx":89},{"icon":{"paths":["M373.334 448c0-17.674 14.326-32 32-32h213.331c17.674 0 32 14.326 32 32s-14.326 32-32 32h-213.331c-17.674 0-32-14.326-32-32z","M405.334 544c-17.674 0-32 14.326-32 32s14.326 32 32 32h213.331c17.674 0 32-14.326 32-32s-14.326-32-32-32h-213.331z","M256 128c-17.673 0-32 14.327-32 32v704c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-501.744c0-6.672-2.083-13.174-5.962-18.602l-144.467-202.254c-6.006-8.409-15.706-13.4-26.038-13.4h-367.533zM736 372.509v459.491h-448v-640h319.066l128.934 180.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["file-document"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":29,"id":84,"name":"file-document","prevSize":32,"code":59732},"setIdx":1,"setId":4,"iconIdx":90},{"icon":{"paths":["M128 192c-17.673 0-32 14.327-32 32v576.019c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-576.019c0-17.673-14.326-32-32-32h-768zM160 378.301v-122.301h149.333v122.301h-149.333zM160 442.301h149.333v141.722h-149.333v-141.722zM160 648.022h149.333v119.997h-149.333v-119.997zM373.334 768.019v-119.997h490.666v119.997h-490.666zM864 584.022h-490.666v-141.722h490.666v141.722zM864 378.301h-490.666v-122.301h490.666v122.301z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["file-sheet"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":28,"id":85,"name":"file-sheet","prevSize":32,"code":59733},"setIdx":1,"setId":4,"iconIdx":91},{"icon":{"paths":["M206.667 293.692c-30.421-42.402-0.116-101.442 52.070-101.442h518.572c51.174 0 81.706 57.026 53.334 99.615l-180.678 271.207v220.762c0 46.352-47.693 77.373-90.067 58.582l-121.424-53.85c-23.168-10.275-38.102-33.238-38.102-58.582v-166.304l-193.704-269.988zM777.309 256.334h-518.572l193.705 269.989c7.811 10.89 12.013 23.955 12.013 37.357v166.304l121.424 53.85v-220.762c0-12.646 3.741-25.008 10.752-35.533l180.678-271.205z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["filter"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":27,"id":86,"name":"filter","prevSize":32,"code":59734},"setIdx":1,"setId":4,"iconIdx":92},{"icon":{"paths":["M623.091 896c-2.806 0-5.296-0.624-7.168-0.938-62-16.858-102.816-39.648-145.811-80.858-55.149-54.010-85.37-125.814-85.37-202.301 0-65.875 56.704-119.571 126.496-119.571s126.496 53.696 126.496 119.571c0 34.963 31.469 63.373 69.792 63.373s69.789-28.41 69.789-63.373c0-135.808-119.642-246.637-266.701-246.637-104.998 0-200.338 57.133-243.334 145.795-14.332 29.347-21.498 63.066-21.498 100.842 0 28.72 2.492 73.363 24.925 131.744 2.804 7.181 2.492 14.675-0.623 21.856-3.116 6.867-9.035 11.862-16.201 14.358-2.804 1.251-6.231 1.562-9.659 1.562-11.84 0-22.433-7.181-26.484-18.106-19.005-50.266-28.353-99.904-28.353-151.728 0-46.205 9.036-88.352 26.795-125.504 52.343-108.019 167.936-177.638 294.432-177.638 178.528 0 323.718 135.804 323.718 302.828 0 65.875-56.704 119.571-126.806 119.571s-126.81-53.696-126.81-119.571c0-34.963-31.469-63.373-69.792-63.373-38.634 0-69.789 28.41-69.789 63.373 0 61.504 24.301 119.261 68.544 162.342 35.206 34.029 68.858 53.072 120.576 67.123 7.168 1.872 13.398 6.557 17.136 13.11 3.741 6.557 4.675 14.362 2.806 21.229-2.806 11.866-14.022 20.918-27.107 20.918zM426.803 888.195c-7.789 0-15.267-3.123-20.253-8.742-33.338-32.781-51.718-54.010-77.891-100.525-26.795-47.142-41.127-105.21-41.127-167.338 0-116.448 100.948-211.357 224.951-211.357s224.954 94.909 224.954 211.357c0 15.61-12.464 28.096-28.352 28.096-15.891 0-28.666-12.173-28.666-28.096 0-85.542-75.398-155.162-168.246-155.162s-168.246 69.619-168.246 155.162c0 52.448 11.84 100.528 34.272 139.552 23.366 41.52 38.947 59.005 68.858 88.662 10.902 11.238 10.902 28.723 0 39.648-5.92 5.933-13.088 8.742-20.253 8.742zM699.738 818.886c-47.36 0-88.797-11.862-123.382-34.963-59.197-39.651-94.717-103.962-94.717-172.333 0-15.61 12.464-28.099 28.352-28.099 15.891 0 28.355 12.49 28.355 28.099 0 49.638 26.17 96.781 69.789 125.501 25.238 16.861 55.149 24.976 91.603 24.976 7.789 0 22.432-0.934 38.010-3.744 1.558-0.314 3.427-0.314 4.986-0.314 13.709 0 25.238 9.99 27.728 23.414 1.248 7.181-0.31 14.672-4.362 20.605-4.362 6.243-10.902 10.614-18.694 11.862-23.366 4.685-43.93 4.995-47.667 4.995zM188.765 435.824c-5.608 0-11.217-1.562-16.202-4.995-6.543-4.058-10.593-10.614-12.151-18.106-1.246-7.494 0.311-14.986 4.985-21.232 38.635-53.696 87.862-95.843 146.125-125.501 60.132-30.595 129.613-46.829 200.961-46.829 71.037 0 140.205 15.922 200.029 46.205 58.573 29.659 107.802 71.492 146.125 124.567 4.362 5.93 6.23 13.424 4.986 20.915-1.248 7.494-5.61 14.048-11.84 18.419-4.986 3.437-10.595 4.995-16.515 4.995-9.034 0-17.757-4.371-23.056-11.862-33.338-45.891-75.709-82.109-125.562-107.083-52.342-26.224-112.787-40.273-174.477-40.273-62.314 0-122.758 14.049-175.101 40.585-49.852 25.913-92.537 62.128-126.186 108.643-3.739 6.87-12.463 11.552-22.121 11.552zM733.696 239.141c-4.672 0-9.347-1.249-13.395-3.434-71.35-35.902-133.354-51.512-207.504-51.512-74.467 0-144.256 17.483-207.817 51.824-4.050 2.185-8.724 3.122-13.397 3.122-10.282 0-19.629-5.62-24.925-14.361-3.739-6.556-4.673-14.361-2.492-21.541s7.166-13.424 13.709-16.859c72.594-38.712 151.733-58.38 234.924-58.38 82.563 0 154.848 17.795 233.987 58.068 6.854 3.434 11.84 9.366 14.33 16.859 2.182 7.18 1.248 14.673-2.179 21.229-4.986 9.054-14.643 14.985-25.238 14.985z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["fingerprint"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":26,"id":87,"name":"fingerprint","prevSize":32,"code":59735},"setIdx":1,"setId":4,"iconIdx":93},{"icon":{"paths":["M266.667 170.664c0-17.673 14.327-32 32-32h500.623c12.122 0 23.2 6.848 28.621 17.689s4.253 23.814-3.021 33.511l-122.134 162.843 122.134 162.845c7.274 9.696 8.442 22.672 3.021 33.51-5.421 10.842-16.499 17.69-28.621 17.69h-468.624v286.579c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-682.667zM330.666 502.752h404.624l-98.134-130.845c-8.531-11.376-8.531-27.021 0-38.4l98.134-130.843h-404.624v300.088z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["flag"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":25,"id":88,"name":"flag","prevSize":32,"code":59736},"setIdx":1,"setId":4,"iconIdx":94},{"icon":{"paths":["M140.020 213.336c0-17.673 14.327-32 32-32h234.057c7.181 0 14.157 2.416 19.798 6.86l88.813 69.94h339.997c17.674 0 32 14.327 32 32v520.533c0 17.674-14.326 32-32 32h-682.665c-17.673 0-32-14.326-32-32v-597.333zM204.020 245.336v533.333h618.665v-456.534h-319.085c-7.181 0-14.154-2.415-19.798-6.858l-88.813-69.94h-190.969z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["folder"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":24,"id":89,"name":"folder","prevSize":32,"code":59737},"setIdx":1,"setId":4,"iconIdx":95},{"icon":{"paths":["M370.704 544c0-17.674-14.326-32-32-32s-31.999 14.326-31.999 32v32h-32c-17.673 0-32 14.326-32 32s14.327 32 32 32h32v32c0 17.674 14.325 32 31.999 32s32-14.326 32-32v-32h32c17.674 0 32-14.326 32-32s-14.326-32-32-32h-32v-32z","M746.704 624c30.928 0 56-25.072 56-56s-25.072-56-56-56c-30.928 0-56 25.072-56 56s25.072 56 56 56z","M674.704 664c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-30.928 25.072-56 56-56s56 25.072 56 56z","M706.704 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v96h-128c-17.674 0-32 14.327-32 32v96h-191.999c-106.038 0-192 85.962-192 192v128c0 106.038 85.961 192 192 192h447.999c106.038 0 192-85.962 192-192v-128c0-106.038-85.962-192-192-192h-192v-64h128c17.674 0 32-14.327 32-32v-128zM866.704 544v128c0 70.691-57.306 128-128 128h-447.999c-70.692 0-128-57.309-128-128v-128c0-70.691 57.308-128 128-128h447.999c70.694 0 128 57.309 128 128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["game"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":23,"id":90,"name":"game","prevSize":32,"code":59738},"setIdx":1,"setId":4,"iconIdx":96},{"icon":{"paths":["M494.31 170.648l23.037 24.005 23.629-24.005 74.669 0.041v75.854h74.669v75.856h74.666v26.518h0.003v504.419h-522.678v-682.689h252.006zM540.976 246.503h-224.004v530.979h373.341v-379.229h-149.338v-151.75z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["giphy-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":21,"id":91,"name":"giphy-monochromatic","prevSize":32,"code":59739},"setIdx":1,"setId":4,"iconIdx":97},{"icon":{"paths":["M634.803 170.664h-256.112l-264.387 460.802 124.984 221.866h534.916l124.982-221.866-264.384-460.802zM367.814 631.466l138.931-239.789 138.934 239.789h-277.866z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["google-drive-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":19,"id":92,"name":"google-drive-monochromatic","prevSize":32,"code":59756},"setIdx":1,"setId":4,"iconIdx":98},{"icon":{"paths":["M129.354 272c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32s-14.326 32-32 32h-704c-17.673 0-32-14.327-32-32zM289.354 432c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM289.354 752c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM449.354 624c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.326-32 32s14.326 32 32 32zM385.354 400c-17.674 0-32 14.326-32 32s14.326 32 32 32h480c17.674 0 32-14.326 32-32s-14.326-32-32-32h-480zM353.354 752c0-17.674 14.326-32 32-32h480c17.674 0 32 14.326 32 32s-14.326 32-32 32h-480c-17.674 0-32-14.326-32-32zM577.354 560c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.674 0 32-14.326 32-32s-14.326-32-32-32h-288z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["group-by-type"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":150,"id":93,"name":"group-by-type","prevSize":32,"code":59757},"setIdx":1,"setId":4,"iconIdx":99},{"icon":{"paths":["M170.668 245.336c0-17.673 14.327-32 32-32h640.846c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640.846c-17.673 0-32-14.327-32-32zM170.668 501.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32zM170.668 757.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["hamburguer"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":148,"id":94,"name":"hamburguer","prevSize":32,"code":59758},"setIdx":1,"setId":4,"iconIdx":100},{"icon":{"paths":["M832 512c0 176.73-143.27 320-320 320s-320-143.27-320-320h-64c0 212.077 171.923 384 384 384s384-171.923 384-384c0-212.077-171.923-384-384-384-123.718 0-233.772 58.508-304 149.364v-101.364c0-17.673-14.327-32-32-32s-32 14.327-32 32v192c0 17.674 14.327 32 32 32h176c17.674 0 32-14.326 32-32s-14.326-32-32-32h-107.295c57.24-86.756 155.583-144 267.295-144 176.73 0 320 143.27 320 320z","M544 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["history"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":145,"id":95,"name":"history","prevSize":32,"code":59759},"setIdx":1,"setId":4,"iconIdx":101},{"icon":{"paths":["M522.042 195.354l224.464 260.044v366.234c0 5.856-4.752 10.605-10.614 10.605h-136.416v-149.821c0-23.424-19.014-42.413-42.47-42.413h-85.955c-23.453 0-42.467 18.989-42.467 42.413v149.821h-136.41c-5.864 0-10.617-4.749-10.617-10.605v-366.307l224.403-259.971c4.237-4.907 11.85-4.907 16.083 0zM560.57 895.856h175.322c41.043 0 74.32-33.232 74.32-74.224v-244.205h56.227c12.454 0 23.766-7.251 28.954-18.557 5.19-11.309 3.302-24.602-4.829-34.022l-320.272-371.033c-29.648-34.347-82.934-34.347-112.582 0l-320.27 371.033c-8.132 9.421-10.020 22.714-4.831 34.022 5.188 11.306 16.501 18.557 28.956 18.557h56.288v244.205c0 40.992 33.274 74.224 74.32 74.224h175.316c1.174 0.096 2.362 0.147 3.562 0.147h85.955c1.2 0 2.39-0.051 3.565-0.147z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["home"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":146,"id":96,"name":"home","prevSize":32,"code":59760},"setIdx":1,"setId":4,"iconIdx":102},{"icon":{"paths":["M406.685 405.334c0 47.126-38.205 85.331-85.334 85.331-47.127 0-85.332-38.205-85.332-85.331 0-47.13 38.205-85.334 85.332-85.334 47.13 0 85.334 38.205 85.334 85.334z","M97.352 192c0-17.673 14.327-32 32-32h767.999c17.674 0 32 14.327 32 32v640c0 17.674-14.326 32-32 32h-767.999c-17.673 0-32-14.326-32-32v-640zM161.352 764.163l151.704-176.989c9.271-10.813 24.57-14.202 37.536-8.307l153.123 69.603 160.474-204.24c6.010-7.651 15.174-12.15 24.902-12.23s18.963 4.272 25.098 11.821l151.162 186.048v-405.869h-703.999v540.163zM214.927 800h650.423v-68.64l-175.581-216.099-166.781 212.269-176.989-80.448-131.073 152.918z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["image"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":147,"id":97,"name":"image","prevSize":32,"code":59761},"setIdx":1,"setId":4,"iconIdx":103},{"icon":{"paths":["M512 873.027c-199.389 0-361.026-161.635-361.026-361.024s161.636-361.026 361.026-361.026c199.389 0 361.024 161.637 361.024 361.026s-161.635 361.024-361.024 361.024zM512 938.669c235.642 0 426.666-191.024 426.666-426.666s-191.024-426.667-426.666-426.667c-235.642 0-426.667 191.025-426.667 426.667s191.025 426.666 426.667 426.666zM544.819 347.901c0 18.125-14.694 32.819-32.819 32.819-18.128 0-32.822-14.694-32.822-32.819 0-18.128 14.694-32.821 32.822-32.821 18.125 0 32.819 14.693 32.819 32.821zM512 413.542c-18.128 0-32.822 14.694-32.822 32.819v229.744c0 18.125 14.694 32.819 32.822 32.819 18.125 0 32.819-14.694 32.819-32.819v-229.744c0-18.125-14.694-32.819-32.819-32.819z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["info"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":144,"id":98,"name":"info","prevSize":32,"code":59762},"setIdx":1,"setId":4,"iconIdx":104},{"icon":{"paths":["M512 864c-194.404 0-352-157.597-352-352s157.596-352 352-352c194.403 0 352 157.596 352 352s-157.597 352-352 352zM512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.75 0-416 186.25-416 416s186.25 416 416 416zM662.627 361.373c12.496 12.496 12.496 32.758 0 45.254l-105.373 105.373 105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l105.373-105.373-105.373-105.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373 105.373-105.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["input-clear"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":143,"id":99,"name":"input-clear","prevSize":32,"code":59763},"setIdx":1,"setId":4,"iconIdx":105},{"icon":{"paths":["M384 288c-17.674 0-32 14.327-32 32s14.326 32 32 32h256c17.674 0 32-14.326 32-32s-14.326-32-32-32h-256z","M352 448c0-17.674 14.326-32 32-32h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M512 640c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M224 224v576c0 35.347 28.654 64 64 64h448c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-448c-35.346 0-64 28.654-64 64zM288 800v-576h448v576h-448z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["instance"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":18,"id":100,"name":"instance","prevSize":32,"code":59764},"setIdx":1,"setId":4,"iconIdx":106},{"icon":{"paths":["M544 352c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32zM559.61 436.995c2.755-17.456-9.162-33.843-26.618-36.598-17.456-2.758-33.843 9.162-36.598 26.618l-48 304c-2.758 17.456 9.158 33.843 26.618 36.598 17.456 2.755 33.84-9.162 36.598-26.618l48-304z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["italic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":17,"id":101,"name":"italic","prevSize":32,"code":59765},"setIdx":1,"setId":4,"iconIdx":107},{"icon":{"paths":["M497.136 169.372c12.499 12.497 12.499 32.758 0 45.255l-35.958 35.96c1.078-0.016 2.163-0.025 3.245-0.025h191.152c115.11 0 208.426 93.316 208.426 208.426 0 115.107-93.315 208.422-208.426 208.422h-15.574v-64h15.574c79.763 0 144.426-64.659 144.426-144.422 0-79.766-64.662-144.426-144.426-144.426h-191.152c-1.030 0-2.058 0.011-3.082 0.032l35.795 35.796c12.499 12.499 12.499 32.758 0 45.258-12.496 12.496-32.758 12.496-45.254 0l-90.509-90.511c-12.496-12.497-12.496-32.758 0-45.255l90.509-90.51c12.496-12.497 32.758-12.497 45.254 0zM201.318 500.746h56.159v325.818h-59.023v-268.387h-1.909l-76.204 48.682v-54.090l80.977-52.022zM570.41 719.494c0 64.749-48.045 111.523-116.931 111.523-63.638 0-110.886-38.979-112.48-93.069h57.274c2.070 26.726 25.773 45.341 55.206 45.341 34.838 0 59.978-25.933 59.818-62.365 0.16-36.909-25.613-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.024-168h188.998v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.184 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-backward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":16,"id":102,"name":"jump-backward","prevSize":32,"code":59766},"setIdx":1,"setId":4,"iconIdx":108},{"icon":{"paths":["M494.861 169.372c-12.496 12.497-12.496 32.758 0 45.255l35.962 35.96c-1.082-0.016-2.163-0.025-3.248-0.025h-191.149c-115.111 0-208.426 93.316-208.426 208.426 0 115.107 93.315 208.422 208.426 208.422h15.574v-64h-15.574c-79.764 0-144.426-64.659-144.426-144.422 0-79.766 64.661-144.426 144.426-144.426h191.149c1.030 0 2.061 0.011 3.085 0.032l-35.798 35.796c-12.496 12.499-12.496 32.758 0 45.258 12.499 12.496 32.758 12.496 45.258 0l90.509-90.511c12.496-12.497 12.496-32.758 0-45.255l-90.509-90.51c-12.499-12.497-32.758-12.497-45.258 0zM521.318 500.746h56.157v325.818h-59.021v-268.387h-1.91l-76.205 48.682v-54.090l80.979-52.022zM890.41 719.494c0 64.749-48.048 111.523-116.934 111.523-63.635 0-110.886-38.979-112.477-93.069h57.274c2.067 26.726 25.773 45.341 55.203 45.341 34.842 0 59.978-25.933 59.821-62.365 0.157-36.909-25.616-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.021-168h189.002v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.181 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":15,"id":103,"name":"jump-forward","prevSize":32,"code":59767},"setIdx":1,"setId":4,"iconIdx":109},{"icon":{"paths":["M769.296 649.373c12.496 12.496 12.496 32.758 0 45.254l-192 192c-12.499 12.496-32.758 12.496-45.258 0l-192-192c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.258 0l137.37 137.373v-578.746h-192v192c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-224c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v610.746l137.373-137.373c12.499-12.496 32.758-12.496 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-to-message"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":14,"id":104,"name":"jump-to-message","prevSize":32,"code":59768},"setIdx":1,"setId":4,"iconIdx":110},{"icon":{"paths":["M576 256c0 35.346-28.653 64-64 64s-64-28.654-64-64c0-35.346 28.653-64 64-64s64 28.654 64 64z","M576 512c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z","M576 768c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["kebab"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":13,"id":105,"name":"kebab","prevSize":32,"code":59769},"setIdx":1,"setId":4,"iconIdx":111},{"icon":{"paths":["M160 224c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h704c35.347 0 64-28.653 64-64v-448c0-35.346-28.653-64-64-64h-704zM160 288h704v448h-704v-448zM256 352c-17.673 0-32 14.326-32 32s14.327 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM256 512c0-17.674 14.327-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.673 0-32-14.326-32-32zM480 480c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM640 512c0-17.674 14.326-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.674 0-32-14.326-32-32zM480 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM320 640c0-17.674 14.326-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-320c-17.674 0-32-14.326-32-32zM704 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["keyboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":12,"id":106,"name":"keyboard","prevSize":32,"code":59770},"setIdx":1,"setId":4,"iconIdx":112},{"icon":{"paths":["M681.904 256c0-17.673-14.326-32-32-32s-32 14.327-32 32v56.875l-80.346 13.998c-17.411 3.034-29.069 19.61-26.035 37.021 3.034 17.408 19.61 29.066 37.021 26.032l69.36-12.086v69.373c-30.384 6.851-60.461 20.074-84.154 43.139-27.923 27.184-44.070 65.238-44.070 113.808 0 25.741 6.262 48.262 18.451 66.621 12.186 18.349 29.062 30.682 47.251 38 35.357 14.221 76.72 10.173 108.128-4.579l1.206-0.566c31.126-14.621 62.493-29.354 90.723-57.818 21.325-21.507 39.709-49.539 56.848-88.678 5.654 9.498 9.594 20.966 10.285 34.339 1.632 31.526-14.275 82.813-87.955 153.418-12.758 12.227-13.19 32.483-0.963 45.245 12.227 12.758 32.486 13.19 45.245 0.963 80.192-76.851 110.586-145.034 107.59-202.934-2.986-57.658-38.586-96.022-70.675-113.955-20.774-13.014-50.214-22.826-81.216-28.288-16.624-2.931-34.47-4.749-52.694-4.995v-74.243l101.718-17.722c17.411-3.034 29.066-19.61 26.032-37.019-3.034-17.411-19.606-29.066-37.018-26.032l-90.733 15.809v-45.724zM578.394 536.208c10.163-9.891 23.565-17.475 39.51-22.704v138.653c-13.443 2.547-27.485 1.731-38.634-2.752-7.712-3.104-13.658-7.757-17.824-14.029-4.157-6.262-7.766-15.997-7.766-31.216 0-33.35 10.563-54.176 24.714-67.952zM709.994 600.752c-8.682 8.755-17.782 15.706-28.090 22.074v-117.888c14.125 0.24 28.224 1.661 41.587 4.016 13.587 2.397 25.683 5.622 35.763 9.165-16.88 42.038-33.069 66.304-49.261 82.634zM247.704 565.334h98.386l-49.193-184.883-49.193 184.883zM390.851 733.562l-27.734-104.227h-132.442l-27.732 104.227c-4.544 17.078-22.073 27.242-39.152 22.694-17.079-4.544-27.24-22.070-22.696-39.152l106.323-399.598c13.494-50.714 85.462-50.713 98.956 0l106.323 399.598c4.544 17.082-5.616 34.608-22.694 39.152-17.078 4.547-34.608-5.616-39.152-22.694z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["language"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":11,"id":107,"name":"language","prevSize":32,"code":59771},"setIdx":1,"setId":4,"iconIdx":113},{"icon":{"paths":["M253.489 275.612l-13.972 14.271c-37.092 37.883-36.45 98.664 1.435 135.758l145.62 142.573c37.885 37.091 98.666 36.448 135.757-1.437l13.971-14.269c0.723-0.739 1.434-1.488 2.128-2.243l0.102 0.099c5.805-5.904 13.885-9.568 22.822-9.568 17.674 0 32 14.326 32 32 0 9.6-4.227 18.211-10.922 24.077l-0.4 0.41-13.971 14.269c-61.821 63.142-163.12 64.214-226.262 2.394l-145.62-142.576c-63.141-61.818-64.212-163.119-2.392-226.26l13.972-14.27c61.82-63.141 163.121-64.212 226.26-2.392l74.694 73.131c0.976 0.847 1.901 1.752 2.768 2.71l0.374 0.366-0.026 0.026c4.931 5.63 7.923 13.005 7.923 21.078 0 17.674-14.326 32-32 32-7.83 0-15.005-2.813-20.566-7.482l-0.106 0.109-77.837-76.206c-37.882-37.092-98.664-36.45-135.756 1.435zM789.213 768.003l13.974-14.269c37.091-37.885 36.448-98.666-1.437-135.757l-145.619-142.576c-37.885-37.091-98.666-36.448-135.757 1.437l-13.974 14.269c-0.723 0.739-1.43 1.488-2.125 2.243l-0.102-0.099c-5.805 5.907-13.885 9.568-22.822 9.568-17.674 0-32-14.326-32-32 0-9.6 4.227-18.211 10.922-24.077l0.397-0.406 13.974-14.272c61.818-63.142 163.12-64.211 226.259-2.39l145.622 142.573c63.139 61.821 64.211 163.12 2.39 226.262l-13.971 14.269c-61.821 63.142-163.12 64.211-226.262 2.394l-74.691-73.133c-0.976-0.845-1.901-1.75-2.768-2.71l-0.374-0.365 0.026-0.026c-4.934-5.629-7.923-13.005-7.923-21.078 0-17.674 14.326-32 32-32 7.83 0 15.005 2.813 20.566 7.482l0.106-0.109 77.834 76.208c37.885 37.091 98.666 36.448 135.757-1.437z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["link"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":10,"id":108,"name":"link","prevSize":32,"code":59772},"setIdx":1,"setId":4,"iconIdx":114},{"icon":{"paths":["M439.274 704.374c0-33.645 26.278-47.677 72.726-47.677s72.73 14.032 72.73 47.677c0 32.96-13.19 111.069-23.914 149.76-4.963 17.808-22.080 25.171-48.816 25.171s-43.85-7.363-48.813-25.174c-10.717-38.666-23.914-116.688-23.914-149.757zM616.778 870.374l0.026-0.090c6.176-22.291 12.566-53.869 17.386-83.453 4.688-28.787 8.72-60.707 8.72-82.458 0-35.891-15.811-67.802-46.797-87.114-26.035-16.227-57.152-19.926-84.112-19.926-26.957 0-58.077 3.699-84.112 19.926-30.982 19.312-46.797 51.222-46.797 87.114 0 21.805 4.035 53.728 8.726 82.515 4.819 29.578 11.21 61.123 17.379 83.392l0.026 0.086c7.402 26.557 24.982 45.664 46.87 56.467 19.472 9.61 40.426 11.834 57.907 11.834 17.485 0 38.435-2.224 57.907-11.83 21.888-10.8 39.469-29.907 46.87-56.464zM459.635 460.8c0-28.275 23.446-51.2 52.365-51.2s52.365 22.925 52.365 51.2c0 28.278-23.446 51.2-52.365 51.2s-52.365-22.922-52.365-51.2zM512 341.334c-67.478 0-122.182 53.488-122.182 119.466 0 65.981 54.704 119.469 122.182 119.469s122.182-53.488 122.182-119.469c0-65.978-54.704-119.466-122.182-119.466zM677.802 537.254c-6.662 13.792-3.882 31.11 6.278 42.573 14.086 15.894 39.85 17.939 50.205-0.602 19.642-35.174 30.806-75.526 30.806-118.426 0-136.672-113.315-247.465-253.091-247.465-139.779 0-253.092 110.793-253.092 247.465 0 42.899 11.164 83.251 30.806 118.426 10.354 18.541 36.119 16.496 50.205 0.602 10.16-11.462 12.938-28.781 6.275-42.573-11.203-23.187-17.469-49.104-17.469-76.454 0-98.97 82.054-179.199 183.274-179.199s183.27 80.229 183.27 179.199c0 27.35-6.262 53.267-17.469 76.454zM730.16 699.795c-0.304-10.659 3.542-21.072 10.928-28.762 52.771-54.957 85.094-128.902 85.094-210.234 0-169.661-140.666-307.199-314.182-307.199s-314.182 137.538-314.182 307.199c0 81.331 32.323 155.28 85.093 210.234 7.386 7.69 11.234 18.102 10.928 28.762-0.833 29.018-31.273 47.917-52.121 27.715-70.223-68.042-113.718-162.41-113.718-266.71 0-207.363 171.923-375.465 384-375.465s384 168.102 384 375.465c0 104.304-43.498 198.672-113.722 266.714-20.848 20.202-51.286 1.302-52.118-27.718z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["live-streaming"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":9,"id":109,"name":"live-streaming","prevSize":32,"code":59773},"setIdx":1,"setId":4,"iconIdx":115},{"icon":{"paths":["M700.144 361.891c4.685-24.973 34.704-34.093 49.13-13.171 31.994 46.403 50.726 102.653 50.726 163.28s-18.733 116.88-50.726 163.283c-14.426 20.922-44.445 11.802-49.13-13.174l-1.706-9.101c-1.581-8.429 0.384-17.082 4.858-24.403 20.749-33.965 32.704-73.888 32.704-116.605 0-42.714-11.955-82.637-32.704-116.605-4.474-7.318-6.438-15.971-4.858-24.4l1.706-9.104z","M320.704 395.395c-20.748 33.968-32.704 73.891-32.704 116.605 0 42.717 11.956 82.64 32.704 116.605 4.474 7.322 6.438 15.974 4.858 24.403l-1.706 9.101c-4.684 24.976-34.705 34.096-49.128 13.174-31.994-46.403-50.728-102.656-50.728-163.283s18.733-116.877 50.728-163.28c14.424-20.922 44.444-11.802 49.128 13.171l1.706 9.104c1.581 8.429-0.384 17.082-4.858 24.4z","M728.765 209.256l-0.515 2.747c-2.234 11.911 2.534 23.967 11.763 31.821 75.866 64.565 123.987 160.751 123.987 268.175 0 107.427-48.122 203.613-123.987 268.176-9.229 7.856-13.997 19.914-11.763 31.824l0.515 2.746c4.192 22.362 29.69 33.194 47.261 18.746 92.794-76.294 151.974-191.981 151.974-321.491 0-129.507-59.181-245.193-151.974-321.489-17.571-14.448-43.069-3.615-47.261 18.745z","M283.986 243.825c9.228-7.854 13.998-19.911 11.764-31.821l-0.515-2.747c-4.192-22.359-29.69-33.193-47.262-18.745-92.793 76.296-151.973 191.981-151.973 321.489 0 129.51 59.18 245.197 151.973 321.491 17.572 14.448 43.070 3.616 47.262-18.746l0.515-2.746c2.233-11.91-2.536-23.968-11.764-31.824-75.864-64.563-123.986-160.749-123.986-268.176 0-107.424 48.122-203.61 123.986-268.175z","M608 512c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.018 42.979-96 96-96s96 42.982 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["live"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":8,"id":110,"name":"live","prevSize":32,"code":59774},"setIdx":1,"setId":4,"iconIdx":116},{"icon":{"paths":["M397.011 527.334c26.576 0 48.122-21.587 48.122-48.214s-21.546-48.214-48.122-48.214c-26.576 0-48.118 21.587-48.118 48.214s21.542 48.214 48.118 48.214z","M589.491 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M733.853 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M88.039 813.683l119.625 31.283c85.312 22.307 173.45-16.256 238.691-79.709 29.501 4.794 59.875 7.242 90.678 7.242 218.294 0 404.339-122.864 404.339-294.518 0-171.664-186.042-294.52-404.339-294.52-218.314 0-404.351 122.852-404.34 294.523 0 65.072 27.642 125.014 75.655 173.587-2.847 24.835-14.596 44.73-36.049 68.55l-84.261 93.562zM537.034 258.997c183.13 0 331.6 98.043 331.6 218.984 0 120.931-148.47 218.982-331.6 218.982-40.781 0-79.834-4.877-115.91-13.763-36.669 45.6-117.335 109.008-195.697 88.518 25.489-28.304 63.251-76.131 55.168-154.909-46.968-37.779-75.162-86.134-75.162-138.829-0.008-120.95 148.461-218.984 331.6-218.984z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["livechat-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":31,"id":111,"name":"livechat-monochromatic","prevSize":32,"code":59775},"setIdx":1,"setId":4,"iconIdx":117},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.326 32 32 32h341.334c17.674 0 32-14.326 32-32s-14.326-32-32-32h-341.334zM85.335 298.672c0-70.692 57.308-128 128-128h597.334c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.334c-70.692 0-128-57.306-128-128v-298.666zM213.335 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.334c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.334zM256 320c0-11.782 9.551-21.333 21.333-21.333h170.667c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.667c-11.782 0-21.333-9.552-21.333-21.334zM277.333 554.666c-11.782 0-21.333 9.552-21.333 21.334s9.551 21.334 21.333 21.334h85.332c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-85.332zM554.666 320c0-11.782 9.552-21.333 21.334-21.333h170.666c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.666c-11.782 0-21.334-9.552-21.334-21.334zM448 554.666c-11.782 0-21.334 9.552-21.334 21.334s9.552 21.334 21.334 21.334h298.666c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-298.666zM256 448c0-11.782 9.551-21.334 21.333-21.334h213.332c11.782 0 21.334 9.552 21.334 21.334s-9.552 21.334-21.334 21.334h-213.332c-11.782 0-21.333-9.552-21.333-21.334zM618.666 426.666c-11.782 0-21.331 9.552-21.331 21.334s9.549 21.334 21.331 21.334h128c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["log-view"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":33,"id":113,"name":"log-view","prevSize":32,"code":59778},"setIdx":1,"setId":4,"iconIdx":119},{"icon":{"paths":["M176 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM521.373 329.373c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.254l-105.373 105.373h418.746c17.674 0 32 14.326 32 32s-14.326 32-32 32h-418.746l105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-160-160c-12.496-12.496-12.496-32.758 0-45.254l160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["login"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":34,"id":114,"name":"login","prevSize":32,"code":59779},"setIdx":1,"setId":4,"iconIdx":120},{"icon":{"paths":["M268.099 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM994.726 489.373l-160-160c-12.496-12.497-32.758-12.497-45.254 0s-12.496 32.758 0 45.254l105.373 105.373h-418.746c-17.674 0-32 14.326-32 32s14.326 32 32 32h418.746l-105.373 105.373c-12.496 12.496-12.496 32.758 0 45.254s32.758 12.496 45.254 0l160-160c12.496-12.496 12.496-32.758 0-45.254z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["logout"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":35,"id":115,"name":"logout","prevSize":32,"code":59780},"setIdx":1,"setId":4,"iconIdx":121},{"icon":{"paths":["M192 736h640v-448h-640v448zM128 256c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32v512c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512zM305.304 389.082c-14.866-9.555-34.665-5.251-44.222 9.613-9.557 14.867-5.253 34.666 9.613 44.224l241.304 155.123 241.306-155.123c14.864-9.558 19.168-29.357 9.613-44.224-9.558-14.864-29.357-19.168-44.224-9.613l-206.694 132.877-206.696-132.877z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mail"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":36,"id":116,"name":"mail","prevSize":32,"code":59781},"setIdx":1,"setId":4,"iconIdx":122},{"icon":{"paths":["M302.769 192h418.463l23.187 72.727h-0.211l23.792 63.999c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818l23.794-63.999h-0.213l23.188-72.727zM212.406 264.727l36.491-114.448c4.231-13.27 16.56-22.279 30.488-22.279h465.23c13.93 0 26.259 9.009 30.49 22.279l56.896 178.447c0 33.939-12.083 64.925-32 88.515v350.778c0 53.018-42.979 96-96 96h-384c-53.019 0-96-42.982-96-96v-350.778c-19.916-23.59-32-54.576-32-88.515l20.406-63.999zM288 458.33v309.69c0 17.67 14.327 32 32 32h128v-192.019h128v192.019h128c17.674 0 32-14.33 32-32v-309.69c-10.227 2.752-20.95 4.214-32 4.214-38.23 0-72.547-17.52-96-45.302-23.453 27.782-57.77 45.302-96 45.302s-72.547-17.52-96-45.302c-23.453 27.782-57.77 45.302-96 45.302-11.050 0-21.772-1.462-32-4.214z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["marketplace"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":37,"id":117,"name":"marketplace","prevSize":32,"code":59782},"setIdx":1,"setId":4,"iconIdx":123},{"icon":{"paths":["M773.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M517.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M261.073 576c-35.346 0-64-28.653-64-64s28.654-64 64-64c35.346 0 63.999 28.653 63.999 64s-28.652 64-63.999 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["meatballs"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":38,"id":118,"name":"meatballs","prevSize":32,"code":59783},"setIdx":1,"setId":4,"iconIdx":124},{"icon":{"paths":["M651.36 116.071c-57.242-19.989-105.792-20.069-138.358-20.071v64l-1.002-64c-92.006 0.342-297.345 47.824-381.242 242.995-17.897 38.97-34.758 103.344-34.758 173.005 0 69.958 17.020 146.285 52.216 207.875 23.229 40.653 92.799 131.376 191.179 173.536 94.861 40.656 206.368 52.349 296.49 16.301 16.41-6.563 24.39-25.187 17.827-41.597s-25.187-24.39-41.597-17.827c-69.878 27.952-163.171 20.445-247.51-15.699-80.819-34.64-141.384-112.451-160.821-146.464-28.804-50.41-43.784-115.418-43.784-176.125 0-60.765 15.020-116.182 29.055-146.589l0.184-0.4 0.173-0.406c69.507-162.181 243.823-204.604 323.589-204.605 31.594 0.002 70.877 0.296 117.258 16.493 46.147 16.114 101.389 48.779 161.824 116.767 43.658 49.115 63.533 114.977 69.389 177.713 5.891 63.12-2.854 118.189-11.546 142.093-6.4 17.6-20.429 45.44-59.392 45.699-18.259-0.806-72.822-14.672-83.12-69.568v-235.062c0-17.674-3.414-34.134-29.014-34.134-19.338 0-26.454 16.461-26.454 34.134v34.131c-35.181-39.859-95.402-68.266-152.746-68.266-106.038 0-192 85.962-192 192s85.962 192 192 192c62.179 0 117.658-29.555 152.746-75.386 25.715 71.078 102.57 93.027 137.014 94.134l0.515 0.016h0.512c82.643 0 111.715-64.806 120.086-87.83 12.64-34.762 21.674-99.696 15.12-169.907-6.589-70.595-29.379-151.401-85.277-214.287-66.902-75.265-131.075-114.597-188.557-134.67zM627.2 512c0 70.691-57.309 128-128 128s-128-57.309-128-128c0-70.691 57.309-128 128-128s128 57.309 128 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mention"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":142,"id":119,"name":"mention","prevSize":32,"code":59784},"setIdx":1,"setId":4,"iconIdx":125},{"icon":{"paths":["M477.84 128c104.256 0 181.251 29.018 237.494 70.652l-44.317 44.317c-45.52-31.22-107.747-53.057-193.178-53.057-129.725 0-207.83 53.576-254.529 118.696-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-7.328 80.928 13.761 143.126 51.784 190.499l-43.879 43.878c-50.179-59.901-78.131-139.043-69.441-238.595 0.276-63.411 19.117-157.053 75.696-235.948 58.132-81.063 154.749-144.433 304.573-144.433zM822.848 332.499l-47.008 47.008c16.502 42.634 20.608 78.525 20.608 89.011v0.179c0 19.517 0 31.792-6.621 56.17-7.094 26.109-21.738 65.648-52.554 137.834-5.699 13.357-2.794 25.981 1.261 34.435 3.834 7.99 9.562 14.403 14.595 19.184 10.227 9.712 24.253 18.842 38.544 26.867 7.888 4.429 18.298 8.995 27.613 13.078l1.843 0.81c10.554 4.634 20.726 9.146 29.613 13.894 3.427 1.834 6.298 3.517 8.672 5.030-5.104 3.229-12.035 6.883-20.941 10.765-22.96 10.003-55.328 19.939-93.888 28.128-77.12 16.371-174.73 24.858-263.341 14.973-43.744-4.88-86.826-14.525-126.534-29.229l-47.542 47.542c52.771 23.018 110.492 36.886 167.267 43.222 96.387 10.752 200.71 1.517 282.909-15.936 41.098-8.726 77.731-19.731 105.68-31.907 13.91-6.064 26.618-12.822 36.858-20.342 9.427-6.925 20.739-17.344 25.61-32.016 7.392-22.269-2.957-40.509-12.816-51.139-9.427-10.166-22.106-17.939-32.954-23.738-11.309-6.048-23.626-11.472-33.891-15.978-11.059-4.854-18.934-8.317-24.054-11.194-9.914-5.565-17.437-10.538-22.506-14.57 27.421-64.81 42.214-104.589 50.048-133.424 8.774-32.304 8.797-50.986 8.797-72.64 0-20.106-7.053-75.501-35.267-136.019zM836.038 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-682.665 682.665c-12.497 12.499-32.758 12.499-45.255 0-12.497-12.496-12.497-32.755 0-45.254l682.666-682.666z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["message-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":57,"id":120,"name":"message-disabled","prevSize":32,"code":59785},"setIdx":1,"setId":4,"iconIdx":126},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.643 51.52 146.602 80.998 235.29 90.893 88.614 9.885 186.224 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.944-10.765-2.378-1.514-5.248-3.197-8.675-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.395-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.83 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.123 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.946 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["message"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":58,"id":121,"name":"message","prevSize":32,"code":59786},"setIdx":1,"setId":4,"iconIdx":127},{"icon":{"paths":["M512 128c75.546 0 138.861 52.356 155.645 122.762l-59.645 59.644v-22.405c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 24.067 8.858 46.067 23.488 62.915l-45.322 45.325c-26.182-28.49-42.166-66.499-42.166-108.24v-128c0-88.365 71.635-160 160-160zM561.35 568.243l102.893-102.893c-15.763 48.672-54.221 87.13-102.893 102.893zM288 416c0 72.154 23.181 123.101 55.328 159.078l-45.304 45.302c-43.428-47.35-74.024-113.99-74.024-204.381 0-17.674 14.327-32 32-32s32 14.326 32 32zM478.659 650.938l-51.808 51.808c18.56 6.374 36.579 10.806 53.149 13.635v115.619h-160c-17.673 0-32 14.326-32 32s14.327 32 32 32h384c17.674 0 32-14.326 32-32s-14.326-32-32-32h-160v-115.619c44.64-7.619 99.818-26.896 147.722-64.381 60.704-47.501 108.278-123.286 108.278-236 0-17.674-14.326-32-32-32s-32 14.326-32 32c0 92.086-37.757 149.632-83.722 185.6-46.464 36.358-102.736 51.581-140.278 54.326-9.971-0.73-21.264-2.339-33.341-4.989zM825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["microphone-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":59,"id":122,"name":"microphone-disabled","prevSize":32,"code":59787},"setIdx":1,"setId":4,"iconIdx":128},{"icon":{"paths":["M608 288c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 53.021 42.979 96 96 96s96-42.979 96-96v-128zM352 288c0-88.365 71.635-160 160-160s160 71.635 160 160v128c0 88.365-71.635 160-160 160s-160-71.635-160-160v-128zM256 384c17.673 0 32 14.326 32 32 0 92.086 37.757 149.632 83.722 185.6 46.464 36.358 102.736 51.581 140.278 54.326 37.542-2.746 93.814-17.968 140.278-54.326 45.962-35.968 83.722-93.514 83.722-185.6 0-17.674 14.326-32 32-32s32 14.326 32 32c0 112.714-47.574 188.499-108.278 236-47.904 37.485-103.082 56.762-147.722 64.381v115.619h160c17.674 0 32 14.326 32 32s-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32s14.327-32 32-32h160v-115.619c-44.64-7.619-99.818-26.896-147.722-64.381-60.703-47.501-108.278-123.286-108.278-236 0-17.674 14.327-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["microphone"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":60,"id":123,"name":"microphone","prevSize":32,"code":59788},"setIdx":1,"setId":4,"iconIdx":129},{"icon":{"paths":["M234.666 170.661c0-47.128 38.205-85.333 85.333-85.333h384.001c47.126 0 85.331 38.205 85.331 85.333v682.667c0 47.13-38.205 85.334-85.331 85.334h-384.001c-47.128 0-85.333-38.205-85.333-85.334v-682.667zM298.666 170.661v682.667c0 11.782 9.551 21.334 21.333 21.334h384.001c11.782 0 21.331-9.552 21.331-21.334v-682.667c0-11.782-9.549-21.333-21.331-21.333h-96.291c-2.653 24.002-23.002 42.672-47.709 42.672h-96c-24.707 0-45.056-18.67-47.709-42.672h-96.292c-11.782 0-21.333 9.551-21.333 21.333z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mobile"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":61,"id":124,"name":"mobile","prevSize":32,"code":59789},"setIdx":1,"setId":4,"iconIdx":130},{"icon":{"paths":["M319.247 231.566c-62.882 49.504-135.086 136.549-141.94 266.127-5.762 108.922 37.404 187.184 89.915 241.51 53.258 55.098 115.702 84.925 144.25 94.438 41.859 13.955 114.269 29.536 234.643-15.603 34.858-13.072 73.165-42.096 108.304-78.426 14.272-14.755 27.616-30.294 39.6-45.773-28.778 9.293-61.699 17.754-96.589 23.594-56.192 9.405-119.29 12.32-179.411-0.237-2.49-0.518-4.96-1.030-7.408-1.536-22.195-4.576-42.733-8.816-62.589-17.648-23.091-10.275-43.805-25.891-69.299-51.386-42.096-42.096-89.142-107.222-89.371-213.843-1.569-34.080 4.622-81.878 13.764-129.216 4.624-23.946 10.142-48.465 16.132-72.003zM345.562 138.217c32.8-17.15 63.709 15.843 53.875 45.907-12.234 37.414-24.586 85.511-33.482 131.58-9.024 46.732-13.949 88.633-12.643 114.7l0.038 0.797v0.8c0 84.915 36.173 134.918 70.627 169.373 22.509 22.509 36.835 32.278 50.064 38.166 13.229 5.885 26.832 8.717 51.085 13.763 1.923 0.4 3.917 0.816 5.978 1.248 49.914 10.426 104.534 8.336 155.76-0.237 65.434-10.954 122.384-31.981 152.374-47.386 17.562-9.021 34.992-2.47 44.477 5.965 9.661 8.589 19.376 27.152 8.886 46.954-20.637 38.95-53.645 84.419-92.182 124.259-38.211 39.51-84.317 76.038-131.834 93.859-135.626 50.858-223.216 34.438-277.354 16.394-36.515-12.173-108.392-46.912-170.026-110.675-62.381-64.534-114.684-159.427-107.81-289.373 10.79-203.979 157.583-317.098 232.165-356.093z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["moon"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":62,"id":125,"name":"moon","prevSize":32,"code":59790},"setIdx":1,"setId":4,"iconIdx":131},{"icon":{"paths":["M144 160c-17.673 0-32 14.327-32 32s14.327 32 32 32h192c17.674 0 32-14.327 32-32s-14.326-32-32-32h-192zM700.4 346.646c11.795-13.165 32.026-14.272 45.187-2.48 13.162 11.795 14.272 32.026 2.477 45.187l-81.222 90.646h216.358c17.674 0 32 14.326 32 32s-14.326 32-32 32h-216.358l81.222 90.646c11.795 13.162 10.685 33.392-2.477 45.187-13.162 11.792-33.392 10.685-45.187-2.48l-129.030-144c-10.893-12.154-10.893-30.554 0-42.707l129.030-144zM112 512c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 640c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192zM112 352c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 800c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["move-to-the-queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":63,"id":126,"name":"move-to-the-queue","prevSize":32,"code":59791},"setIdx":1,"setId":4,"iconIdx":132},{"icon":{"paths":["M809.002 166.758c7.782 6.063 12.333 15.377 12.333 25.242v448h-0.112c0.074 1.734 0.112 3.478 0.112 5.229 0 69.053-57.309 125.030-128 125.030-70.694 0-128-55.978-128-125.030s57.306-125.030 128-125.030c23.312 0 45.171 6.090 64 16.73v-303.86l-384 96.798v409.136c0 69.053-57.309 125.037-128.001 125.037s-128-55.978-128-125.030c0-69.050 57.308-125.027 128-125.027 23.314 0 45.173 6.086 64 16.726v-325.777c0-14.66 9.962-27.446 24.177-31.029l448-112.93c9.568-2.411 19.709-0.276 27.491 5.788z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["musical-note"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":64,"id":127,"name":"musical-note","prevSize":32,"code":59792},"setIdx":1,"setId":4,"iconIdx":133},{"icon":{"paths":["M208 176c-35.346 0-64 28.654-64 64v576c0 35.347 28.654 64 64 64h576c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-576zM208 240h576v576h-576v-576zM698.627 558.15c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.339l1.318-123.594-309.341 308.774c-12.51 12.483-32.771 12.464-45.256-0.042-12.485-12.509-12.467-32.771 0.042-45.258l309.195-308.624-123.382 1.315c-17.674 0.189-32.154-13.984-32.339-31.654-0.189-17.674 13.984-32.15 31.654-32.339l201.92-2.157c8.605-0.093 16.886 3.286 22.97 9.37 6.086 6.086 9.462 14.365 9.373 22.97l-2.157 201.92z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["new-window"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":65,"id":128,"name":"new-window","prevSize":32,"code":59793},"setIdx":1,"setId":4,"iconIdx":134},{"icon":{"paths":["M781.837 402.634c0-5.245-0.154-10.454-0.461-15.622l-63.539 63.539v265.363h-265.363l-66.979 66.979h425.363c12.944 0 24.611-7.795 29.565-19.754 4.954-11.955 2.214-25.722-6.938-34.874l-51.648-51.648v-273.984zM704.765 217.373l-45.254 45.255c-35.638-35.351-84.704-57.189-138.867-57.189-108.909 0-197.194 88.287-197.194 197.195v196.054l-64.001 64v-260.054c0-144.254 116.941-261.195 261.194-261.195 71.837 0 136.899 29.001 184.122 75.934zM433.578 808.934c0 48.086 38.982 87.066 87.066 87.066s87.066-38.979 87.066-87.066h-174.131zM854.275 190.982c-11.334-11.334-29.709-11.334-41.043 0l-612.732 612.733c-11.333 11.331-11.333 29.709 0 41.040 11.334 11.334 29.709 11.334 41.043 0l612.732-612.731c11.334-11.333 11.334-29.709 0-41.043z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["notification-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":66,"id":129,"name":"notification-disabled","prevSize":32,"code":59794},"setIdx":1,"setId":4,"iconIdx":135},{"icon":{"paths":["M601.331 808.928h-174.154c0.003 48.090 38.989 87.072 87.078 87.072s87.075-38.982 87.075-87.072zM815.597 731.677c7.274 9.696 8.442 22.669 3.021 33.51s-16.499 17.69-28.621 17.69h-565.996c-12.943 0-24.611-7.798-29.564-19.757-4.953-11.955-2.215-25.718 6.937-34.87l51.653-51.654v-274.032c0-144.272 116.957-261.228 261.229-261.228s261.229 116.956 261.229 261.228v275.629l40.112 53.485zM711.485 715.894v-313.331c0-108.926-88.304-197.228-197.229-197.228-108.928 0-197.229 88.302-197.229 197.228v313.331h394.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["notification"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":67,"id":130,"name":"notification","prevSize":32,"code":59795},"setIdx":1,"setId":4,"iconIdx":136},{"icon":{"paths":["M712.051 512.675v54.89c-0.195 76.736-43.741 143.283-107.44 176.445-5.53-25.67-28.362-44.906-55.683-44.906h-72.502c-31.459 0-56.963 25.501-56.963 56.963v41.427c0 31.462 25.504 56.963 56.963 56.963h72.502c28.509 0 52.128-20.944 56.307-48.288 69.261-26.829 123.962-82.883 148.966-153.030 4.723 1.27 9.69 1.946 14.813 1.946h28.483c31.459 0 56.963-25.504 56.963-56.963v-85.446c0-31.459-25.504-56.963-56.963-56.963h-28.483v-28.483c0-141.572-114.765-256.338-256.336-256.338s-256.339 114.766-256.339 256.338v23.302h-28.483c-31.46 0-56.964 25.504-56.964 56.966v103.571c0 31.459 25.504 56.963 56.964 56.963h28.482c31.46 0 56.964-25.504 56.964-56.963v-36.253h0.149c-0.099-2.576-0.148-5.165-0.148-7.766v-139.821c0-110.111 89.263-199.374 199.375-199.374s199.373 89.263 199.373 199.374v85.446z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["omnichannel"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":123,"id":131,"name":"omnichannel","prevSize":32,"code":59796},"setIdx":1,"setId":4,"iconIdx":137},{"icon":{"paths":["M705.578 633.158c9.507-9.235 24.701-9.018 33.939 0.486 9.238 9.507 9.021 24.701-0.486 33.939l-208.275 202.387c-9.312 9.050-24.138 9.050-33.45 0l-208.276-202.387c-9.506-9.238-9.724-24.432-0.487-33.939 9.237-9.504 24.432-9.722 33.937-0.486l191.549 186.134 191.549-186.134zM705.578 411.584c9.507 9.238 24.701 9.021 33.939-0.486s9.021-24.701-0.486-33.939l-208.275-202.385c-9.312-9.051-24.138-9.051-33.45 0l-208.276 202.385c-9.506 9.238-9.724 24.432-0.487 33.939 9.237 9.504 24.432 9.725 33.937 0.486l191.549-186.134 191.549 186.134z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["order"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":124,"id":132,"name":"order","prevSize":32,"code":59797},"setIdx":1,"setId":4,"iconIdx":138},{"icon":{"paths":["M742.317 652.566c12.666-12.323 12.944-32.582 0.618-45.248-12.323-12.669-32.582-12.944-45.251-0.621l44.634 45.869zM512 832.019l-22.317 22.934c12.422 12.086 32.211 12.086 44.634 0l-22.317-22.934zM326.317 606.698c-12.667-12.323-32.927-12.048-45.252 0.621-12.324 12.666-12.047 32.925 0.619 45.248l44.632-45.869zM697.683 606.698l-208 202.387 44.634 45.869 208-202.387-44.634-45.869zM534.317 809.085l-208-202.387-44.632 45.869 207.999 202.387 44.634-45.869z","M742.317 371.456c12.666 12.323 12.944 32.582 0.618 45.251-12.323 12.666-32.582 12.944-45.251 0.618l44.634-45.869zM512 192.004l-22.317-22.935c12.422-12.087 32.211-12.087 44.634 0l-22.317 22.935zM326.317 417.325c-12.668 12.326-32.927 12.048-45.252-0.618-12.325-12.669-12.048-32.928 0.619-45.251l44.633 45.869zM697.683 417.325l-208-202.386 44.634-45.87 208 202.387-44.634 45.869zM534.317 214.939l-208 202.386-44.633-45.869 207.999-202.387 44.634 45.87z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]},"tags":["ordering-ascending"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":125,"id":133,"name":"ordering-ascending","prevSize":32,"code":59798,"codes":[59798,59799]},"setIdx":1,"setId":4,"iconIdx":139},{"icon":{"paths":["M281.684 371.434c-12.667 12.323-12.944 32.582-0.619 45.248 12.324 12.669 32.584 12.944 45.252 0.621l-44.633-45.869zM512 191.981l22.317-22.935c-12.422-12.087-32.211-12.087-44.634 0l22.317 22.935zM697.683 417.302c12.669 12.323 32.928 12.048 45.251-0.621 12.326-12.666 12.048-32.925-0.618-45.248l-44.634 45.869zM326.317 417.302l208-202.387-44.634-45.869-207.999 202.387 44.633 45.869zM489.683 214.916l208 202.387 44.634-45.869-208-202.387-44.634 45.869z","M281.684 652.544c-12.667-12.323-12.944-32.582-0.619-45.251 12.324-12.666 32.584-12.944 45.252-0.618l-44.633 45.869zM512 831.997l22.317 22.934c-12.422 12.086-32.211 12.086-44.634 0l22.317-22.934zM697.683 606.675c12.669-12.326 32.928-12.048 45.251 0.618 12.326 12.669 12.048 32.928-0.618 45.251l-44.634-45.869zM326.317 606.675l208 202.384-44.634 45.872-207.999-202.387 44.633-45.869zM489.683 809.059l208-202.384 44.634 45.869-208 202.387-44.634-45.872z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]},"tags":["ordering-descending"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":126,"id":134,"name":"ordering-descending","prevSize":32,"code":59800,"codes":[59800,59801]},"setIdx":1,"setId":4,"iconIdx":140},{"icon":{"paths":["M512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.752 0-416.001 186.25-416.001 416s186.25 416 416.001 416zM399.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256zM559.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pause-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":128,"id":135,"name":"pause-filled","prevSize":32,"code":59802},"setIdx":1,"setId":4,"iconIdx":141},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352-194.405 0-352.001 157.596-352.001 352s157.596 352 352.001 352c194.403 0 352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416-229.752 0-416.001-186.25-416.001-416s186.25-416 416.001-416c229.75 0 416 186.25 416 416zM399.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32zM559.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pause"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":129,"id":136,"name":"pause","prevSize":32,"code":59803},"setIdx":1,"setId":4,"iconIdx":142},{"icon":{"paths":["M825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672zM575.613 569.069l-44.707 44.707c7.846 5.904 15.846 11.453 23.533 16.016 9.2 5.459 22.838 12.579 36.973 13.222 16.224 0.736 31.446-5.302 42.47-10.976 11.741-6.042 22.79-13.824 31.744-20.944 1.053-0.838 2.134-1.232 2.883-1.341 0.403-0.061 0.611-0.032 0.688-0.013l121.094 59.075c-5.578 29.331-20.381 66.771-42.39 92.621-11.229 13.187-23.197 22.038-35.389 26.32-11.597 4.074-25.402 4.762-42.653-1.677-48.422-18.070-103.405-53.152-151.69-89.261-14.026-10.49-27.299-20.922-39.469-30.842l-44.387 44.39c14.186 11.683 29.84 24.061 46.445 36.48 49.808 37.248 110.448 76.56 167.261 97.76 30.275 11.299 59.149 11.238 85.197 2.086 25.45-8.938 46.090-25.786 62.246-44.755 31.866-37.424 50.634-88.144 57.059-126.246 4.72-27.987-11.776-51.77-33.136-62.192l-122.81-59.91c-24.41-11.907-51.462-6-69.834 8.611-7.008 5.571-14.544 10.739-21.443 14.291-5.574 2.867-8.931 3.741-10.314 4.003l-0.093-0.038c-0.992-0.4-3.731-1.514-8.57-4.387-3.277-1.942-6.87-4.301-10.71-7.002zM313.636 589.683l44.389-44.387c-9.92-12.17-20.349-25.44-30.838-39.466-36.109-48.285-71.192-103.267-89.263-151.69-6.437-17.251-5.748-31.056-1.675-42.652 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.291-36.814 92.622-42.392l59.075 121.095c0.019 0.077 0.048 0.285-0.013 0.688-0.109 0.752-0.502 1.83-1.341 2.883-7.12 8.954-14.902 20.003-20.944 31.744-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.134 7.763 27.773 13.222 36.973 4.563 7.686 10.109 15.683 16.013 23.53l44.707-44.707c-2.701-3.837-5.056-7.434-7.002-10.707-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.739 4.006-10.314 3.552-6.899 8.72-14.435 14.291-21.443 14.611-18.371 20.518-45.424 8.611-69.834l-59.91-122.809c-10.422-21.362-34.205-37.856-62.192-33.137-38.103 6.425-88.824 25.194-126.246 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.921 2.087 85.196 21.202 56.813 60.513 117.453 97.761 167.261 12.417 16.605 24.795 32.256 36.478 46.442z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":130,"id":137,"name":"phone-disabled","prevSize":32,"code":59804},"setIdx":1,"setId":4,"iconIdx":143},{"icon":{"paths":["M801.123 657.59c22.474 7.734 50.954 2.582 67.408-20.544 22.4-31.488 44.992-80.624 48.922-129.619 1.99-24.838-0.691-51.344-12.368-75.661-11.949-24.89-32.32-45.35-61.718-58.768-55.165-25.181-125.84-40.262-187.398-49.146-61.946-8.936-117.494-11.98-143.965-11.98v62.469c23.2 0 75.757 2.787 135.043 11.341 59.677 8.611 123.36 22.682 170.381 44.144 16.749 7.645 26.022 17.894 31.344 28.973 5.59 11.651 7.795 26.371 6.413 43.635-2.717 33.843-18.723 70.784-35.52 95.469l-127.398-43.853c-0.067-0.042-0.237-0.17-0.48-0.496-0.451-0.608-0.934-1.651-1.088-2.989-1.296-11.363-3.606-24.678-7.635-37.254-3.786-11.808-10.278-26.842-22.272-37.792-10.451-9.539-25.126-14.15-35.494-16.794-11.914-3.040-25.568-5.181-38.944-6.717-26.858-3.088-55.773-4.093-74.352-4.093v62.47c16.902 0 43.338 0.938 67.219 3.683 11.99 1.379 22.554 3.123 30.64 5.187 5.45 1.389 8.173 2.541 9.162 2.957l0.093 0.038c0.79 1.165 2.544 4.154 4.458 10.125 2.368 7.392 4.045 16.374 5.059 25.267 2.659 23.325 17.61 46.63 43.29 55.469l129.203 44.477zM222.875 657.584c-22.474 7.738-50.954 2.586-67.407-20.544-22.4-31.485-44.993-80.621-48.922-129.616-1.992-24.838 0.691-51.344 12.366-75.664 11.949-24.886 32.321-45.347 61.719-58.765 55.165-25.181 125.841-40.262 187.4-49.146 61.946-8.937 117.494-11.98 143.965-11.98v62.47c-23.2 0-75.757 2.787-135.046 11.341-59.674 8.608-123.358 22.682-170.378 44.144-16.748 7.645-26.024 17.894-31.343 28.973-5.593 11.651-7.797 26.371-6.412 43.635 2.714 33.843 18.721 70.784 35.518 95.469l127.4-43.856c0.067-0.038 0.234-0.166 0.477-0.493 0.454-0.611 0.938-1.651 1.091-2.989 1.296-11.363 3.606-24.682 7.635-37.254 3.786-11.808 10.275-26.842 22.272-37.792 10.448-9.542 25.126-14.15 35.491-16.794 11.917-3.040 25.568-5.181 38.947-6.717 26.858-3.088 55.77-4.093 74.349-4.093v62.47c-16.899 0-43.338 0.938-67.216 3.683-11.99 1.376-22.554 3.123-30.64 5.187-5.453 1.389-8.176 2.541-9.162 2.957l-0.093 0.038c-0.79 1.162-2.547 4.154-4.458 10.125-2.371 7.389-4.045 16.371-5.059 25.267-2.659 23.322-17.61 46.627-43.293 55.469l-129.202 44.474z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone-end"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":131,"id":138,"name":"phone-end","prevSize":32,"code":59805},"setIdx":1,"setId":4,"iconIdx":144},{"icon":{"paths":["M410.502 204.616c-10.419-21.362-34.202-37.856-62.189-33.137-38.104 6.425-88.825 25.194-126.247 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.919 2.087 85.195 21.202 56.816 60.513 117.456 97.761 167.264 37.482 50.122 74.609 91.552 93.329 110.269l44.173-44.173c-16.406-16.403-51.6-55.536-87.472-103.51-36.11-48.285-71.192-103.264-89.264-151.69-6.437-17.248-5.748-31.056-1.675-42.651 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.292-36.814 92.623-42.392l59.075 121.097c0.019 0.074 0.045 0.285-0.013 0.688-0.112 0.749-0.502 1.827-1.344 2.883-7.117 8.95-14.899 20-20.941 31.741-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.138 7.76 27.773 13.222 36.973 6.275 10.576 14.416 21.741 22.79 32.291 16.806 21.171 36.541 42.326 49.68 55.466l44.173-44.173c-11.952-11.952-29.981-31.309-44.928-50.134-7.504-9.453-13.738-18.157-17.997-25.334-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.736 4.006-10.31 3.552-6.902 8.717-14.438 14.291-21.443 14.611-18.374 20.518-45.424 8.611-69.837l-59.914-122.808zM819.386 613.504c21.36 10.419 37.856 34.202 33.136 62.189-6.426 38.106-25.194 88.826-57.059 126.246-16.157 18.973-36.797 35.818-62.246 44.758-26.048 9.149-54.922 9.21-85.197-2.086-56.813-21.203-117.453-60.515-167.261-97.763-50.122-37.482-91.555-74.608-110.272-93.328l44.173-44.173c16.403 16.406 55.539 51.6 103.51 87.472 48.285 36.109 103.267 71.194 151.69 89.264 17.248 6.435 31.056 5.747 42.653 1.674 12.192-4.282 24.16-13.133 35.386-26.317 22.013-25.85 36.816-63.293 42.394-92.624l-121.094-59.075c-0.077-0.019-0.288-0.048-0.688 0.013-0.752 0.112-1.83 0.502-2.886 1.344-8.95 7.117-20 14.899-31.741 20.941-11.024 5.674-26.246 11.715-42.47 10.976-14.134-0.643-27.773-7.76-36.973-13.222-10.576-6.275-21.741-14.416-32.288-22.79-21.174-16.806-42.33-36.541-55.469-49.68l44.173-44.173c11.952 11.952 31.309 29.981 50.134 44.928 9.453 7.504 18.16 13.738 25.334 17.997 4.838 2.87 7.578 3.984 8.57 4.387l0.093 0.038c1.382-0.266 4.739-1.139 10.314-4.006 6.899-3.552 14.435-8.717 21.44-14.291 18.374-14.611 45.427-20.518 69.837-8.611l122.81 59.914z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":68,"id":139,"name":"phone","prevSize":32,"code":59806},"setIdx":1,"setId":4,"iconIdx":145},{"icon":{"paths":["M512.608 128.019c-72.378-1.376-144.906 25.78-199.307 80.524-54.654 54.999-89.301 136.056-89.301 239.464 0 80.234 44.5 174.87 97.546 252.806 53.066 77.965 120.829 148.157 176.141 175.821l15.194 7.6 14.81-8.326c217.158-122.154 272.31-333.882 272.31-427.898 0-101.731-27.923-181.776-80.179-236.932-52.346-55.248-125.296-81.503-207.213-83.060zM288 448.006c0-88.589 29.353-152.745 70.698-194.351 41.6-41.862 97.072-62.705 152.694-61.648 68.992 1.311 124.038 23.054 161.968 63.088 38.019 40.126 62.64 102.649 62.64 192.914 0 74.55-44.691 253.677-224.176 363.030-39.683-25.61-92.186-79.853-137.37-146.237-50.954-74.864-86.454-156.221-86.454-216.797zM544 416c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32zM608 416c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.021 42.979-96 96-96s96 42.979 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pin-map"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":69,"id":140,"name":"pin-map","prevSize":32,"code":59807},"setIdx":1,"setId":4,"iconIdx":146},{"icon":{"paths":["M428.346 199.399c17.542-17.543 45.984-17.543 63.53 0 17.542 17.543 17.542 45.986 0 63.53l-43.661 43.659 177.83 177.828 60.339-60.339c24.992-24.995 65.517-24.995 90.509 0l45.254 45.254-331.869 331.869-45.254-45.254c-24.992-24.995-24.992-65.517 0-90.509l60.339-60.339-177.827-177.83-43.661 43.661c-17.543 17.542-45.987 17.542-63.53 0s-17.543-45.987 0-63.53l208.001-207.999zM175.090 362.144c-42.537 42.538-42.537 111.501 0 154.038 42.001 42.003 109.771 42.531 152.42 1.587l87.334 87.334-15.075 15.075c-49.987 49.987-49.987 131.034 0 181.021l67.882 67.882c12.496 12.496 32.758 12.496 45.254 0l167.936-167.933 88.013 92.003c12.218 12.771 32.474 13.219 45.245 1.002 12.771-12.214 13.219-32.47 1.002-45.242l-88.995-93.030 163.923-163.923c12.499-12.496 12.499-32.758 0-45.254l-67.882-67.882c-49.987-49.987-131.030-49.987-181.018 0l-15.907 15.907-87.325-87.323c41.766-42.596 41.51-110.983-0.768-153.262-42.538-42.537-111.504-42.537-154.042 0l-207.998 208z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pin"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":70,"id":141,"name":"pin","prevSize":32,"code":59808},"setIdx":1,"setId":4,"iconIdx":147},{"icon":{"paths":["M513.354 160c17.674 0 32 13.133 32 29.333v645.332c0 16.202-14.326 29.334-32 29.334s-32-13.133-32-29.334v-645.332c0-16.2 14.326-29.333 32-29.333z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["Pipe"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":71,"id":142,"name":"Pipe","prevSize":32,"code":59809},"setIdx":1,"setId":4,"iconIdx":148},{"icon":{"paths":["M512 928.003c229.75 0 416-186.25 416-416s-186.25-415.999-416-415.999c-229.75 0-416 186.25-416 415.999s186.25 416 416 416zM451.846 357.19l195.258 136.768c14.205 9.952 18.496 30.874 9.578 46.73-2.429 4.323-5.706 7.978-9.578 10.691l-195.258 136.768c-14.205 9.952-32.95 5.165-41.866-10.691-3.037-5.398-4.646-11.645-4.646-18.019v-273.536c0-18.72 13.597-33.894 30.368-33.894 5.712 0 11.309 1.795 16.144 5.184z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["play-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":72,"id":143,"name":"play-filled","prevSize":32,"code":59810},"setIdx":1,"setId":4,"iconIdx":149},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM451.85 357.187l195.254 136.768c14.208 9.949 18.496 30.87 9.581 46.726-2.432 4.326-5.706 7.981-9.581 10.694l-195.254 136.768c-14.208 9.952-32.954 5.165-41.869-10.694-3.037-5.398-4.646-11.642-4.646-18.016v-273.536c0-18.723 13.597-33.898 30.371-33.898 5.709 0 11.306 1.798 16.144 5.187z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["play"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":73,"id":144,"name":"play","prevSize":32,"code":59811},"setIdx":1,"setId":4,"iconIdx":150},{"icon":{"paths":["M325.686 430.88l224.49 224.49-126.118 126.118-224.491-224.49 126.12-126.118zM370.941 385.626l192.115-192.117 224.49 224.491-192.115 192.115-224.49-224.49zM585.683 125.627c-12.496-12.497-32.758-12.497-45.254 0l-408.745 408.745c-12.497 12.496-12.497 32.758 0 45.254l269.746 269.747c5.229 5.229 11.818 8.269 18.63 9.123v0.067h0.57c2.278 0.243 4.576 0.243 6.851 0h440.579c17.674 0 32-14.33 32-32 0-17.674-14.326-32.003-32-32.003h-366.566l353.936-353.933c12.496-12.496 12.496-32.758 0-45.254l-269.747-269.746z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["prune"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":77,"id":148,"name":"prune","prevSize":32,"code":59817},"setIdx":1,"setId":4,"iconIdx":154},{"icon":{"paths":["M230.486 636.688c-14.92-9.472-34.694-5.056-44.167 9.862-9.473 14.922-5.057 34.694 9.862 44.166l298.666 189.632c10.47 6.646 23.837 6.646 34.304 0l298.669-189.632c14.918-9.472 19.334-29.245 9.862-44.166-9.475-14.918-29.248-19.334-44.166-9.862l-281.517 178.739-281.514-178.739zM186.319 494.848c9.473-14.922 29.247-19.334 44.167-9.862l281.514 178.739 281.517-178.739c14.918-9.472 34.691-5.059 44.166 9.862 9.472 14.918 5.056 34.694-9.862 44.166l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-14.92-9.472-19.335-29.248-9.862-44.166zM529.152 143.657l298.669 189.629c9.245 5.872 14.848 16.064 14.848 27.014 0 10.954-5.603 21.146-14.848 27.014l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-9.246-5.869-14.848-16.061-14.848-27.014 0-10.95 5.602-21.142 14.848-27.014l298.666-189.629c10.47-6.647 23.837-6.647 34.304 0zM273.035 360.301l238.965 151.725 238.966-151.725-238.966-151.724-238.965 151.724z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":78,"id":149,"name":"queue","prevSize":32,"code":59818},"setIdx":1,"setId":4,"iconIdx":155},{"icon":{"paths":["M161.352 800c-11.706 0-22.477-6.39-28.087-16.666s-5.161-22.79 1.169-32.64l112.304-174.694h-69.387c-17.673 0-32-14.326-32-32v-288c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-143.999 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM332.269 561.306l-112.304 174.694h51.916l129.469-201.398v-246.602h-191.999v224h96c11.706 0 22.479 6.39 28.085 16.666 5.61 10.275 5.162 22.79-1.168 32.64zM577.35 800c-11.706 0-22.477-6.39-28.086-16.666s-5.162-22.79 1.171-32.64l112.304-174.694h-69.389c-17.67 0-32-14.326-32-32v-288c0-17.673 14.33-32 32-32h256c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-144 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM748.269 561.306l-112.304 174.694h51.917l129.469-201.398v-246.602h-192v224h96c11.706 0 22.48 6.39 28.086 16.666 5.61 10.275 5.162 22.79-1.168 32.64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["quote"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":79,"id":150,"name":"quote","prevSize":32,"code":59819},"setIdx":1,"setId":4,"iconIdx":156},{"icon":{"paths":["M800 560c0 176.73-143.27 320-320 320-176.731 0-320-143.27-320-320s143.269-320 320-320v-64c-212.077 0-384 171.923-384 384s171.923 384 384 384c212.077 0 384-171.923 384-384 0-10.778-0.445-21.45-1.315-32h-64.266c1.046 10.525 1.581 21.2 1.581 32zM800 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v112h-112c-17.674 0-32 14.327-32 32s14.326 32 32 32h112v112c0 17.674 14.326 32 32 32s32-14.326 32-32v-112h112c17.674 0 32-14.327 32-32s-14.326-32-32-32h-112v-112zM384 528c35.347 0 64-28.653 64-64s-28.653-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64zM640 464c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64zM329.805 605.075c-10.451-14.25-30.477-17.331-44.728-6.88s-17.333 30.477-6.882 44.73c37.658 51.35 77.754 84.624 119.178 102.662 41.741 18.179 82.797 19.99 120.362 11.651 73.469-16.307 132.211-70.87 164.070-114.314 10.451-14.253 7.37-34.278-6.88-44.73-14.253-10.451-34.278-7.37-44.73 6.88-26.81 36.557-73.664 77.994-126.33 89.686-25.501 5.661-52.643 4.474-80.938-7.85-28.608-12.461-60.381-37.187-93.123-81.837z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["reaction-add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":132,"id":151,"name":"reaction-add","prevSize":32,"code":59820},"setIdx":1,"setId":4,"iconIdx":157},{"icon":{"paths":["M832 512c0-176.73-143.27-320-320-320s-320 143.27-320 320c0 176.73 143.27 320 320 320s320-143.27 320-320zM896 512c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384s384 171.923 384 384zM512 704c-106.038 0-192-85.962-192-192s85.962-192 192-192c106.038 0 192 85.962 192 192s-85.962 192-192 192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["record"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":133,"id":152,"name":"record","prevSize":32,"code":59821},"setIdx":1,"setId":4,"iconIdx":158},{"icon":{"paths":["M896 512h-63.984c0-175.414-145.754-320-328.518-320-115.27 0-215.818 57.513-274.362 144h110.768c17.674 0 32 14.326 32 32s-14.326 32-32 32h-179.904c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v102.32c71.751-91.401 184.589-150.32 311.498-150.32 216.781 0 392.502 171.923 392.502 384 0 1.114 0.010 2.227 0 3.338v-3.338z","M127.997 512h63.986c0 175.414 145.751 320 328.519 320 115.27 0 215.818-57.514 274.358-144h-110.768c-17.67 0-32-14.326-32-32s14.33-32 32-32h179.907c17.67 0 32 14.326 32 32v192c0 17.674-14.33 32-32 32-17.674 0-32-14.326-32-32v-102.32c-71.754 91.402-184.592 150.32-311.498 150.32-216.782 0-392.505-171.923-392.505-384 0-1.082-0.009-2.166 0-3.245v3.245z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["refresh"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":134,"id":153,"name":"refresh","prevSize":32,"code":59822},"setIdx":1,"setId":4,"iconIdx":159},{"icon":{"paths":["M713.718 450.362c0-142.689-115.824-258.362-258.701-258.362-142.878 0-258.704 115.673-258.704 258.362 0 142.691 115.826 258.365 258.704 258.365 142.877 0 258.701-115.674 258.701-258.365zM659.302 699.965c-55.645 45.475-126.774 72.762-204.285 72.762-178.271 0-322.788-144.326-322.788-322.365 0-178.035 144.517-322.362 322.788-322.362 178.269 0 322.787 144.327 322.787 322.362 0 77.408-27.318 148.442-72.854 204.013l186.838 186.592c12.608 12.589 12.608 33.002 0 45.59-12.605 12.589-33.043 12.589-45.648 0l-186.838-186.592z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["search"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":136,"id":154,"name":"search","prevSize":32,"code":59823},"setIdx":1,"setId":4,"iconIdx":160},{"icon":{"paths":["M891.494 238.96l-297.475 637.446c-16.854 36.115-69.622 31.459-79.891-7.050l-66-247.498 151.248-189.059-219.994 109.997-226.833-113.418c-35.43-17.715-29.696-69.949 8.733-79.555l681.197-170.3c34.842-8.71 64.202 26.892 49.014 59.436z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["send-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":137,"id":155,"name":"send-filled","prevSize":32,"code":59824},"setIdx":1,"setId":4,"iconIdx":161},{"icon":{"paths":["M878.022 192.974c7.85 9.521 9.526 22.708 4.31 33.891l-298.669 640.002c-5.69 12.195-18.403 19.526-31.811 18.342-13.405-1.184-24.637-10.627-28.106-23.632l-81.619-306.070-285.772-142.886c-11.978-5.987-18.959-18.8-17.498-32.112s11.056-24.307 24.048-27.552l682.665-170.668c11.974-2.993 24.598 1.165 32.451 10.686zM505.821 545.968l57.082 214.051 233.027-499.35-533.58 133.395 203.606 101.802 69.51-52.131c14.141-10.605 34.198-7.741 44.8 6.4 10.605 14.138 7.741 34.195-6.4 44.8l-68.045 51.034z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["send"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":138,"id":156,"name":"send","prevSize":32,"code":59825},"setIdx":1,"setId":4,"iconIdx":162},{"icon":{"paths":["M421.334 256c0-44.183-35.818-80-80-80s-80 35.817-80 80c0 44.183 35.817 80 80 80s80-35.817 80-80zM465.302 288c-14.211 55.206-64.326 96-123.968 96-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.327-32-32s14.327-32 32-32h89.367c14.209-55.207 64.324-96 123.968-96 59.642 0 109.757 40.793 123.968 96h430.698c17.674 0 32 14.327 32 32s-14.326 32-32 32h-430.698zM96 768c0-17.674 14.327-32 32-32h89.367c14.209-55.206 64.324-96 123.968-96 60.781 0 111.67 42.365 124.742 99.181 4.208-2.038 8.934-3.181 13.923-3.181h416c17.674 0 32 14.326 32 32s-14.326 32-32 32h-416c-4.989 0-9.715-1.142-13.923-3.181-13.072 56.816-63.962 99.181-124.742 99.181-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.326-32-32zM341.334 848c44.182 0 80-35.818 80-80s-35.818-80-80-80c-44.183 0-80 35.818-80 80s35.817 80 80 80zM796.029 543.757c-14.122 55.331-64.298 96.243-124.029 96.243s-109.904-40.912-124.029-96.243c-1.302 0.16-2.627 0.243-3.971 0.243h-416c-17.673 0-32-14.326-32-32s14.327-32 32-32h416c1.344 0 2.669 0.083 3.971 0.243 14.125-55.331 64.298-96.243 124.029-96.243s109.907 40.912 124.029 96.243c1.302-0.16 2.627-0.243 3.971-0.243h96c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96c-1.344 0-2.669-0.083-3.971-0.243zM752 512c0-44.182-35.818-80-80-80s-80 35.818-80 80c0 44.182 35.818 80 80 80s80-35.818 80-80z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["settings"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":139,"id":157,"name":"settings","prevSize":32,"code":59826},"setIdx":1,"setId":4,"iconIdx":163},{"icon":{"paths":["M690.176 301.708c11.645-11.977 11.645-31.396 0-43.374l-149.091-153.351c-11.645-11.977-30.525-11.977-42.17 0l-149.091 153.351c-11.645 11.977-11.645 31.397 0 43.374s30.525 11.978 42.17 0l98.189-100.993v401.343c0 16.938 13.35 30.669 29.818 30.669s29.818-13.731 29.818-30.669v-401.343l98.189 100.993c11.645 11.978 30.525 11.978 42.17 0z","M221.818 379.274h149.091v59.635h-119.272v387.635h536.728v-387.635h-119.274v-59.635h149.091c16.467 0 29.818 13.35 29.818 29.818v447.274c0 16.467-13.35 29.818-29.818 29.818h-596.364c-16.468 0-29.818-13.35-29.818-29.818v-447.274c0-16.467 13.35-29.818 29.818-29.818z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["share"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":244,"id":158,"name":"share","prevSize":32,"code":59827},"setIdx":1,"setId":4,"iconIdx":164},{"icon":{"paths":["M664.083 405.072c11.638-13.299 10.288-33.517-3.011-45.155s-33.517-10.288-45.155 3.011l-125.251 143.142-39.917-45.619c-11.638-13.299-31.853-14.646-45.155-3.011-13.299 11.638-14.646 31.856-3.008 45.155l64 73.142c6.077 6.944 14.854 10.928 24.080 10.928 9.229 0 18.006-3.984 24.083-10.928l149.334-170.666z","M541.99 143.050c-12.854-3.634-26.448-3.753-39.363-0.345l-264.724 69.849c-29.793 7.861-52.548 33.743-54.753 65.633-23.589 341.205 187.752 520.29 276.51 579.794 33.136 22.211 75.363 22.144 108.416-0.259 88.218-59.792 297.117-239.072 272.611-580.214-2.25-31.321-24.339-56.895-53.504-65.14l-245.194-69.318zM518.957 204.587c1.843-0.487 3.786-0.47 5.622 0.049l245.194 69.318c4.294 1.214 6.838 4.781 7.082 8.139 22.15 308.362-165.306 468.851-244.685 522.65-11.437 7.754-25.363 7.792-36.87 0.077-80.086-53.686-269.606-214.054-248.301-522.218 0.234-3.389 2.833-7.004 7.233-8.164l264.725-69.849z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["shield-check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":80,"id":159,"name":"shield-check","prevSize":32,"code":59828},"setIdx":1,"setId":4,"iconIdx":165},{"icon":{"paths":["M513.302 142.705c12.915-3.408 26.509-3.289 39.36 0.345l245.197 69.318c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.142-184.397 520.422-272.611 580.214-33.053 22.403-75.28 22.47-108.416 0.259-88.762-59.504-300.101-238.589-276.511-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.725-69.849zM535.251 204.637c-1.834-0.519-3.776-0.536-5.622-0.050l-264.723 69.849c-4.4 1.161-6.999 4.775-7.234 8.164-21.305 308.164 168.216 468.532 248.299 522.218 11.507 7.715 25.434 7.677 36.874-0.077 79.379-53.798 266.832-214.288 244.682-522.65-0.24-3.358-2.784-6.925-7.078-8.139l-245.197-69.317z","M490.672 337.334c-19.76 4.672-47.245 12.31-81.149 24.554 20.81 108.771 53.219 187.014 81.149 238.832v-263.386zM492.867 271.316c33.77-6.898 61.805 19.742 61.805 51.125v360.963c0 17.024-10.333 31.747-25.642 37.52-15.67 5.91-33.779 1.331-44.861-12.675-32.656-41.267-106.323-152.95-141.19-354.563-3.242-18.746 7.066-37.695 25.328-44.726 56.186-21.63 99.094-32.442 124.56-37.644z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["shield"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":81,"id":160,"name":"shield-alt","prevSize":32,"code":59829},"setIdx":1,"setId":4,"iconIdx":166},{"icon":{"paths":["M778.64 213.336c-17.674 0-32 14.327-32 32v533.333c0 17.674 14.326 32 32 32s32-14.326 32-32v-533.333c0-17.673-14.326-32-32-32z","M600.87 341.334c-17.674 0-32 14.33-32 32v405.334c0 17.674 14.326 32 32 32s32-14.326 32-32v-405.334c0-17.67-14.326-32-32-32z","M423.104 810.669c-17.674 0-32-14.326-32-32v-277.334c0-17.67 14.326-32 32-32 17.67 0 32 14.33 32 32v277.334c0 17.674-14.33 32-32 32z","M245.333 597.334c-17.673 0-32 14.33-32 32v149.334c0 17.674 14.327 32 32 32s32-14.326 32-32v-149.334c0-17.67-14.327-32-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["signal"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":82,"id":161,"name":"signal","prevSize":32,"code":59830},"setIdx":1,"setId":4,"iconIdx":167},{"icon":{"paths":["M289.362 192c13.364 0 25.321 8.305 29.987 20.829l96.001 257.699c6.17 16.56-2.256 34.986-18.816 41.155-16.563 6.17-34.989-2.253-41.158-18.816l-20.477-54.963h-91.074l-20.476 54.963c-6.17 16.563-24.597 24.986-41.158 18.816s-24.986-24.595-18.816-41.155l96-257.699c4.666-12.524 16.622-20.829 29.987-20.829zM311.058 373.904l-21.695-58.238-21.695 58.238h43.391z","M522.131 626.435c-12.154 12.829-11.606 33.082 1.222 45.238l160 151.587c12.342 11.693 31.674 11.693 44.016 0l160-151.587c12.832-12.157 13.376-32.41 1.222-45.238s-32.41-13.376-45.238-1.222l-105.99 100.419v-501.632c0-17.673-14.326-32-32-32s-32 14.327-32 32v501.632l-105.994-100.419c-12.829-12.154-33.082-11.606-45.238 1.222z","M193.362 570.947c-17.673 0-32 14.326-32 32 0 17.67 14.327 32 32 32h116.145l-139.065 142.73c-8.979 9.216-11.565 22.915-6.564 34.771 5.001 11.853 16.617 19.562 29.484 19.562h192.001c17.674 0 32-14.326 32-32s-14.326-32-32-32h-116.146l139.064-142.733c8.979-9.216 11.565-22.915 6.563-34.768-4.998-11.856-16.614-19.562-29.482-19.562h-192.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["sort-az"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":83,"id":162,"name":"sort-az","prevSize":32,"code":59831},"setIdx":1,"setId":4,"iconIdx":168},{"icon":{"paths":["M919.258 667.229c12.605-12.253 12.877-32.394 0.605-44.982-12.269-12.589-32.435-12.858-45.040-0.605l-106.112 103.155v-500.8c0-17.568-14.259-31.81-31.853-31.81-17.59 0-31.85 14.242-31.85 31.81v500.8l-106.115-103.155c-12.605-12.253-32.768-11.984-45.040 0.605-12.269 12.589-11.997 32.73 0.608 44.982l160.179 155.718c12.368 12.019 32.070 12.019 44.435 0l160.182-155.718zM560.659 333.667c17.59 0 31.85-14.243 31.85-31.811s-14.259-31.809-31.85-31.809h-432.49c-17.591 0-31.852 14.242-31.852 31.809s14.26 31.811 31.852 31.811h432.49zM464.55 536.099c17.59 0 31.85-14.243 31.85-31.811 0-17.565-14.259-31.808-31.85-31.808h-336.381c-17.591 0-31.852 14.24-31.852 31.808s14.26 31.811 31.852 31.811h336.381zM384.458 722.96c17.594 0 31.853-14.24 31.853-31.808s-14.259-31.811-31.853-31.811h-256.289c-17.591 0-31.852 14.243-31.852 31.811s14.26 31.808 31.852 31.808h256.289z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["sort"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":84,"id":163,"name":"sort","prevSize":32,"code":59832},"setIdx":1,"setId":4,"iconIdx":169},{"icon":{"paths":["M593.939 170.244c-20.867-57.726-103.155-55.816-121.322 2.815l-58.976 190.348h-221.513c-58.947 0-86.549 72.944-42.37 111.968l157.591 139.206-53.209 216.928c-14.17 57.77 51.25 101.936 99.533 67.197l177.741-127.875 177.741 127.875c48.285 34.739 113.706-9.427 99.536-67.197l-53.386-217.651 147.888-139.968c42.032-39.779 13.878-110.483-43.99-110.483h-195.443l-69.821-193.164z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["star-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":85,"id":164,"name":"star-filled","prevSize":32,"code":59833},"setIdx":1,"setId":4,"iconIdx":170},{"icon":{"paths":["M472.618 173.508c18.166-58.554 100.454-60.461 121.322-2.812l69.821 192.91h195.44c57.872 0 86.026 70.611 43.994 110.336l-147.888 139.782 53.386 217.363c14.17 57.696-51.251 101.805-99.536 67.11l-177.741-127.709-177.741 127.709c-48.283 34.691-113.703-9.414-99.533-67.11l53.209-216.64-157.591-139.024c-44.179-38.973-16.577-111.818 42.37-111.818h221.513l58.976-190.098zM603.574 385.334l-69.824-192.91-58.976 190.098c-8.304 26.758-33.085 45.002-61.133 45.002h-221.513l157.59 139.021c17.837 15.731 25.456 40.048 19.789 63.13l-53.209 216.643 177.74-127.709c22.33-16.045 52.426-16.045 74.755 0l177.738 127.709-53.386-217.363c-5.478-22.317 1.456-45.856 18.166-61.648l147.888-139.782h-195.44c-26.957 0-51.024-16.87-60.186-42.189z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["star"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":86,"id":165,"name":"star","prevSize":32,"code":59834},"setIdx":1,"setId":4,"iconIdx":171},{"icon":{"paths":["M499.952 539.082c2.714 0.819 5.462 1.629 8.25 2.429 45.341 13.12 76.643 26.47 93.904 40.048 17.264 13.35 25.894 32.339 25.894 56.966s-9.322 44.074-27.965 58.346c-18.643 14.269-45.456 21.405-80.442 21.405-37.514 0-67.552-8.749-90.106-26.24-15.216-12.077-25.245-27.094-30.090-45.050-3.942-14.605-15.664-27.104-30.794-27.104h-11.843c-15.13 0-27.722 12.378-24.893 27.242 3.514 18.47 10.736 35.514 21.667 51.126 16.339 23.018 39.472 41.2 69.392 54.547 29.92 13.12 62.144 19.68 96.666 19.68 53.168 0 95.632-12.198 127.395-36.595 31.76-24.627 47.642-57.309 47.642-98.048 0-25.549-5.754-47.757-17.261-66.63-6.947-11.626-16.25-22.33-27.91-32.122h99.962c15.13 0 27.395-12.266 27.395-27.395s-12.266-27.392-27.395-27.392h-217.398c-1.709-0.493-3.437-0.986-5.178-1.472-41.658-11.738-71.235-24.627-88.726-38.669-17.261-14.269-25.894-31.645-25.894-52.131 0-25.546 9.091-45.456 27.277-59.725 18.41-14.5 43.958-21.75 76.64-21.75 35.216 0 62.49 8.746 81.824 26.24 13.139 11.731 21.814 26.496 26.022 44.288 3.485 14.723 15.242 27.174 30.371 27.174h11.84c15.13 0 27.702-12.374 24.88-27.238-3.331-17.552-9.974-34.134-19.923-49.75-14.733-23.475-35.677-41.888-62.835-55.237-26.928-13.349-57.654-20.024-92.179-20.024-50.634 0-91.834 13.004-123.594 39.012-31.533 25.779-47.299 58.46-47.299 98.047 0 34.986 12.89 64.445 38.669 88.381 1.050 0.957 2.125 1.907 3.222 2.854h-112.56c-15.13 0-27.395 12.262-27.395 27.392s12.265 27.395 27.395 27.395h225.373z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["strike"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":94,"id":166,"name":"strike","prevSize":32,"code":59846},"setIdx":1,"setId":4,"iconIdx":172},{"icon":{"paths":["M481.35 117.336c0-17.673 14.326-32 32-32s32 14.327 32 32v106.667c0 17.673-14.326 32-32 32s-32-14.327-32-32v-106.667zM771.392 214.631c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-75.411 75.413c-12.499 12.496-32.758 12.496-45.254 0-12.499-12.496-12.499-32.759 0-45.255l75.411-75.412zM336.73 694.63c-12.499-12.496-32.759-12.496-45.256 0l-75.495 75.498c-12.497 12.496-12.497 32.755 0 45.254 12.497 12.496 32.758 12.496 45.255 0l75.496-75.498c12.496-12.496 12.496-32.755 0-45.254zM481.35 800.003c0-17.674 14.326-32 32-32s32 14.326 32 32v106.669c0 17.67-14.326 32-32 32s-32-14.33-32-32v-106.669zM213.352 212.001c-12.497 12.497-12.497 32.758 0 45.255l75.349 75.348c12.497 12.496 32.758 12.496 45.254 0 12.499-12.496 12.496-32.757 0-45.254l-75.348-75.349c-12.497-12.497-32.758-12.497-45.255 0zM695.978 739.885c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.254 0l75.331 75.328c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-75.328-75.328zM87.751 512.003c0 17.674 14.327 32 32 32h106.667c17.673 0 32-14.326 32-32s-14.327-32-32-32h-106.667c-17.673 0-32 14.326-32 32zM801.35 544.003c-17.674 0-32-14.326-32-32s14.326-32 32-32h106.669c17.67 0 32 14.326 32 32s-14.33 32-32 32h-106.669zM668.17 512c0-85.504-69.315-154.816-154.819-154.816-85.507 0-154.819 69.312-154.819 154.816 0 85.507 69.312 154.819 154.819 154.819 85.504 0 154.819-69.312 154.819-154.819zM726.682 512c0 117.821-95.51 213.334-213.331 213.334s-213.335-95.514-213.335-213.334c0-117.821 95.514-213.332 213.335-213.332s213.331 95.511 213.331 213.332z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["sun"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":95,"id":167,"name":"sun","prevSize":32,"code":59847},"setIdx":1,"setId":4,"iconIdx":173},{"icon":{"paths":["M930.704 512c0 229.75-186.25 416-416 416s-415.999-186.25-415.999-416c0-229.75 186.25-416 415.999-416s416 186.25 416 416zM570.49 859.603l-41.827-156.102c-4.611 0.33-9.264 0.499-13.958 0.499-4.57 0-9.101-0.16-13.594-0.474l-41.837 156.134c18.058 2.854 36.573 4.339 55.43 4.339 18.986 0 37.616-1.504 55.786-4.397zM438.893 688.451c-47.549-20.454-85.181-59.571-103.674-108.125l-155.029 41.539c33.968 103.485 114.617 185.805 217.045 222.058l41.658-155.472zM162.705 512c0 16.090 1.080 31.926 3.17 47.443l156.906-42.042c-0.051-1.795-0.077-3.594-0.077-5.402 0-4.909 0.186-9.776 0.547-14.595l-156.051-41.814c-2.958 18.368-4.496 37.21-4.496 56.41zM396.31 180.407c-99.16 35.408-177.786 114.033-213.196 213.19l155.535 41.677c19.357-44.352 54.982-79.978 99.334-99.331l-41.674-155.536zM514.704 160c-19.197 0-38.035 1.537-56.4 4.494l41.814 156.053c4.813-0.362 9.68-0.547 14.586-0.547 5.030 0 10.019 0.192 14.95 0.573l41.808-156.021c-18.477-2.995-37.437-4.552-56.758-4.552zM632.512 843.802c102.659-36.451 183.392-119.194 217.094-223.12l-154.973-41.526c-18.291 48.982-56.010 88.493-103.786 109.155l41.664 155.491zM863.699 558.198c1.984-15.117 3.005-30.538 3.005-46.198 0-18.771-1.469-37.197-4.298-55.171l-156.157 41.84c0.301 4.406 0.454 8.851 0.454 13.331 0 1.376-0.013 2.752-0.042 4.122l157.037 42.077zM846.714 394.774c-35.165-99.6-113.885-178.641-213.277-214.247l-41.68 155.559c44.582 19.555 80.314 55.565 99.504 100.342l155.453-41.654zM642.704 512c0-70.691-57.306-128-128-128-70.691 0-128 57.309-128 128s57.309 128 128 128c70.694 0 128-57.309 128-128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["support"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":96,"id":168,"name":"support","prevSize":32,"code":59848},"setIdx":1,"setId":4,"iconIdx":174},{"icon":{"paths":["M368 412.982c-53.592 0-96-42.877-96-94.491 0-51.616 42.408-94.491 96-94.491 53.594 0 96 42.876 96 94.491 0 51.614-42.406 94.491-96 94.491zM368 476.982c88.365 0 160-70.96 160-158.491s-71.635-158.491-160-158.491c-88.365 0-160 70.959-160 158.491s71.635 158.491 160 158.491zM713.6 397.133c-35.92 0-64-28.685-64-62.794s28.080-62.792 64-62.792c35.92 0 64 28.684 64 62.792s-28.080 62.794-64 62.794zM713.6 461.133c70.691 0 128-56.768 128-126.794s-57.309-126.792-128-126.792c-70.691 0-128 56.767-128 126.792s57.309 126.794 128 126.794zM197.459 527.267c27.344-8.707 56.67-9.242 84.319-1.539l48.491 13.51c24.205 6.742 49.882 6.275 73.824-1.347l30.099-9.584c29.475-9.386 61.085-9.962 90.89-1.658 67.962 18.934 114.918 80.333 114.918 150.269v91.987c0 52.518-42.979 95.094-96 95.094h-352c-53.019 0-96-42.576-96-95.094v-103.766c0-62.909 40.999-118.621 101.459-137.872zM264.451 586.758c-15.545-4.333-32.034-4.032-47.407 0.864-33.993 10.822-57.044 42.147-57.044 77.517v103.766c0 17.507 14.327 31.699 32 31.699h352c17.674 0 32-14.192 32-31.699v-91.987c0-41.533-27.885-77.997-68.246-89.242-17.699-4.931-36.474-4.589-53.978 0.986l-30.099 9.584c-35.91 11.434-74.426 12.138-110.737 2.019l-48.489-13.507zM691.2 778.717h140.8c53.021 0 96-42.979 96-96v-30.611c0-56.877-38.614-106.49-93.747-120.454-21.398-5.418-43.853-5.040-65.056 1.098l-16.4 4.746c-21.843 6.323-44.973 6.714-67.018 1.13l-29.805-7.549c-19.907-5.043-40.797-4.691-60.522 1.018-1.066 0.31-2.122 0.634-3.174 0.97 10.71 4.048 20.896 9.539 30.253 16.374l2.429 1.776 15.040 13.206c9.939 8.726 18.141 19.248 24.182 31.014l2.208 4.301 3.677 0.931c33.062 8.374 67.76 7.789 100.525-1.693l16.4-4.749c10.282-2.976 21.171-3.158 31.546-0.531 26.736 6.771 45.462 30.832 45.462 58.413v30.611c0 17.674-14.326 32-32 32h-140.8v64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["team"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":97,"id":169,"name":"team","prevSize":32,"code":59849},"setIdx":1,"setId":4,"iconIdx":175},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.642 51.52 146.602 80.998 235.29 90.893 88.611 9.885 186.221 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.941-10.765-2.374-1.514-5.245-3.197-8.672-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.398-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.834 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.12 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.949 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948zM333.952 422.051c0-17.648 14.25-31.955 31.83-31.955h183.008c17.578 0 31.827 14.307 31.827 31.955s-14.25 31.955-31.827 31.955h-183.008c-17.581 0-31.83-14.307-31.83-31.955zM365.782 539.709c-17.581 0-31.83 14.307-31.83 31.955s14.25 31.955 31.83 31.955h224.118c17.578 0 31.827-14.307 31.827-31.955s-14.25-31.955-31.827-31.955h-224.118z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["threads"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":98,"id":170,"name":"threads","prevSize":32,"code":59850},"setIdx":1,"setId":4,"iconIdx":176},{"icon":{"paths":["M353.354 320c0-17.673 14.326-32 32-32h256c17.674 0 32 14.327 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M385.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 448c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M353.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M513.354 544c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M609.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M385.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 704c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M289.353 160h448.001c35.344 0 64 28.654 64 64v576c0 35.347-28.656 64-64 64h-448.001c-35.346 0-64-28.653-64-64v-576c0-35.346 28.654-64 64-64zM289.353 224v576h448.001v-576h-448.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["total"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":99,"id":171,"name":"total","prevSize":32,"code":59851},"setIdx":1,"setId":4,"iconIdx":177},{"icon":{"paths":["M713.613 91.356c13.162-11.794 33.392-10.685 45.187 2.477l129.034 144c10.89 12.154 10.89 30.556 0 42.71l-129.034 144.001c-11.795 13.162-32.026 14.269-45.187 2.477-13.162-11.795-14.272-32.026-2.477-45.187l81.222-90.646h-216.358c-17.674 0-32-14.327-32-32s14.326-32 32-32h216.358l-81.222-90.645c-11.795-13.162-10.685-33.393 2.477-45.187zM340.026 464.461c8.586-15.45 28.067-21.018 43.514-12.432l128.461 71.366 128.461-71.366c15.446-8.586 34.928-3.018 43.514 12.432 8.582 15.45 3.014 34.931-12.435 43.514l-159.539 88.634-159.539-88.634c-15.45-8.582-21.018-28.064-12.435-43.514zM192 288v448h640v-192c0-17.674 14.326-32 32-32s32 14.326 32 32v224c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512c0-17.673 14.327-32 32-32h272c17.674 0 32 14.327 32 32s-14.326 32-32 32h-240z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["transcript"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":100,"id":172,"name":"transcript","prevSize":32,"code":59852},"setIdx":1,"setId":4,"iconIdx":178},{"icon":{"paths":["M384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 106.038 85.962 192 192 192s192-85.962 192-192v-256c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 70.691-57.309 128-128 128s-128-57.309-128-128v-256zM352 856c-13.254 0-24 10.746-24 24s10.746 24 24 24h320c13.254 0 24-10.746 24-24s-10.746-24-24-24h-320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["underline"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":101,"id":173,"name":"underline","prevSize":32,"code":59853},"setIdx":1,"setId":4,"iconIdx":179},{"icon":{"paths":["M512 832c176.73 0 320-143.27 320-320s-143.27-320-320-320c-111.712 0-210.056 57.244-267.295 144h107.295c17.674 0 32 14.326 32 32s-14.326 32-32 32h-176c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v101.364c70.228-90.856 180.282-149.364 304-149.364 212.077 0 384 171.923 384 384s-171.923 384-384 384c-212.077 0-384-171.923-384-384h64c0 176.73 143.27 320 320 320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["undo"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":102,"id":174,"name":"undo","prevSize":32,"code":59854},"setIdx":1,"setId":4,"iconIdx":180},{"icon":{"paths":["M467.808 512c0-63.322-61.053-128-153.903-128s-153.905 64.678-153.905 128c0 63.322 61.054 128 153.905 128s153.903-64.678 153.903-128zM512 592.099c34.454 66.042 110.195 111.901 198.096 111.901 120.346 0 217.904-85.962 217.904-192s-97.558-192-217.904-192c-87.901 0-163.642 45.859-198.096 111.901-34.451-66.042-110.195-111.901-198.095-111.901-120.345 0-217.905 85.962-217.905 192s97.559 192 217.905 192c87.9 0 163.644-45.859 198.095-111.901zM864 512c0 63.322-61.053 128-153.904 128s-153.904-64.678-153.904-128c0-63.322 61.053-128 153.904-128s153.904 64.678 153.904 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["Unlimited"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":103,"id":175,"name":"Unlimited","prevSize":32,"code":59855},"setIdx":1,"setId":4,"iconIdx":181},{"icon":{"paths":["M829.168 153.372c12.515-12.497 32.803-12.497 45.315 0 12.515 12.497 12.515 32.758 0 45.255l-672.887 672c-12.513 12.496-32.801 12.496-45.315 0s-12.513-32.758 0-45.254l672.887-672zM110.155 480.051c101.936-153.699 303.797-327.676 542.114-225.436l-49.578 49.512c-56.528-19.209-108.077-19.504-153.526-9.726-114.906 24.721-215.653 118.392-280.79 213.871 38.633 48 75.969 86.822 111.862 117.885l-45.363 45.302c-39.684-34.736-80.189-77.437-121.317-129.181-14.248-17.923-16.056-43.146-3.402-62.227zM797.981 350.454l-45.328 45.27c35.546 31.427 72.336 70.947 110.186 120.080-61.546 95.187-158.656 188.682-272.125 213.626-46.752 10.278-100.624 9.734-160.592-11.603l-49.331 49.267c244.662 107.334 443.389-69.158 540.778-224.253 11.674-18.589 9.894-42.656-3.395-60.128-40.493-53.235-80.64-96.931-120.192-132.259zM514.982 347.43c13.709 0 27.037 1.571 39.802 4.541l-203.738 203.469c-3.901-13.837-5.981-28.403-5.981-43.44 0-90.89 76.074-164.57 169.917-164.57zM679.091 469.184l-203.264 202.998c12.57 2.87 25.68 4.39 39.155 4.39 93.843 0 169.917-73.68 169.917-164.573 0-14.81-2.019-29.162-5.808-42.816z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["unread-on-top-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":104,"id":176,"name":"unread-on-top-disabled","prevSize":32,"code":59856},"setIdx":1,"setId":4,"iconIdx":182},{"icon":{"paths":["M589.36 729.43c-107.366 23.603-252.288-9.875-422.339-221.158 65.137-95.478 165.885-189.15 280.79-213.871 108.314-23.302 251.286 10.604 413.674 221.404-61.546 95.187-158.653 188.682-272.125 213.626zM916.819 482.714c-347.59-456.963-669.742-211.156-808.018-2.662-12.655 19.082-10.846 44.304 3.402 62.227 362.786 456.419 677.038 209.142 808.011 0.563 11.674-18.589 9.894-42.656-3.395-60.128zM619.462 512c0-53.709-45.517-100.57-105.834-100.57s-105.834 46.861-105.834 100.57c0 53.709 45.517 100.573 105.834 100.573s105.834-46.864 105.834-100.573zM683.546 512c0 90.893-76.074 164.573-169.917 164.573s-169.917-73.68-169.917-164.573c0-90.89 76.074-164.57 169.917-164.57s169.917 73.68 169.917 164.57z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["unread-on-top"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":105,"id":177,"name":"unread-on-top","prevSize":32,"code":59857},"setIdx":1,"setId":4,"iconIdx":183},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l33.166 49.75h-59.792c-44.011 0-70.484 14.874-86.279 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h143.999v64h-144c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.305-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.616 53.456 30.346 35.626 38.102 81.35 33.443 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-144v-64h144c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 588.778l-96-99.050c-6.029-6.218-14.32-9.728-22.979-9.728s-16.95 3.51-22.979 9.728l-96 99.050c-12.298 12.691-11.981 32.95 0.707 45.251 12.691 12.298 32.95 11.981 45.251-0.707l41.021-42.326v273.005c0 17.674 14.326 32 32 32s32-14.326 32-32v-273.005l41.021 42.326c12.301 12.688 32.56 13.005 45.251 0.707 12.691-12.301 13.005-32.56 0.707-45.251z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["upload"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":106,"id":178,"name":"upload","prevSize":32,"code":59858},"setIdx":1,"setId":4,"iconIdx":184},{"icon":{"paths":["M553.411 326.282c0 91.578-75.846 165.818-169.411 165.818-93.564 0-169.412-74.24-169.412-165.818 0-91.581 75.848-165.821 169.412-165.821 93.565 0 169.411 74.24 169.411 165.821zM485.648 326.282c0-54.949-45.51-99.493-101.648-99.493s-101.647 44.544-101.647 99.493c0 54.947 45.509 99.491 101.647 99.491s101.648-44.544 101.648-99.491z","M203.427 511.232c28.952-9.11 60.004-9.67 89.279-1.61l51.342 14.131c25.632 7.056 52.819 6.566 78.166-1.408l31.872-10.026c31.206-9.821 64.678-10.422 96.234-1.738 71.962 19.811 121.68 84.051 121.68 157.219v96.24c0 54.947-45.51 99.491-101.648 99.491h-372.705c-56.138 0-101.647-44.544-101.647-99.491v-108.566c0-65.814 43.411-124.106 107.427-144.243zM274.359 573.472c-16.46-4.531-33.918-4.218-50.196 0.906-35.992 11.322-60.399 44.093-60.399 81.098v108.566c0 18.317 15.17 33.165 33.882 33.165h372.705c18.714 0 33.882-14.848 33.882-33.165v-96.24c0-43.453-29.523-81.603-72.259-93.366-18.739-5.158-38.618-4.8-57.152 1.030l-31.872 10.026c-38.022 11.962-78.803 12.698-117.248 2.115l-51.343-14.134z","M797.091 189.321c0-15.913-13.024-28.812-29.091-28.812s-29.091 12.9-29.091 28.812v100.844h-101.818c-16.067 0-29.091 12.9-29.091 28.812s13.024 28.812 29.091 28.812h101.818v100.845c0 15.914 13.024 28.813 29.091 28.813s29.091-12.899 29.091-28.813v-100.845h101.818c16.067 0 29.091-12.899 29.091-28.812s-13.024-28.812-29.091-28.812h-101.818v-100.844z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["user-add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":107,"id":179,"name":"user-add","prevSize":32,"code":59859},"setIdx":1,"setId":4,"iconIdx":185},{"icon":{"paths":["M464 318.747c0-51.548-42.406-94.366-96-94.366-53.592 0-96 42.819-96 94.366s42.408 94.367 96 94.367c53.594 0 96-42.819 96-94.367zM528 318.747c0 87.416-71.635 158.284-160 158.284s-160-70.867-160-158.284c0-87.417 71.635-158.282 160-158.282s160 70.865 160 158.282zM281.778 525.712c-27.649-7.693-56.976-7.158-84.319 1.536-60.46 19.226-101.459 74.864-101.459 137.69v103.629c0 52.451 42.981 94.97 96 94.97h352c3.606 0 7.165-0.195 10.666-0.579v-64.534c-3.334 1.168-6.925 1.802-10.666 1.802h-352c-17.673 0-32-14.173-32-31.658v-103.629c0-35.325 23.051-66.605 57.044-77.414 15.373-4.89 31.862-5.187 47.407-0.864l48.489 13.491c36.311 10.102 74.827 9.402 110.737-2.016l30.099-9.571c17.504-5.568 36.278-5.91 53.978-0.986 18.899 5.261 35.066 16.042 46.912 30.282v-79.712c-9.309-4.749-19.203-8.627-29.584-11.517-29.805-8.291-61.414-7.715-90.89 1.654l-30.099 9.574c-23.942 7.61-49.619 8.080-73.824 1.344l-48.491-13.491zM763.366 489.709c-12.326-12.646-32.586-12.918-45.248-0.608-12.666 12.31-12.938 32.544-0.611 45.19l102.842 105.51h-324.349c-17.674 0-32 14.307-32 31.958 0 17.648 14.326 31.958 32 31.958h324.349l-102.842 105.507c-12.326 12.65-12.054 32.88 0.611 45.194 12.662 12.31 32.922 12.038 45.248-0.611l155.718-159.757c12.093-12.406 12.093-32.176 0-44.582l-155.718-159.76z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["user-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":108,"id":180,"name":"user-forward","prevSize":32,"code":59860},"setIdx":1,"setId":4,"iconIdx":186},{"icon":{"paths":["M609.354 336c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM673.354 336c0 88.365-71.635 160-160 160s-160-71.635-160-160c0-88.365 71.635-160 160-160s160 71.635 160 160zM413.805 551.802c-24.621-5.77-50.285-5.366-74.714 1.178-67.086 17.968-113.738 78.762-113.738 148.211v66.81c0 53.021 42.98 96 96 96h384c53.021 0 96-42.979 96-96v-58.531c0-74.301-51.149-138.826-123.488-155.779l-6.458-1.514c-25.674-6.016-52.435-5.594-77.907 1.229l-49.626 13.293c-20.378 5.456-41.789 5.795-62.326 0.979l-67.744-15.875zM355.651 614.8c14.237-3.814 29.197-4.051 43.549-0.688l67.744 15.878c30.806 7.219 62.925 6.714 93.488-1.472l49.629-13.293c15.283-4.096 31.341-4.349 46.742-0.736l6.458 1.51c43.402 10.173 74.093 48.89 74.093 93.469v58.531c0 17.674-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32v-66.81c0-40.483 27.193-75.917 66.298-86.39z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["user"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":109,"id":181,"name":"user","prevSize":32,"code":59861},"setIdx":1,"setId":4,"iconIdx":187},{"icon":{"paths":["M201.583 672c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 576c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 480c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 384c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 288c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M329.584 192c-17.674 0-32.001 14.327-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M201.583 864c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 768c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["view-condensed"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":110,"id":182,"name":"view-condensed","prevSize":32,"code":59862},"setIdx":1,"setId":4,"iconIdx":188},{"icon":{"paths":["M288 192c0-17.673 14.327-32 32-32h544c17.674 0 32 14.327 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32h448c17.674 0 32 14.327 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.327-32-32zM192 304c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M288 464c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 560c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M288 736c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 832c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 848c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["view-extended"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":111,"id":183,"name":"view-extended","prevSize":32,"code":59863},"setIdx":1,"setId":4,"iconIdx":189},{"icon":{"paths":["M192 320c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M320 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 480c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M192 832c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 736c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["view-medium"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":112,"id":184,"name":"view-medium","prevSize":32,"code":59864},"setIdx":1,"setId":4,"iconIdx":190},{"icon":{"paths":["M640.854 256c26.512 0 48-21.49 48-48s-21.488-48-48-48c-26.509 0-48 21.49-48 48s21.491 48 48 48zM640.854 320c61.856 0 112-50.144 112-112s-50.144-112-112-112c-61.856 0-112 50.144-112 112s50.144 112 112 112zM592.854 416v256h-160v128h32v-96h224v-288h-96zM528.854 768h160c35.347 0 64-28.653 64-64v-288c0-35.347-28.653-64-64-64h-96c-35.344 0-64 28.653-64 64v192h-96c-35.344 0-64 28.653-64 64v128c0 35.347 28.656 64 64 64h32c35.347 0 64-28.653 64-64v-32zM784.854 448c0-17.674 14.326-32 32-32s32 14.326 32 32v384c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32s14.326-32 32-32h192v-352zM368.403 401.52c9.677-9.059 10.176-24.246 1.117-33.923l-48.272-51.558v-47.925c0-13.255-10.746-24-24-24s-24 10.745-24 24v57.406c0 6.093 2.316 11.955 6.48 16.403l54.752 58.48c9.059 9.677 24.246 10.176 33.923 1.117zM170.974 414.278c53.308 74.218 156.687 91.171 230.908 37.862 10.765-7.731 25.76-5.274 33.494 5.491 7.731 10.768 5.274 25.763-5.494 33.494-95.75 68.771-229.121 46.902-297.894-48.848s-46.902-229.123 48.848-297.895c75.545-54.26 174.453-52.073 246.597-1.796 10.874 7.578 13.546 22.538 5.968 33.412s-22.538 13.547-33.411 5.968c-55.971-39.005-132.65-40.618-191.153 1.402-74.219 53.308-91.171 156.688-37.864 230.909z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["waiting-on-me"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":113,"id":185,"name":"waiting-on-me","prevSize":32,"code":59865},"setIdx":1,"setId":4,"iconIdx":191},{"icon":{"paths":["M512 352.003c17.674 0 32 14.33 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.67 14.326-32 32-32z","M512 672.003c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.67 14.326-32 32-32z","M567.101 158.348c-24.774-41.922-85.427-41.922-110.202 0l-359.92 609.099c-25.21 42.662 5.544 96.557 55.099 96.557h719.845c49.555 0 80.307-53.894 55.098-96.557l-359.92-609.099zM512 190.906l359.923 609.097h-719.845l359.922-609.097z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["warning"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":114,"id":186,"name":"warning","prevSize":32,"code":59866},"setIdx":1,"setId":4,"iconIdx":192},{"icon":{"paths":["M784.131 240.143c-35.43-35.658-77.581-63.931-124.016-83.181s-96.227-29.094-146.493-28.961c-210.863 0-382.322 171.532-382.414 382.376-0.085 67.104 17.523 133.043 51.047 191.171l-54.256 198.154 202.72-53.174c56.064 30.531 118.883 46.531 182.717 46.538h0.166c210.752 0 382.32-171.552 382.394-382.394 0.16-50.25-9.645-100.029-28.848-146.464-19.2-46.436-47.418-88.604-83.018-124.065zM513.622 828.486h-0.186c-56.922 0.006-112.797-15.293-161.776-44.298l-11.606-6.896-120.302 31.555 32.124-117.347-7.573-12.029c-31.783-50.64-48.608-109.232-48.535-169.021 0-175.235 142.653-317.816 317.981-317.816 84.301 0.049 165.13 33.58 224.707 93.218 59.581 59.638 93.034 140.499 92.998 224.8-0.074 175.254-142.653 317.834-317.834 317.834zM687.958 590.451c-9.552-4.787-56.528-27.907-65.293-31.171s-15.126-4.768-21.491 4.784c-6.362 9.555-24.678 31.171-30.253 37.462-5.574 6.288-11.149 7.187-20.701 2.4-9.555-4.784-40.339-14.87-76.845-47.434-28.403-25.322-47.584-56.621-53.174-66.192-5.594-9.571-0.589-14.669 4.198-19.491 4.291-4.291 9.552-11.168 14.32-16.742s6.381-9.571 9.552-15.933c3.174-6.362 1.597-11.955-0.787-16.739-2.384-4.787-21.491-51.818-29.466-70.96-7.757-18.63-15.622-16.099-21.491-16.394-5.501-0.275-11.955-0.349-18.336-0.349-4.842 0.131-9.606 1.264-13.994 3.325-4.387 2.058-8.298 5.005-11.491 8.65-8.749 9.552-33.428 32.675-33.428 79.706s34.234 92.467 39.002 98.848c4.765 6.381 67.382 102.883 163.187 144.266 17.792 7.68 35.974 14.413 54.477 20.17 22.902 7.334 43.731 6.237 60.179 3.779 18.336-2.733 56.547-23.104 64.506-45.418 7.955-22.317 7.955-41.459 5.501-45.456-2.458-3.997-8.618-6.326-18.173-11.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["whatsapp-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":237,"id":187,"name":"whatsapp-monochromatic","prevSize":32,"code":59868},"setIdx":1,"setId":4,"iconIdx":193},{"icon":{"paths":["M354.006 399.123l14.029 0.627-0.541-16.726-152.878 1.578c49.916-116.491 165.64-198.133 300.366-198.133 99.645 0 188.893 44.659 248.81 115.065-3.712 0.171-7.491 0.492-11.526 1.068 0 0-63.76 14.898-13.302 118.708 0 0 31.085 84.541-19.306 198.774l-28.403 73.306-99.101-264.723c0 0-5.984-28.154 23.61-28.154l23.76-1.472 0.339-16.035h-228.368v14.458c0 0 39.83-0.288 56.15 27.149l40.762 103.779-73.014 174.403-108.608-272.4c0 0-3.389-31.779 27.222-31.27z","M841.603 513.168c0-33.862-5.235-66.643-14.726-97.357l-145.949 378.755c96.134-56.88 160.675-161.571 160.675-281.398z","M411.478 823.011c32.49 10.912 67.267 16.778 103.488 16.778 37.85 0 74.102-6.406 107.898-18.256l-99.709-258.502-111.677 259.981z","M188.279 513.149c0-32.083 4.712-63.066 13.339-92.336l1 2.051 152.656 375.229c-99.606-55.882-166.994-162.538-166.994-284.944z","M130.705 512.093c0-211.775 172.316-384.093 384.076-384.093 211.725 0 383.923 172.318 383.923 384.093 0 211.776-172.198 384.010-383.923 384.010-211.757 0-384.076-172.234-384.076-384.010zM514.781 879.254c202.384 0 367.11-164.742 367.11-367.178 0-202.486-164.726-367.145-367.11-367.161-202.489 0-367.213 164.673-367.213 367.161 0 202.435 164.724 367.178 367.213 367.178z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["wordpress-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":241,"id":188,"name":"wordpress-monochromatic","prevSize":32,"code":59656},"setIdx":1,"setId":4,"iconIdx":194},{"icon":{"paths":["M193.353 405.334h213.332v-213.334h-213.332v213.334zM129.353 170.667c0-23.564 19.102-42.667 42.667-42.667h256c23.565 0 42.666 19.102 42.666 42.667v255.999c0 23.565-19.101 42.669-42.666 42.669h-256c-23.564 0-42.667-19.104-42.667-42.669v-255.999zM620.019 405.334h213.334v-213.334h-213.334v213.334zM556.019 170.667c0-23.564 19.104-42.667 42.666-42.667h256c23.565 0 42.669 19.102 42.669 42.667v255.999c0 23.565-19.104 42.669-42.669 42.669h-256c-23.562 0-42.666-19.104-42.666-42.669v-255.999zM620.019 618.666h213.334v213.334h-213.334v-213.334zM598.685 554.666c-23.562 0-42.666 19.104-42.666 42.669v256c0 23.562 19.104 42.666 42.666 42.666h256c23.565 0 42.669-19.104 42.669-42.666v-256c0-23.565-19.104-42.669-42.669-42.669h-256zM193.353 832h213.332v-213.334h-213.332v213.334zM129.353 597.334c0-23.565 19.102-42.669 42.667-42.669h256c23.565 0 42.666 19.104 42.666 42.669v256c0 23.562-19.101 42.666-42.666 42.666h-256c-23.564 0-42.667-19.104-42.667-42.666v-256z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["workspaces"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":119,"id":189,"name":"workspaces","prevSize":32,"code":59870},"setIdx":1,"setId":4,"iconIdx":195},{"icon":{"paths":["M384.509 149.333c0-11.782 9.562-21.333 21.36-21.333h85.446c11.798 0 21.363 9.551 21.363 21.333v106.667h-106.81c-11.798 0-21.36-9.551-21.36-21.333v-85.333z","M512.678 256h106.806c11.798 0 21.36 9.551 21.36 21.333v85.332c0 11.782-9.562 21.334-21.36 21.334h-106.806v-128z","M384.509 405.334c0-11.782 9.562-21.334 21.36-21.334h106.81v128h-106.81c-11.798 0-21.36-9.552-21.36-21.334v-85.331z","M512.678 512h106.806c11.798 0 21.36 9.552 21.36 21.334v106.666h-128.166v-128z","M427.232 640c-23.597 0-42.723 19.104-42.723 42.666v170.669c0 23.562 19.126 42.666 42.723 42.666h170.89c23.597 0 42.723-19.104 42.723-42.666v-213.334h-213.613zM491.315 725.334c-11.798 0-21.36 9.549-21.36 21.331v42.669c0 11.782 9.562 21.331 21.36 21.331h42.723c11.798 0 21.36-9.549 21.36-21.331v-42.669c0-11.782-9.562-21.331-21.36-21.331h-42.723z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["zip"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":120,"id":190,"name":"zip","prevSize":32,"code":59871},"setIdx":1,"setId":4,"iconIdx":196},{"icon":{"paths":["M544 208c0-17.673-14.326-32-32-32s-32 14.327-32 32v271.997h-271.998c-17.673 0-32 14.326-32 32s14.327 32 32 32h271.998v272.003c0 17.674 14.326 32 32 32s32-14.326 32-32v-272.003l272-0.003c17.674 0 32-14.326 32-32s-14.326-32-32-32l-272 0.003v-271.997z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":240,"id":191,"name":"add","prevSize":32,"code":59872},"setIdx":1,"setId":4,"iconIdx":197}],"height":1024,"metadata":{"name":"custom"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"custom","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M649.427 192c-26.454 0-52.016 10.804-71.005 30.343l-305.1 313.906c-31.48 32.387-49.322 76.506-49.322 122.694 0 46.186 17.842 90.304 49.322 122.694 31.451 32.355 73.91 50.362 117.984 50.362s86.531-18.006 117.981-50.362l305.101-313.907c12.317-12.672 32.576-12.96 45.248-0.643 12.675 12.317 12.963 32.576 0.646 45.251l-305.101 313.904c-43.302 44.554-102.23 69.757-163.875 69.757s-120.574-25.203-163.877-69.757c-43.273-44.522-67.428-104.717-67.428-167.299s24.155-122.781 67.428-167.302l305.1-313.905c30.845-31.735 72.874-49.737 116.899-49.737s86.054 18.002 116.899 49.737c30.816 31.704 47.971 74.514 47.971 118.968s-17.155 87.263-47.971 118.969l-305.43 313.904c-0.003 0.006 0.003-0.003 0 0-18.384 18.909-43.523 29.718-69.923 29.718-26.406 0-51.539-10.8-69.923-29.718-18.356-18.883-28.512-44.31-28.512-70.634 0-26.326 10.156-51.754 28.512-70.637l281.872-289.668c12.326-12.666 32.586-12.942 45.251-0.617s12.941 32.585 0.618 45.251l-281.846 289.638c-6.557 6.752-10.406 16.106-10.406 26.032 0 9.93 3.843 19.277 10.406 26.029 6.531 6.72 15.194 10.323 24.029 10.323s17.498-3.603 24.029-10.323l305.43-313.907c19.024-19.568 29.866-46.301 29.866-74.361 0-28.059-10.842-54.791-29.866-74.362-18.989-19.54-44.55-30.343-71.005-30.343z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["attach"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":254,"id":205,"name":"attach","prevSize":32,"code":59676},"setIdx":0,"setId":4,"iconIdx":0},{"icon":{"paths":["M254.841 275.612l-13.972 14.271c-37.092 37.883-36.449 98.664 1.435 135.758l145.619 142.573c37.885 37.091 98.666 36.448 135.76-1.437l13.971-14.269c0.723-0.739 1.43-1.488 2.128-2.243l0.099 0.099c5.805-5.904 13.888-9.568 22.822-9.568 17.674 0 32 14.326 32 32 0 9.6-4.227 18.211-10.922 24.077l-0.397 0.41-13.974 14.269c-61.818 63.142-163.12 64.214-226.259 2.394l-145.622-142.576c-63.141-61.818-64.212-163.119-2.392-226.26l13.972-14.27c61.82-63.141 163.12-64.212 226.263-2.392l74.691 73.131c0.976 0.847 1.901 1.752 2.768 2.71l0.374 0.366-0.026 0.026c4.934 5.63 7.923 13.005 7.923 21.078 0 17.674-14.326 32-32 32-7.83 0-15.005-2.813-20.566-7.482l-0.106 0.109-77.834-76.206c-37.885-37.092-98.666-36.45-135.757 1.435zM790.566 768.003l13.971-14.269c37.091-37.885 36.448-98.666-1.437-135.757l-145.619-142.576c-37.885-37.091-98.666-36.448-135.757 1.437l-13.971 14.269c-0.723 0.739-1.434 1.488-2.128 2.243l-0.102-0.099c-5.805 5.907-13.885 9.568-22.822 9.568-17.67 0-32-14.326-32-32 0-9.6 4.227-18.211 10.922-24.077l0.4-0.406 13.971-14.272c61.821-63.142 163.12-64.211 226.262-2.39l145.619 142.573c63.142 61.821 64.211 163.12 2.394 226.262l-13.971 14.269c-61.821 63.142-163.123 64.211-226.262 2.394l-74.694-73.133c-0.976-0.845-1.901-1.75-2.768-2.71l-0.374-0.365 0.026-0.026c-4.931-5.629-7.923-13.005-7.923-21.078 0-17.674 14.326-32 32-32 7.83 0 15.005 2.813 20.566 7.482l0.106-0.109 77.837 76.208c37.885 37.091 98.662 36.448 135.757-1.437z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"width":1056,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["link"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":253,"id":204,"name":"link","prevSize":32,"code":59752},"setIdx":0,"setId":4,"iconIdx":1},{"icon":{"paths":["M512 896c-212.077 0-384-171.923-384-384s171.923-384 384-384c212.077 0 384 171.923 384 384s-171.923 384-384 384zM565.334 288c0-29.455-23.878-53.333-53.334-53.333s-53.334 23.878-53.334 53.333v249.632l180.016 144.013c23.002 18.403 56.563 14.672 74.963-8.326 18.403-23.002 14.672-56.563-8.326-74.963l-139.984-111.987v-198.368z"],"attrs":[{"fill":"rgb(243, 190, 8)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-away"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":3}]}},"attrs":[{"fill":"rgb(243, 190, 8)"}],"properties":{"order":247,"id":203,"name":"status-away","prevSize":32,"code":59741},"setIdx":0,"setId":4,"iconIdx":2},{"icon":{"paths":["M512 896c-212.077 0-384-171.923-384-384s171.923-384 384-384c212.077 0 384 171.923 384 384s-171.923 384-384 384zM384 458.666c-29.456 0-53.334 23.875-53.334 53.331s23.878 53.334 53.334 53.334h256c29.456 0 53.334-23.878 53.334-53.334s-23.878-53.331-53.334-53.331h-256z"],"attrs":[{"fill":"rgb(245, 69, 92)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-busy"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":6}]}},"attrs":[{"fill":"rgb(245, 69, 92)"}],"properties":{"order":248,"id":202,"name":"status-busy","prevSize":32,"code":59742},"setIdx":0,"setId":4,"iconIdx":3},{"icon":{"paths":["M888.691 586.941l-125.568-24.838c3.187-16.102 4.877-32.842 4.877-50.102s-1.69-34-4.877-50.102l125.568-24.838c4.794 24.237 7.309 49.296 7.309 74.941s-2.515 50.704-7.309 74.941zM831.322 298.644l-106.365 71.209c-18.726-27.971-42.838-52.083-70.81-70.81l71.21-106.364c41.875 28.035 77.93 64.089 105.965 105.965zM586.941 135.309l-24.838 125.566c-16.102-3.185-32.842-4.876-50.102-4.876s-34 1.69-50.102 4.876l-24.838-125.566c24.237-4.795 49.296-7.309 74.941-7.309s50.704 2.514 74.941 7.309zM298.644 192.679l71.209 106.364c-27.971 18.727-52.083 42.839-70.81 70.81l-106.364-71.209c28.035-41.876 64.089-77.93 105.965-105.964zM135.309 437.059c-4.795 24.237-7.309 49.296-7.309 74.941s2.514 50.704 7.309 74.941l125.566-24.838c-3.185-16.102-4.876-32.842-4.876-50.102s1.69-34 4.876-50.102l-125.566-24.838zM192.679 725.357l106.364-71.21c18.727 27.971 42.839 52.083 70.81 70.81l-71.209 106.365c-41.876-28.035-77.93-64.090-105.964-105.965zM437.059 888.691l24.838-125.568c16.102 3.187 32.842 4.877 50.102 4.877s34-1.69 50.102-4.877l24.838 125.568c-24.237 4.794-49.296 7.309-74.941 7.309s-50.704-2.515-74.941-7.309zM725.357 831.322l-71.21-106.365c27.971-18.726 52.083-42.838 70.81-70.81l106.365 71.21c-28.035 41.875-64.090 77.93-105.965 105.965z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-loading"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":7}]}},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":249,"id":201,"name":"status-loading","prevSize":32,"code":59743},"setIdx":0,"setId":4,"iconIdx":4},{"icon":{"paths":["M512 789.334c-153.168 0-277.333-124.166-277.333-277.334s124.165-277.333 277.333-277.333c153.168 0 277.334 124.165 277.334 277.333s-124.166 277.334-277.334 277.334zM512 896c212.077 0 384-171.923 384-384s-171.923-384-384-384c-212.077 0-384 171.923-384 384s171.923 384 384 384z"],"attrs":[{"fill":"rgb(158, 162, 168)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-offline"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":7}]}},"attrs":[{"fill":"rgb(158, 162, 168)"}],"properties":{"order":250,"id":200,"name":"status-offline","prevSize":32,"code":59744},"setIdx":0,"setId":4,"iconIdx":5},{"icon":{"paths":["M896 512c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384s384 171.923 384 384z"],"attrs":[{"fill":"rgb(45, 224, 165)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["status-online"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":4}]}},"attrs":[{"fill":"rgb(45, 224, 165)"}],"properties":{"order":251,"id":199,"name":"status-online","prevSize":32,"code":59745},"setIdx":0,"setId":4,"iconIdx":6},{"icon":{"paths":["M631.997 256h24v-56c0-57.437 46.563-104 104-104 57.44 0 104 46.562 104 104v56h24c17.674 0 32 14.327 32 32v192c0 17.674-14.326 32-32 32h-256c-17.67 0-32-14.326-32-32v-192c0-17.673 14.33-32 32-32zM759.997 160c-22.090 0-40 17.908-40 40v55.238h80v-55.238c0-22.092-17.907-40-40-40z","M527.997 224c10.096 0 19.882 1.336 29.184 3.84-13.251 16.46-21.184 37.383-21.184 60.16v0.664c-2.602-0.436-5.274-0.664-8-0.664-26.509 0-48 21.49-48 48s21.491 48 48 48c2.726 0 5.398-0.227 8-0.662v64.381c-2.64 0.186-5.309 0.282-8 0.282-61.856 0-112-50.144-112-112s50.144-112 112-112z","M492.941 500.282c14.883 5.709 30.883 7.283 46.355 4.758 6.182 22.938 20.646 42.474 39.987 55.206-35.123 13.318-74.019 13.309-109.261-0.208l-15.040-5.77c-12.838-4.925-27.104-4.589-39.699 0.931-19.008 8.333-31.286 27.12-31.286 47.872v132.928c0 17.674 14.33 32 32 32h224c17.674 0 32-14.326 32-32v-125.062c0-12.842-4.122-24.995-11.325-34.938h70.291c3.29 11.162 5.034 22.902 5.034 34.938v125.062c0 53.021-42.979 96-96 96h-224c-53.018 0-95.999-42.979-95.999-96v-132.928c0-46.163 27.311-87.955 69.592-106.49 28.019-12.278 59.747-13.024 88.31-2.067l15.040 5.766z","M887.997 576h-15.286v25.766c0 17.674-14.326 32-32 32h-72.714v64h72.714c53.021 0 96-42.979 96-96v-39.027c-14.278 8.426-30.931 13.261-48.714 13.261z","M281.182 416c53.020 0 95.999-42.979 95.999-96 0-53.019-42.979-96-95.999-96s-96 42.981-96 96c0 53.021 42.98 96 96 96zM281.182 352c-17.673 0-32-14.326-32-32s14.327-32 32-32c17.673 0 32 14.327 32 32s-14.327 32-32 32z","M625.267 640h-0.8c0.262 0.598 0.528 1.194 0.8 1.786v-1.786z","M357.59 464.582c2.531-1.107 5.091-2.122 7.674-3.043-17.907-5.155-37.011-4.832-54.823 1.018l-14.183 4.659c-14.887 4.893-30.998 4.554-45.668-0.954l-4.554-1.709c-21.067-7.91-44.203-8.394-65.581-1.37-40.565 13.325-67.986 51.197-67.986 93.894v44.688c0 53.021 42.98 96 96 96h79.53v-64h-79.53c-17.673 0-32-14.326-32-32v-44.688c0-15.050 9.664-28.394 23.96-33.091 7.534-2.474 15.688-2.304 23.112 0.483l4.554 1.709c21.238 7.974 44.041 10.333 66.238 7.027 10.398-30.173 32.992-55.357 63.258-68.624z","M423.914 640h0.797c-0.259 0.598-0.525 1.194-0.797 1.786v-1.786z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["teams-private"],"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]}},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":252,"id":198,"name":"teams-private","prevSize":32,"code":59750},"setIdx":0,"setId":4,"iconIdx":7},{"icon":{"paths":["M368 182.4c0-17.673-14.326-32-32-32s-32 14.327-32 32v144h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v288h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v144c0 17.674 14.327 32 32 32s32-14.326 32-32v-144h288v144c0 17.674 14.326 32 32 32s32-14.326 32-32v-144h144c17.674 0 32-14.326 32-32s-14.326-32-32-32h-144v-80h-64v80h-288v-288h80v-64h-80v-144z","M640.515 327.283c-15.328-3.59-31.306-3.338-46.512 0.733-41.763 11.187-70.803 49.030-70.803 92.269v35.539c0 36.003 29.187 65.194 65.194 65.194h210.413c36.006 0 65.194-29.19 65.194-65.194v-28.336c0-47.667-33.040-88.957-79.27-99.792-16.413-3.846-33.613-3.603-49.946 0.771l-25.827 6.918c-10.381 2.781-21.286 2.95-31.747 0.499l-36.694-8.602z","M782.637 217.037c0 49.174-39.862 89.037-89.037 89.037s-89.037-39.863-89.037-89.037c0-49.174 39.862-89.037 89.037-89.037s89.037 39.863 89.037 89.037z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["channel-auto-join"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":2,"id":0,"name":"channel-auto-join","prevSize":32,"code":59746},"setIdx":0,"setId":4,"iconIdx":8},{"icon":{"paths":["M236.709 162.578c11.779-5.037 25.426-2.564 34.688 6.286l150.709 144c6.32 6.037 9.894 14.396 9.894 23.136s-3.574 17.101-9.894 23.136l-150.709 144c-9.262 8.851-22.909 11.325-34.688 6.288s-19.419-16.614-19.419-29.424v-112h-73.29c-17.673 0-32-14.326-32-32 0-17.672 14.327-31.999 32-31.999h73.29v-112c0-12.81 7.64-24.386 19.419-29.423zM320 368.179v-0.179h0.189l-0.189 0.179zM320.189 304.001h-0.189v-0.179l0.189 0.179z","M492.899 303.258c8.762-9.388 21.245-15.258 35.101-15.258 26.509 0 48 21.49 48 48s-21.491 48-48 48c-16.582 0-31.203-8.41-39.824-21.197l-43.098 48.483c20.49 22.554 50.051 36.714 82.922 36.714 61.856 0 112-50.144 112-112s-50.144-112-112-112c-25.549 0-49.098 8.554-67.942 22.955l32.842 56.303z","M145.615 483.229l32.174 64.349c-0.861 3.040-1.318 6.23-1.318 9.501v44.688c0 17.674 14.327 32 32 32h79.53v64h-79.53c-53.019 0-96-42.979-96-96v-44.688c0-28.848 12.515-55.488 33.144-73.85z","M625.267 640h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786z","M424.714 640h-0.797v1.786c0.272-0.592 0.538-1.187 0.797-1.786z","M477.901 494.515c-28.56-10.957-60.291-10.211-88.307 2.067-42.282 18.534-69.594 60.326-69.594 106.49v132.928c0 53.021 42.979 96 96 96h224c53.021 0 96-42.979 96-96v-125.062c0-51.162-31.536-97.034-79.306-115.354-30.352-11.642-64.067-10.851-93.84 2.198l-2.070 0.909c-21.523 9.434-45.901 10.006-67.843 1.59l-15.040-5.766zM415.286 555.2c12.595-5.52 26.858-5.856 39.699-0.931l15.040 5.77c37.664 14.445 79.504 13.462 116.451-2.73l2.070-0.909c14.349-6.288 30.602-6.669 45.229-1.059 23.024 8.829 38.224 30.938 38.224 55.597v125.062c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32v-132.928c0-20.752 12.278-39.539 31.286-47.872z","M864 320c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM800 320c0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.673 14.326-32 32-32s32 14.327 32 32z","M840.714 697.766h-72.714v-64h72.714c17.674 0 32-14.326 32-32v-44.688c0-15.050-9.664-28.394-23.958-33.091-7.536-2.474-15.69-2.304-23.114 0.483l-4.554 1.709c-19.77 7.421-40.89 9.978-61.619 7.632-12.438-31.683-37.722-57.549-70.774-70.227-1.754-0.672-3.52-1.302-5.296-1.894 18.058-5.312 37.36-5.040 55.344 0.867l14.182 4.659c14.886 4.893 30.998 4.554 45.667-0.954l4.554-1.709c21.069-7.91 44.205-8.394 65.581-1.37 40.566 13.325 67.987 51.197 67.987 93.894v44.688c0 53.021-42.982 96-96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["channel-move-to-team"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":3,"id":1,"name":"channel-move-to-team","prevSize":32,"code":59747},"setIdx":0,"setId":4,"iconIdx":9},{"icon":{"paths":["M512 128c-97.203 0-176 78.798-176 176v142.477h-16c-53.020 0-96 42.979-96 96v257.523c0 53.021 42.981 96 96 96h384c53.021 0 96-42.979 96-96v-257.523c0-53.021-42.979-96-96-96h-16v-142.477c0-97.202-78.797-176-176-176zM624 304v142.477h-224v-142.477c0-61.856 50.144-112 112-112s112 50.144 112 112z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["lock-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":4,"id":2,"name":"lock-filled","prevSize":32,"code":59748},"setIdx":0,"setId":4,"iconIdx":10},{"icon":{"paths":["M336 304c0-97.202 78.797-176 176-176s176 78.798 176 176v142.477h16c53.021 0 96 42.979 96 96v257.523c0 53.021-42.979 96-96 96h-384c-53.019 0-96-42.979-96-96v-257.523c0-53.021 42.981-96 96-96h16v-142.477zM400 446.477h224v-142.477c0-61.856-50.144-112-112-112s-112 50.144-112 112v142.477zM320 510.477c-17.673 0-32 14.326-32 32v257.523c0 17.674 14.327 32 32 32h384c17.674 0 32-14.326 32-32v-257.523c0-17.674-14.326-32-32-32h-384z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["locker"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":5,"id":3,"name":"locker","prevSize":32,"code":59749},"setIdx":0,"setId":4,"iconIdx":11},{"icon":{"paths":["M281.184 336c17.673 0 32-14.326 32-32s-14.327-32-32-32c-17.673 0-32 14.327-32 32s14.327 32 32 32zM281.184 400c-53.020 0-96-42.979-96-96 0-53.019 42.98-96 96-96 53.018 0 96 42.981 96 96 0 53.021-42.982 96-96 96zM576 320c0-26.51-21.491-48-48-48s-48 21.49-48 48c0 26.509 21.491 48 48 48s48-21.491 48-48zM640 320c0 61.856-50.144 112-112 112s-112-50.144-112-112c0-61.856 50.144-112 112-112s112 50.144 112 112zM477.901 478.515c-28.56-10.957-60.291-10.211-88.307 2.067-42.282 18.534-69.594 60.326-69.594 106.49v132.928c0 53.021 42.979 96 96 96h224c53.021 0 96-42.979 96-96v-125.062c0-51.162-31.536-97.034-79.306-115.354-30.352-11.642-64.067-10.851-93.84 2.198l-2.070 0.909c-21.523 9.434-45.901 10.006-67.843 1.59l-15.040-5.766zM415.286 539.2c12.595-5.52 26.858-5.856 39.699-0.931l15.040 5.77c37.664 14.445 79.504 13.462 116.451-2.73l2.070-0.909c14.349-6.288 30.602-6.669 45.229-1.059 23.024 8.829 38.224 30.938 38.224 55.597v125.062c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32v-132.928c0-20.752 12.278-39.539 31.286-47.872zM768 336c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.674 0 32 14.327 32 32s-14.326 32-32 32zM768 400c53.021 0 96-42.979 96-96 0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96zM840.714 681.766h-72.714v-64h72.714c17.674 0 32-14.326 32-32v-44.688c0-15.050-9.664-28.394-23.958-33.091-7.536-2.474-15.69-2.304-23.114 0.483l-4.554 1.709c-19.77 7.421-40.89 9.978-61.619 7.632-12.438-31.683-37.722-57.549-70.774-70.227-1.754-0.672-3.52-1.302-5.296-1.894 18.058-5.312 37.36-5.040 55.344 0.867l14.182 4.659c14.886 4.893 30.998 4.554 45.667-0.954l4.554-1.709c21.069-7.91 44.205-8.394 65.581-1.37 40.566 13.325 67.987 51.197 67.987 93.894v44.688c0 53.021-42.982 96-96 96zM625.267 624h-0.797c0.259 0.598 0.525 1.194 0.797 1.786v-1.786zM357.594 448.582c2.528-1.107 5.088-2.122 7.674-3.043-17.907-5.155-37.014-4.832-54.824 1.018l-14.183 4.659c-14.887 4.893-30.998 4.554-45.668-0.954l-4.554-1.709c-21.067-7.91-44.203-8.394-65.581-1.37-40.565 13.325-67.986 51.197-67.986 93.894v44.688c0 53.021 42.981 96 96 96h79.53v-64h-79.53c-17.673 0-32-14.326-32-32v-44.688c0-15.050 9.664-28.394 23.96-33.091 7.534-2.474 15.688-2.304 23.112 0.483l4.554 1.709c21.238 7.974 44.041 10.333 66.238 7.027 10.398-30.173 32.994-55.357 63.259-68.624zM423.917 624h0.797c-0.259 0.598-0.525 1.194-0.797 1.786v-1.786z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["teams"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":7,"id":5,"name":"teams","prevSize":32,"code":59751},"setIdx":0,"setId":4,"iconIdx":12},{"icon":{"paths":["M502.627 142.69c12.915-3.408 26.509-3.289 39.363 0.345l245.194 69.317c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.145-184.394 520.422-272.611 580.214-33.053 22.403-75.28 22.474-108.416 0.259-88.758-59.504-300.1-238.589-276.51-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.724-69.849zM524.579 204.621c-1.837-0.519-3.779-0.536-5.622-0.049l-264.725 69.849c-4.4 1.161-6.999 4.775-7.233 8.165-21.305 308.166 168.214 468.531 248.301 522.218 11.507 7.715 25.434 7.677 36.87-0.077 79.379-53.798 266.835-214.288 244.685-522.649-0.243-3.358-2.787-6.925-7.082-8.139l-245.194-69.317z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["set-as-moderator"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":245,"id":6,"name":"shield","prevSize":32,"code":59661},"setIdx":0,"setId":4,"iconIdx":13},{"icon":{"paths":["M864 512c0-86.89-31.482-166.429-83.664-227.826l-496.162 496.162c61.397 52.182 140.937 83.664 227.826 83.664 194.403 0 352-157.597 352-352zM239.349 734.65l495.3-495.3c-60.662-49.597-138.182-79.349-222.65-79.349-194.404 0-352 157.596-352 352 0 84.467 29.753 161.987 79.349 222.65zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["ignore"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":246,"id":7,"name":"ignore","prevSize":32,"code":59740},"setIdx":0,"setId":4,"iconIdx":14},{"icon":{"paths":["M819.2 204.8v614.4h-614.4v-614.4h614.4zM204.8 128c-42.415 0-76.8 34.385-76.8 76.8v614.4c0 42.416 34.385 76.8 76.8 76.8h614.4c42.416 0 76.8-34.384 76.8-76.8v-614.4c0-42.415-34.384-76.8-76.8-76.8h-614.4z"],"attrs":[{"fill":"rgb(203, 206, 209)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":8}]},"tags":["checkbox-unchecked"],"grid":0},"attrs":[{"fill":"rgb(203, 206, 209)"}],"properties":{"order":242,"id":8,"name":"checkbox-unchecked","prevSize":32,"code":59648},"setIdx":0,"setId":4,"iconIdx":15},{"icon":{"paths":["M204.8 128h614.4c42.416 0 76.8 34.385 76.8 76.8v614.4c0 42.416-34.384 76.8-76.8 76.8h-614.4c-42.415 0-76.8-34.384-76.8-76.8v-614.4c0-42.415 34.385-76.8 76.8-76.8zM769.062 336.88c9.322-9.424 9.238-24.619-0.182-33.941-9.424-9.322-24.621-9.241-33.942 0.182l-339.085 342.745-106.782-108.051c-9.317-9.43-24.513-9.52-33.94-0.202s-9.518 24.512-0.201 33.939l123.842 125.318c4.509 4.56 10.653 7.126 17.066 7.13s12.557-2.563 17.069-7.12l356.157-360z"],"attrs":[{"fill":"rgb(29, 116, 245)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":5}]},"tags":["checkbox-checked"],"grid":0},"attrs":[{"fill":"rgb(29, 116, 245)"}],"properties":{"order":243,"id":9,"name":"checkbox-checked","prevSize":32,"code":59649},"setIdx":0,"setId":4,"iconIdx":16},{"icon":{"paths":["M862.454 324.045c-35.2-60.31-82.944-108.057-143.248-143.253-60.314-35.198-126.16-52.792-197.581-52.792-71.414 0-137.28 17.6-197.581 52.792-60.31 35.194-108.053 82.943-143.253 143.253-35.194 60.307-52.792 126.166-52.792 197.571 0 85.77 25.024 162.899 75.086 231.405 50.056 68.509 114.721 115.917 193.989 142.224 9.229 1.712 16.058 0.509 20.499-3.584 4.442-4.096 6.662-9.226 6.662-15.37 0-1.024-0.090-10.246-0.259-27.674-0.176-17.43-0.259-32.637-0.259-45.61l-11.789 2.038c-7.517 1.379-16.998 1.962-28.445 1.795-11.443-0.16-23.322-1.357-35.619-3.587-12.304-2.211-23.747-7.334-34.342-15.366-10.588-8.029-18.104-18.538-22.547-31.514l-5.125-11.795c-3.416-7.853-8.795-16.573-16.142-26.134-7.348-9.571-14.778-16.058-22.294-19.475l-3.588-2.57c-2.391-1.706-4.61-3.766-6.662-6.154-2.050-2.39-3.585-4.781-4.61-7.174-1.027-2.397-0.176-4.365 2.562-5.907 2.738-1.539 7.685-2.288 14.864-2.288l10.247 1.53c6.834 1.37 15.287 5.462 25.371 12.298 10.078 6.835 18.363 15.715 24.856 26.646 7.863 14.013 17.335 24.688 28.445 32.038 11.101 7.347 22.294 11.014 33.568 11.014s21.011-0.854 29.216-2.557c8.192-1.709 15.882-4.275 23.062-7.69 3.075-22.902 11.446-40.499 25.11-52.797-19.475-2.045-36.982-5.13-52.534-9.226-15.542-4.106-31.603-10.765-48.173-20-16.579-9.222-30.331-20.672-41.262-34.333-10.932-13.67-19.905-31.613-26.904-53.818-7.003-22.214-10.505-47.837-10.505-76.88 0-41.35 13.5-76.541 40.493-105.584-12.645-31.088-11.451-65.939 3.585-104.55 9.908-3.079 24.606-0.768 44.078 6.916 19.478 7.689 33.738 14.275 42.797 19.736 9.059 5.46 16.317 10.087 21.786 13.837 31.782-8.88 64.582-13.322 98.406-13.322s66.63 4.442 98.416 13.322l19.475-12.295c13.318-8.204 29.046-15.722 47.142-22.556 18.112-6.83 31.958-8.712 41.53-5.633 15.37 38.612 16.739 73.46 4.093 104.548 26.992 29.046 40.496 64.243 40.496 105.587 0 29.043-3.514 54.746-10.506 77.13-7.002 22.387-16.051 40.314-27.152 53.818-11.114 13.501-24.957 24.864-41.526 34.083-16.573 9.226-32.637 15.888-48.179 19.99-15.552 4.102-33.059 7.187-52.534 9.238 17.763 15.37 26.646 39.632 26.646 72.774v108.134c0 6.141 2.134 11.27 6.41 15.37 4.272 4.090 11.018 5.296 20.243 3.581 79.28-26.304 143.946-73.712 194-142.224 50.048-68.502 75.082-145.632 75.082-231.405-0.019-71.395-17.626-137.248-52.803-197.555z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["github-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":152,"id":10,"name":"github-monochromatic","prevSize":32,"code":59650},"setIdx":0,"setId":4,"iconIdx":17},{"icon":{"paths":["M133.618 423.61h215.092l-92.537-284.607c-4.74-14.67-25.504-14.67-30.244 0l-92.311 284.607zM86.899 567.171l46.72-143.546h737.133l46.72 143.546c4.288 13.088-0.451 27.533-11.51 35.434l-403.776 293.408-403.776-293.408c-11.060-7.901-15.799-22.346-11.511-35.434zM655.661 423.61h215.091l-92.31-284.607c-4.739-14.67-25.504-14.67-30.243 0l-92.538 284.607z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["gitlab-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":153,"id":11,"name":"gitlab-monochromatic","prevSize":32,"code":59651},"setIdx":0,"setId":4,"iconIdx":18},{"icon":{"paths":["M658.794 338.154c-39.798-38.052-90.416-57.426-146.794-57.426-100.016 0-184.669 67.548-214.865 158.313l-0.002-0.003c-7.679 23.040-12.042 47.648-12.042 72.957s4.364 49.92 12.044 72.96l0 0.003c30.196 90.765 114.849 158.314 214.865 158.314 51.664 0 95.651-13.613 130.035-36.653v-0.016c40.669-27.229 67.725-67.898 76.627-115.898h-206.662v-148.538h361.658c4.538 25.136 6.982 51.315 6.982 78.547 0 116.944-41.891 215.389-114.502 282.24v0.013c-63.533 58.646-150.458 93.030-254.138 93.030-150.109 0-279.971-86.048-343.156-211.549l-0-0.003c-26.007-51.84-40.844-110.49-40.844-172.451 0-61.965 14.836-120.611 40.844-172.451h0.004c63.187-125.495 193.047-211.542 343.153-211.542 103.504 0 190.429 38.051 256.931 100.014l-110.138 110.139z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["google-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":154,"id":12,"name":"google-monochromatic","prevSize":32,"code":59652},"setIdx":0,"setId":4,"iconIdx":19},{"icon":{"paths":["M840.541 128c31.318 0 56.813 24.79 56.813 55.383v657.212c0 30.592-25.494 55.427-56.813 55.427h-654.546c-31.254 0-56.642-24.835-56.642-55.427v-657.212c0-30.593 25.387-55.383 56.642-55.383h654.546zM300.196 233.75c-36.588 0-66.093 29.59-66.093 66.050 0 36.482 29.505 66.072 66.093 66.072 36.437 0 66.005-29.59 66.005-66.072 0-36.46-29.568-66.050-66.005-66.050zM243.148 782.461h114.029v-366.515h-114.029v366.515zM537.814 415.923h-109.187v366.515h113.773v-181.274c0-47.83 9.046-94.147 68.333-94.147 58.454 0 59.181 54.678 59.181 97.174v178.246h113.901v-201.008c0-98.714-21.312-174.598-136.666-174.598-55.402 0-92.566 30.381-107.757 59.203h-1.578v-50.112z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["linkedin-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":155,"id":13,"name":"linkedin-monochromatic","prevSize":32,"code":59653},"setIdx":0,"setId":4,"iconIdx":20},{"icon":{"paths":["M86.686 85.336l730.792 774.088c0 0 24.899 17.558 43.936-2.928 19.040-20.486 4.394-40.973 4.394-40.973l-779.122-730.187zM318.080 158.503l556.516 599.955c0 0 24.896 17.558 43.936-2.928 19.037-20.486 4.394-40.973 4.394-40.973l-604.845-556.054zM712.035 915.030l-556.517-599.955 604.843 556.054c0 0 14.646 20.486-4.39 40.973-19.040 20.486-43.936 2.928-43.936 2.928zM513.693 221.419l388.803 419.15c0 0 17.395 12.269 30.694-2.042 13.302-14.314 3.069-28.627 3.069-28.627l-422.566-388.482zM597.878 915.677l-388.805-419.152 422.568 388.48c0 0 10.234 14.314-3.069 28.627-13.302 14.31-30.694 2.045-30.694 2.045zM713.498 312.143l176.221 190.551c0 0 8.605 5.747 15.184-0.96 6.579-6.704 1.517-13.411 1.517-13.411l-192.922-176.18zM482.582 880.23l-176.219-190.55 192.923 176.179c0 0 5.059 6.707-1.52 13.414-6.579 6.704-15.184 0.957-15.184 0.957z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["meteor-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":156,"id":14,"name":"meteor-monochromatic","prevSize":32,"code":59654},"setIdx":0,"setId":4,"iconIdx":21},{"icon":{"paths":["M378.861 853.331c317.456 0 491.091-262.662 491.091-490.442 0-7.462 0-14.89-0.506-22.282 33.779-24.401 62.938-54.614 86.112-89.224-31.501 13.94-64.918 23.082-99.136 27.12 36.032-21.542 62.998-55.424 75.882-95.34-33.878 20.078-70.944 34.228-109.597 41.839-53.501-56.814-138.515-70.72-207.37-33.919-68.851 36.801-104.426 115.155-86.768 191.127-138.774-6.947-268.074-72.409-355.715-180.093-45.811 78.76-22.412 179.517 53.436 230.1-27.467-0.813-54.335-8.214-78.337-21.574 0 0.704 0 1.443 0 2.182 0.022 82.051 57.937 152.723 138.47 168.97-25.41 6.922-52.071 7.933-77.933 2.957 22.611 70.218 87.409 118.32 161.25 119.706-61.116 47.968-136.616 74.010-214.35 73.933-13.732-0.026-27.452-0.858-41.087-2.486 78.931 50.586 170.772 77.418 264.557 77.293z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["twitter-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":157,"id":15,"name":"twitter-monochromatic","prevSize":32,"code":59655},"setIdx":0,"setId":4,"iconIdx":22},{"icon":{"paths":["M512 928c-14.218 0-28.275-0.714-42.144-2.112-16.694-1.68-30.557-12.528-36.688-27.395l-40.538-98.304-98.162 40.838c-14.837 6.173-32.3 4.048-45.292-6.554-21.838-17.818-41.831-37.811-59.65-59.648-10.601-12.992-12.726-30.454-6.553-45.293l40.839-98.16-98.307-40.541c-14.864-6.131-25.714-19.994-27.395-36.688-1.396-13.869-2.111-27.926-2.111-42.144 0-14.214 0.714-28.275 2.11-42.141 1.681-16.694 12.531-30.557 27.395-36.688l98.308-40.541-40.84-98.163c-6.173-14.837-4.047-32.3 6.553-45.292 17.818-21.838 37.81-41.83 59.648-59.648 12.992-10.6 30.455-12.726 45.292-6.553l98.165 40.84 40.541-98.309c6.128-14.865 19.994-25.714 36.688-27.395 13.866-1.396 27.926-2.11 42.141-2.11s28.275 0.714 42.141 2.11c16.694 1.681 30.56 12.531 36.688 27.395l40.541 98.309 98.163-40.84c14.838-6.173 32.301-4.047 45.293 6.553 21.837 17.818 41.83 37.81 59.648 59.648 10.602 12.992 12.726 30.455 6.554 45.292l-40.842 98.163 98.31 40.541c14.864 6.131 25.712 19.994 27.392 36.688 1.398 13.866 2.112 27.926 2.112 42.141 0 14.218-0.714 28.275-2.112 42.144-1.68 16.694-12.528 30.557-27.395 36.688l-98.307 40.541 40.842 98.16c6.173 14.838 4.045 32.301-6.554 45.293-17.821 21.837-37.811 41.83-59.651 59.648-12.992 10.602-30.454 12.726-45.29 6.554l-98.163-40.838-40.538 98.304c-6.131 14.867-19.994 25.715-36.688 27.395-13.869 1.398-27.93 2.112-42.144 2.112zM444.451 757.984l43.386 105.2c7.981 0.541 16.038 0.816 24.163 0.816s16.182-0.275 24.163-0.816l43.382-105.2c9.456-22.925 35.731-33.808 58.627-24.285l105.056 43.709c12.157-10.602 23.578-22.022 34.179-34.179l-43.709-105.056c-9.526-22.893 1.36-49.171 24.282-58.624l105.203-43.386c0.541-7.978 0.816-16.038 0.816-24.163s-0.275-16.182-0.816-24.16l-105.203-43.386c-22.922-9.453-33.808-35.731-24.282-58.624l43.709-105.060c-10.602-12.156-22.022-23.577-34.176-34.177l-105.059 43.708c-22.896 9.525-49.171-1.359-58.627-24.283l-43.382-105.204c-7.981-0.54-16.038-0.815-24.163-0.815s-16.182 0.275-24.163 0.815l-43.386 105.204c-9.453 22.924-35.728 33.808-58.624 24.283l-105.058-43.708c-12.156 10.6-23.577 22.021-34.177 34.177l43.708 105.059c9.525 22.893-1.359 49.171-24.284 58.624l-105.203 43.386c-0.54 7.978-0.815 16.035-0.815 24.16 0 8.128 0.275 16.186 0.815 24.163l105.203 43.386c22.924 9.453 33.809 35.731 24.284 58.624l-43.708 105.056c10.601 12.157 22.022 23.578 34.178 34.179l105.056-43.709c22.896-9.523 49.171 1.36 58.624 24.285zM416 512c0-53.021 42.979-96 96-96s96 42.979 96 96c0 53.021-42.979 96-96 96s-96-42.979-96-96zM512 352c-88.365 0-160 71.635-160 160s71.635 160 160 160c88.365 0 160-71.635 160-160s-71.635-160-160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["administration"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":159,"id":16,"name":"administration","prevSize":32,"code":59657},"setIdx":0,"setId":4,"iconIdx":23},{"icon":{"paths":["M878.739 567.622c-41.853-41.136-161.235-29.824-220.925-22.282-59.005-35.997-98.458-85.706-126.243-158.73 13.379-55.194 34.646-139.185 18.525-191.98-14.41-89.82-129.674-80.907-146.141-20.227-15.094 55.195-1.373 131.988 24.013 230.034-34.304 81.936-85.421 191.984-121.441 255.062-68.611 35.312-161.235 89.821-174.957 158.384-11.321 54.166 89.194 189.238 261.063-106.96 76.845-25.37 160.547-56.566 234.65-68.909 64.835 34.97 140.65 58.282 191.421 58.282 87.478 0 96.054-96.678 60.035-132.675zM199.152 834.342c17.496-46.97 84.048-101.133 104.288-119.99-65.18 103.875-104.288 122.39-104.288 119.99zM479.082 180.918c25.386 0 22.986 110.047 6.176 139.873-15.094-47.653-14.752-139.873-6.176-139.873zM395.379 649.216c33.274-57.936 61.747-126.845 84.733-187.526 28.474 51.766 64.838 93.251 103.258 121.706-71.354 14.739-133.446 44.909-187.99 65.821zM846.835 632.074c0 0-17.152 20.57-127.958-26.739 120.413-8.912 140.307 18.512 127.958 26.739z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["adobe-reader-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":161,"id":17,"name":"adobe-reader-monochromatic","prevSize":32,"code":59658},"setIdx":0,"setId":4,"iconIdx":24},{"icon":{"paths":["M448 188.865c0 33.615 27.251 60.865 60.864 60.865 33.616 0 60.867-27.25 60.867-60.865s-27.251-60.865-60.867-60.865c-33.613 0-60.864 27.25-60.864 60.865zM384 188.865c0 59.026 40.957 108.485 96 121.512v77.745c-44.314 11.69-78.986 47.13-89.578 91.878h-80.045c-13.027-55.043-62.486-96-121.512-96-68.961 0-124.865 55.904-124.865 124.864 0 68.963 55.904 124.867 124.865 124.867 56.762 0 104.678-37.875 119.854-89.731h83.361c12.227 41.773 45.696 74.47 87.92 85.61v77.744c-55.043 13.027-96 62.486-96 121.51 0 68.963 55.904 124.867 124.864 124.867 68.963 0 124.867-55.904 124.867-124.867 0-56.762-37.875-104.675-89.731-119.853v-79.437c42.163-11.171 75.578-43.846 87.789-85.574h77.222c15.178 51.856 63.091 89.731 119.853 89.731 68.963 0 124.867-55.904 124.867-124.867 0-68.96-55.904-124.864-124.867-124.864-59.024 0-108.483 40.957-121.51 96h-73.907c-10.579-44.707-45.194-80.122-89.446-91.843v-79.438c51.856-15.176 89.731-63.092 89.731-119.854 0-68.961-55.904-124.865-124.867-124.865-68.96 0-124.864 55.904-124.864 124.865zM828.864 569.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867zM188.865 569.731c-33.615 0-60.865-27.251-60.865-60.867 0-33.613 27.25-60.864 60.865-60.864s60.865 27.251 60.865 60.864c0 33.616-27.25 60.867-60.865 60.867zM451.069 508.864c0 33.616 27.251 60.867 60.867 60.867 33.613 0 60.864-27.251 60.864-60.867 0-33.613-27.251-60.864-60.864-60.864-33.616 0-60.867 27.251-60.867 60.864zM508.864 889.731c-33.613 0-60.864-27.251-60.864-60.867 0-33.613 27.251-60.864 60.864-60.864 33.616 0 60.867 27.251 60.867 60.864 0 33.616-27.251 60.867-60.867 60.867z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["all-contacts-in-channels"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":162,"id":18,"name":"all-contacts-in-channels","prevSize":32,"code":59659},"setIdx":0,"setId":4,"iconIdx":25},{"icon":{"paths":["M861.437 160c17.67 0 32 14.327 32 32s-14.33 32-32 32h-384c-17.674 0-32-14.327-32-32s14.326-32 32-32h384zM334.717 442.397c-24.962 0-45.197-20.237-45.197-45.2 0-24.96 20.236-45.197 45.197-45.197 24.963 0 45.2 20.237 45.2 45.197 0 24.963-20.237 45.2-45.2 45.2zM334.717 506.397c-60.308 0-109.197-48.89-109.197-109.2 0-60.307 48.89-109.197 109.197-109.197 60.31 0 109.2 48.89 109.2 109.197 0 60.31-48.89 109.2-109.2 109.2zM456.278 535.504c-18.288-4.899-37.504-5.2-55.939-0.88l-45.005 10.547c-13.194 3.091-26.947 2.877-40.036-0.63l-31.676-8.483c-19.669-5.27-40.384-5.562-60.154-0.928-55.68 13.050-95.468 62.781-95.468 120.179v34.752c0 42.906 34.783 77.686 77.689 77.686h258.057c42.906 0 77.69-34.781 77.69-77.686v-43.587c0-52-34.928-97.514-85.158-110.97zM414.944 596.934c8.166-1.914 16.675-1.779 24.774 0.39 22.246 5.958 37.718 26.118 37.718 49.149v43.587c0 7.558-6.131 13.686-13.69 13.686h-258.057c-7.56 0-13.689-6.128-13.689-13.686v-34.752c0-27.469 19.123-51.552 46.072-57.869 9.556-2.24 19.564-2.086 28.99 0.438l31.676 8.483c23.277 6.237 47.738 6.621 71.2 1.12l45.005-10.547zM893.437 512c0-17.674-14.33-32-32-32h-224c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.67 0 32-14.326 32-32zM861.437 640c17.67 0 32 14.326 32 32s-14.33 32-32 32h-192c-17.674 0-32-14.326-32-32s14.326-32 32-32h192zM893.437 352c0-17.674-14.33-32-32-32h-288c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.67 0 32-14.326 32-32zM861.437 800c17.67 0 32 14.326 32 32s-14.33 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32h256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["all-contacts-in-queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":163,"id":19,"name":"all-contacts-in-queue","prevSize":32,"code":59660},"setIdx":0,"setId":4,"iconIdx":26},{"icon":{"paths":["M523.571 295.385c33.133 0 74.669-22.133 99.402-51.645 22.4-26.745 38.733-64.095 38.733-101.445 0-5.072-0.467-10.144-1.402-14.294-36.864 1.383-81.2 24.439-107.798 55.334-21.002 23.517-40.134 60.406-40.134 98.218 0 5.533 0.934 11.067 1.402 12.911 2.333 0.461 6.067 0.922 9.798 0.922zM406.906 853.334c45.267 0 65.334-29.974 121.798-29.974 57.402 0 70 29.050 120.4 29.050 49.469 0 82.602-45.187 113.869-89.456 34.998-50.72 49.466-100.522 50.4-102.829-3.267-0.922-98-39.194-98-146.634 0-93.146 74.666-135.107 78.867-138.333-49.469-70.090-124.602-71.935-145.136-71.935-55.533 0-100.8 33.199-129.264 33.199-30.8 0-71.402-31.354-119.469-31.354-91.466 0-184.333 74.701-184.333 215.802 0 87.61 34.533 180.294 77 240.24 36.402 50.723 68.133 92.224 113.867 92.224z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["apple-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":236,"id":20,"name":"apple-monochromatic","prevSize":32,"code":59662},"setIdx":0,"setId":4,"iconIdx":27},{"icon":{"paths":["M498.694 141.561l-298.666 136.533c-11.39 5.207-18.696 16.58-18.696 29.103v386.844c0 11.818 6.513 22.675 16.941 28.237l298.667 159.286c9.411 5.021 20.707 5.021 30.118 0l298.666-159.286c10.429-5.562 16.941-16.419 16.941-28.237v-386.844c0-12.524-7.306-23.896-18.694-29.103l-298.666-136.533c-8.451-3.862-18.16-3.862-26.611 0zM245.333 357.011l234.667 107.277v335.709l-234.667-125.155v-317.83zM544 799.997l234.666-125.155v-317.83l-234.666 107.277v335.709zM512 408.544l-221.7-101.347 221.7-101.348 221.699 101.348-221.699 101.347z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["apps"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":166,"id":21,"name":"apps","prevSize":32,"code":59663},"setIdx":0,"setId":4,"iconIdx":28},{"icon":{"paths":["M374.627 297.372c-12.496-12.497-32.758-12.497-45.254 0l-192 192c-12.497 12.496-12.497 32.758 0 45.254l192 192c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-137.372-137.373h578.745v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-160c0-17.674-14.326-32-32-32h-610.745l137.372-137.373c12.496-12.496 12.496-32.758 0-45.255z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-back"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":167,"id":22,"name":"arrow-back","prevSize":32,"code":59664},"setIdx":0,"setId":4,"iconIdx":29},{"icon":{"paths":["M551.392 242.502c0.189-17.672 14.669-31.845 32.339-31.656 17.674 0.189 31.846 14.668 31.658 32.34l-1.318 123.489 193.44-193.439c12.496-12.497 32.755-12.497 45.254 0 12.496 12.497 12.496 32.758 0 45.255l-193.44 193.439 123.488-1.318c17.674-0.189 32.154 13.984 32.339 31.654 0.189 17.674-13.984 32.154-31.654 32.342l-201.92 2.154c-8.605 0.093-16.886-3.283-22.97-9.37-6.086-6.083-9.462-14.365-9.373-22.97l2.157-201.92zM475.981 782.147c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.342l1.318-123.488-193.438 193.44c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l193.438-193.44-123.488 1.318c-17.672 0.189-32.151-13.984-32.34-31.654-0.189-17.674 13.984-32.154 31.656-32.342l201.922-2.154c8.605-0.093 16.883 3.283 22.966 9.37 6.086 6.083 9.462 14.365 9.373 22.97l-2.157 201.92z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-collapse"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":168,"id":23,"name":"arrow-collapse","prevSize":32,"code":59665},"setIdx":0,"setId":4,"iconIdx":30},{"icon":{"paths":["M576 672c-17.674 0-32 14.326-32 32s14.326 32 32 32h224c17.674 0 32-14.326 32-32v-208c0-17.674-14.326-32-32-32s-32 14.326-32 32v130.746l-233.373-233.373c-12.496-12.496-32.758-12.496-45.254 0l-73.373 73.373-169.372-169.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.759 0 45.255l192 192c12.496 12.496 32.758 12.496 45.254 0l73.373-73.373 210.746 210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-decrease"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":169,"id":24,"name":"arrow-decrease","prevSize":32,"code":59666},"setIdx":0,"setId":4,"iconIdx":31},{"icon":{"paths":["M329.373 550.627c-12.497-12.496-12.497-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373v-418.746c0-17.673 14.326-32 32-32s32 14.327 32 32v418.746l105.373-105.373c12.496-12.496 32.758-12.496 45.254 0s12.496 32.758 0 45.254l-160 160c-12.496 12.496-32.758 12.496-45.254 0l-160-160zM112 864c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-512c0-17.674-14.326-32-32-32h-96c-17.674 0-32 14.326-32 32s14.326 32 32 32h64v448h-704v-448h64c17.673 0 32-14.326 32-32s-14.327-32-32-32h-96c-17.673 0-32 14.326-32 32v512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down-box"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":170,"id":25,"name":"arrow-down-box","prevSize":32,"code":59667},"setIdx":0,"setId":4,"iconIdx":32},{"icon":{"paths":["M865.139 512c0-194.404-157.802-352-352.464-352-194.66 0-352.464 157.596-352.464 352s157.804 352 352.464 352c194.662 0 352.464-157.597 352.464-352zM929.226 512c0 229.75-186.496 416-416.55 416-230.053 0-416.548-186.25-416.548-416s186.495-416 416.548-416c230.054 0 416.55 186.25 416.55 416zM695.178 571.37l-160.182 155.715c-12.438 12.093-32.259 12.093-44.701 0l-160.179-155.715c-12.682-12.33-12.955-32.589-0.611-45.251 12.342-12.666 32.63-12.938 45.309-0.611l105.789 102.842 0.003-276.349c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v276.349l105.789-102.842c12.682-12.326 32.966-12.054 45.309 0.611 12.346 12.662 12.070 32.922-0.608 45.251z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down-circle"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":171,"id":26,"name":"arrow-down-circle","prevSize":32,"code":59668},"setIdx":0,"setId":4,"iconIdx":33},{"icon":{"paths":["M726.88 526.064c12.355 12.637 12.128 32.896-0.509 45.254l-191.968 187.715c-12.438 12.163-32.31 12.163-44.746 0l-191.97-187.715c-12.636-12.358-12.863-32.618-0.507-45.254 12.356-12.634 32.615-12.861 45.252-0.506l137.597 134.55v-372.109c0-17.673 14.33-32 32-32 17.674 0 32 14.327 32 32v372.109l137.6-134.55c12.634-12.355 32.896-12.128 45.251 0.506z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-down"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":172,"id":27,"name":"arrow-down","prevSize":32,"code":59669},"setIdx":0,"setId":4,"iconIdx":34},{"icon":{"paths":["M859.978 398.15c-0.189 17.67-14.666 31.843-32.339 31.654-17.67-0.189-31.846-14.666-31.658-32.339l1.318-123.488-193.437 193.437c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.755 0-45.254l193.437-193.437-123.488 1.318c-17.67 0.189-32.15-13.984-32.339-31.656s13.984-32.151 31.658-32.34l201.92-2.156c8.605-0.092 16.883 3.286 22.97 9.371 6.083 6.085 9.462 14.364 9.37 22.969l-2.157 201.922zM167.394 626.522c0.189-17.674 14.668-31.846 32.34-31.658s31.845 14.669 31.657 32.339l-1.319 123.488 193.438-193.437c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-193.438 193.437 123.489-1.318c17.67-0.189 32.15 13.984 32.339 31.658 0.189 17.67-13.984 32.15-31.658 32.339l-201.92 2.157c-8.605 0.093-16.884-3.286-22.969-9.37-6.085-6.086-9.463-14.365-9.371-22.97l2.156-201.92z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-expand"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":173,"id":28,"name":"arrow-expand","prevSize":32,"code":59670},"setIdx":0,"setId":4,"iconIdx":35},{"icon":{"paths":["M576 352c-17.674 0-32-14.326-32-32s14.326-32 32-32h224c17.674 0 32 14.327 32 32v208c0 17.674-14.326 32-32 32s-32-14.326-32-32v-130.746l-233.373 233.373c-12.496 12.496-32.758 12.496-45.254 0l-73.373-73.373-169.372 169.373c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l192-192c12.496-12.496 32.758-12.496 45.254 0l73.373 73.373 210.746-210.746h-146.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-increase"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":174,"id":29,"name":"arrow-increase","prevSize":32,"code":59671},"setIdx":0,"setId":4,"iconIdx":36},{"icon":{"paths":["M297.766 105.372c12.513-12.497 32.801-12.497 45.316 0 12.512 12.497 12.512 32.758 0 45.255l-105.513 105.372h611.551c17.699 0 32.045 14.327 32.045 32v112c0 17.674-14.346 32-32.045 32-17.696 0-32.042-14.326-32.042-32v-80h-579.51l105.513 105.373c12.512 12.496 12.512 32.758 0 45.254-12.515 12.496-32.803 12.496-45.316 0l-160.212-160c-12.513-12.497-12.513-32.758 0-45.255l160.212-160zM711.568 918.627c-12.515 12.496-32.803 12.496-45.315 0-12.515-12.496-12.515-32.758 0-45.254l105.51-105.373h-611.552c-17.696 0-32.042-14.326-32.042-32v-112c0-17.674 14.346-32 32.042-32s32.042 14.326 32.042 32v80h579.509l-105.51-105.373c-12.515-12.496-12.515-32.758 0-45.254 12.512-12.496 32.8-12.496 45.315 0l160.211 160c12.512 12.496 12.512 32.758 0 45.254l-160.211 160z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-looping"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":175,"id":30,"name":"arrow-looping","prevSize":32,"code":59672},"setIdx":0,"setId":4,"iconIdx":37},{"icon":{"paths":["M374.627 769.296c-12.496 12.496-32.758 12.496-45.254 0l-192-192c-12.497-12.496-12.497-32.758 0-45.254l192-192c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-137.372 137.373h578.745v-192h-192c-17.674 0-32-14.328-32-32.001s14.326-32 32-32h224c17.674 0 32 14.327 32 32v256.001c0 17.674-14.326 32-32 32h-610.745l137.372 137.373c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-return"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":176,"id":31,"name":"arrow-return","prevSize":32,"code":59673},"setIdx":0,"setId":4,"iconIdx":38},{"icon":{"paths":["M694.627 473.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373v418.746c0 17.674-14.326 32-32 32s-32-14.326-32-32v-418.746l-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.497-32.758 0-45.254l160-160c12.496-12.497 32.758-12.497 45.254 0l160 160zM912 160c0-17.673-14.326-32-32-32h-768c-17.673 0-32 14.327-32 32v512c0 17.674 14.327 32 32 32h96c17.673 0 32-14.326 32-32s-14.327-32-32-32h-64v-448h704v448h-64c-17.674 0-32 14.326-32 32s14.326 32 32 32h96c17.674 0 32-14.326 32-32v-512z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-up-box"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":177,"id":32,"name":"arrow-up-box","prevSize":32,"code":59674},"setIdx":0,"setId":4,"iconIdx":39},{"icon":{"paths":["M297.181 498.090c-12.356-12.634-12.129-32.896 0.507-45.251l191.97-187.717c12.435-12.161 32.307-12.161 44.746 0l191.968 187.717c12.637 12.355 12.864 32.618 0.509 45.251-12.355 12.637-32.618 12.864-45.251 0.509l-137.6-134.55v372.109c0 17.674-14.326 32-32 32-17.67 0-32-14.326-32-32v-372.109l-137.597 134.55c-12.637 12.355-32.895 12.128-45.251-0.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["arrow-up"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":178,"id":33,"name":"arrow-up","prevSize":32,"code":59675},"setIdx":0,"setId":4,"iconIdx":40},{"icon":{"paths":["M866.128 153.127c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.245c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.245c12.496-12.497 12.496-32.758 0-45.255zM674.643 480.358l55.92-55.923c16.259 79.565 14.515 161.866-5.229 240.842l-11.622 46.49c-4.288 17.146-21.661 27.571-38.806 23.283-17.146-4.285-27.568-21.661-23.283-38.806l11.622-46.486c13.875-55.507 17.677-112.874 11.398-169.398zM817.162 385.923l-11.312-36.771 51.203-51.206 21.28 69.155c33.344 108.368 31.994 224.445-3.859 332.010l-33.45 100.342c-5.587 16.765-23.709 25.827-40.477 20.24-16.765-5.59-25.827-23.712-20.237-40.48l33.446-100.339c31.635-94.912 32.826-197.334 3.405-292.95zM490.666 664.333l64-64v210.346c0 23.562-19.101 42.666-42.666 42.666h-85.334c-35.459 0-68.394-10.816-95.683-29.325l46.611-46.611c14.701 7.629 31.395 11.936 49.072 11.936h64v-125.011zM128 682.678c0 19.738 13.403 36.346 31.604 41.216l62.552-62.55h-30.156v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v158.155l64-64v-115.488c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":180,"id":35,"name":"audio-disabled","prevSize":32,"code":59677},"setIdx":0,"setId":4,"iconIdx":41},{"icon":{"paths":["M310.99 661.344h-118.99v-298.666h118.99l12.367-48.049c11.843-46.020 53.696-79.953 103.309-79.953h64v554.667h-64c-49.613 0-91.466-33.933-103.309-79.952l-12.367-48.048zM170.667 725.344h90.71c18.946 73.61 85.766 128 165.289 128h85.334c23.565 0 42.666-19.104 42.666-42.666v-597.335c0-23.564-19.101-42.667-42.666-42.667h-85.334c-79.523 0-146.343 54.39-165.289 128h-90.71c-23.564 0-42.667 19.102-42.667 42.667v341.334c0 23.562 19.103 42.666 42.667 42.666zM886.627 393.373c12.496 12.496 12.496 32.758 0 45.254l-73.373 73.373 73.373 73.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-73.373-73.373-73.373 73.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l73.373-73.373-73.373-73.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l73.373 73.373 73.373-73.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio-unavailable"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":181,"id":36,"name":"audio-unavailable","prevSize":32,"code":59678},"setIdx":0,"setId":4,"iconIdx":42},{"icon":{"paths":["M300.1 631.12h-113.433v-280.89h113.433l12.366-48.048c11.054-42.953 50.123-74.619 96.423-74.619h58.666v526.223h-58.666c-46.301 0-85.37-31.667-96.423-74.621l-12.366-48.045zM163.556 695.12h86.931c18.156 70.541 82.192 122.666 158.403 122.666h81.776c22.582 0 40.89-18.307 40.89-40.89v-572.444c0-22.582-18.307-40.889-40.89-40.889h-81.776c-76.211 0-140.247 52.124-158.403 122.667h-86.931c-22.582 0-40.889 18.306-40.889 40.89v327.11c0 22.582 18.307 40.89 40.889 40.89zM646.461 316.515c17.146-4.286 34.518 6.138 38.806 23.284l11.136 44.55c20.81 83.229 20.81 170.301 0 253.533l-11.136 44.55c-4.288 17.146-21.661 27.568-38.806 23.283-17.146-4.288-27.571-21.661-23.283-38.806l11.136-44.55c18.262-73.040 18.262-149.45 0.003-222.486l-11.139-44.55c-4.288-17.146 6.138-34.522 23.283-38.807zM807.472 235.936c-5.197-16.892-23.104-26.372-39.994-21.174-16.893 5.197-26.371 23.104-21.174 39.996l35.536 115.489c28.112 91.37 26.976 189.242-3.254 279.933l-32.054 96.16c-5.59 16.765 3.472 34.886 20.237 40.477 16.768 5.587 34.89-3.472 40.48-20.24l32.051-96.16c34.448-103.344 35.747-214.87 3.709-318.989l-35.536-115.491z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["audio"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":182,"id":37,"name":"audio","prevSize":32,"code":59679},"setIdx":0,"setId":4,"iconIdx":43},{"icon":{"paths":["M418.704 128c-35.344 0-64 28.654-64 64v226.637c20.774-2.822 42.134-3.456 64-1.526v-225.11h176v180.707c0 35.344 28.656 64 64 64h176v331.293h-120.554c-17.155 22.179-36.323 43.869-57.312 64h177.866c35.347 0 64-28.653 64-64v-363.293c0-6.413-1.923-12.675-5.526-17.978l-156.63-230.681c-11.914-17.544-31.741-28.049-52.947-28.049h-264.896zM658.704 372.707v-180.707h24.896l122.698 180.707h-147.594zM167.939 668.547c120.524 156.138 218.24 174.586 285.133 158.739 73.293-17.36 139.232-81.648 183.466-151.763-115.155-155.869-211.581-174.589-279.149-158.915-74.362 17.251-142.707 81.683-189.45 151.939zM104.428 649.037c100.621-162.8 337.62-357.19 593.252 1.789 9.072 12.739 10.32 29.818 2.422 43.315-95.27 162.854-326.394 358.346-593.234-0.224-9.745-13.094-11.022-30.995-2.44-44.88zM401.664 735.994c31.514 0 60.269-26.858 60.269-64 0-37.146-28.755-64-60.269-64-31.51 0-60.266 26.854-60.266 64 0 37.142 28.755 64 60.266 64zM401.664 799.994c68.634 0 124.269-57.309 124.269-128 0-70.694-55.635-128-124.269-128-68.63 0-124.267 57.306-124.267 128 0 70.691 55.636 128 124.267 128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["auditing"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":183,"id":38,"name":"auditing","prevSize":32,"code":59680},"setIdx":0,"setId":4,"iconIdx":44},{"icon":{"paths":["M224 224c-17.673 0-32 14.327-32 32v544c0 17.674 14.327 32 32 32h544c17.674 0 32-14.326 32-32v-544c0-17.673-14.326-32-32-32h-544zM128 256c0-53.019 42.981-96 96-96h544c53.021 0 96 42.981 96 96v544c0 53.021-42.979 96-96 96h-544c-53.019 0-96-42.979-96-96v-544zM608 460.813c0 41.798-26.714 77.357-64 90.538v133.462h-64v-133.462c-37.286-13.181-64-48.739-64-90.538 0-53.021 42.979-96 96-96s96 42.979 96 96zM608 588.826c38.861-29.19 64-75.667 64-128.013 0-88.365-71.635-160-160-160s-160 71.636-160 160c0 52.346 25.139 98.822 64 128.013v127.987c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-127.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["auth"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":184,"id":39,"name":"auth","prevSize":32,"code":59681},"setIdx":0,"setId":4,"iconIdx":45},{"icon":{"paths":["M513.35 554.019c66.467 0 120.349-52.493 120.349-117.242 0-64.752-53.882-117.243-120.349-117.243-66.464 0-120.346 52.491-120.346 117.243 0 64.749 53.882 117.242 120.346 117.242zM513.35 490.019c-32.704 0-56.346-25.405-56.346-53.242 0-27.84 23.642-53.242 56.346-53.242 32.707 0 56.349 25.402 56.349 53.242 0 27.837-23.642 53.242-56.349 53.242z","M365.478 894.144h-172.126c-17.673 0-32-14.33-32-32v-702.144c0-17.673 14.327-32 32-32h640.001c17.674 0 32 14.327 32 32v702.144c0 17.67-14.326 32-32 32h-172.128c-6.24 1.274-12.701 1.942-19.318 1.942h-257.11c-6.618 0-13.078-0.669-19.318-1.942zM225.353 830.144h68.244c-3.114-9.456-4.799-19.558-4.799-30.058v-93.446c0-56.109 37.881-105.142 92.172-119.309 19.171-5.002 39.264-5.312 58.579-0.902l42.778 9.766c20.051 4.579 40.909 4.259 60.81-0.934l28.070-7.325c20.694-5.398 42.384-5.734 63.232-0.973 60.534 13.821 103.469 67.664 103.469 129.754v83.37c0 10.499-1.686 20.602-4.8 30.058h68.246v-638.144h-576.001v638.144zM652.918 830.144c12.246-4.49 20.989-16.253 20.989-30.058v-83.37c0-32.234-22.288-60.186-53.715-67.36-10.822-2.47-22.083-2.298-32.826 0.506l-28.070 7.325c-29.853 7.789-61.139 8.272-91.216 1.405l-42.774-9.766c-9.293-2.122-18.957-1.974-28.176 0.432-26.112 6.813-44.333 30.397-44.333 57.382v93.446c0 13.805 8.742 25.568 20.989 30.058h279.133z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["avatar"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":185,"id":40,"name":"avatar","prevSize":32,"code":59682},"setIdx":0,"setId":4,"iconIdx":46},{"icon":{"paths":["M737.779 361.376c12.499 12.496 12.499 32.758 0 45.254l-110.947 110.95 110.947 110.947c12.499 12.496 12.499 32.758 0 45.254-12.496 12.499-32.758 12.499-45.254 0l-110.947-110.947-110.95 110.947c-12.496 12.499-32.758 12.499-45.254 0-12.496-12.496-12.496-32.758 0-45.254l110.95-110.947-110.95-110.95c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l110.95 110.95 110.947-110.95c12.496-12.496 32.758-12.496 45.254 0z","M312.246 218.073c12.061-16.393 31.2-26.073 51.552-26.073h468.202c35.347 0 64 28.654 64 64v512c0 35.347-28.653 64-64 64h-468.202c-20.352 0-39.491-9.68-51.552-26.074l-188.343-256c-16.598-22.56-16.598-53.293 0-75.853l188.343-256.001zM363.798 256l-188.343 256 188.343 256h468.202v-512h-468.202z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["backspace"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":186,"id":41,"name":"backspace","prevSize":32,"code":59683},"setIdx":0,"setId":4,"iconIdx":47},{"icon":{"paths":["M376 775.418c-13.254 0-24-10.746-24-24v-469.168c0-13.255 10.746-24 24-24h145.075c56.118 0 98.269 11.603 126.448 34.809 28.416 23.206 42.624 57.542 42.624 103.008 0 24.154-6.867 45.584-20.602 64.291-13.734 18.47-32.442 32.794-56.122 42.976 27.942 7.814 49.965 22.733 66.067 44.755 16.339 21.786 24.509 47.834 24.509 78.144 0 46.413-15.037 82.88-45.11 109.402s-72.579 39.782-127.517 39.782h-155.373zM420.198 533.526v186.125h112.595c31.731 0 56.714-8.17 74.947-24.509 18.47-16.576 27.706-39.309 27.706-68.198 0-62.278-33.862-93.418-101.587-93.418h-113.661zM420.198 478.829h103.008c29.834 0 53.632-7.459 71.392-22.378 17.997-14.918 26.995-35.165 26.995-60.739 0-28.416-8.288-49.018-24.864-61.805-16.576-13.024-41.795-19.536-75.654-19.536h-100.877v164.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["bold"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":187,"id":42,"name":"bold","prevSize":32,"code":59684},"setIdx":0,"setId":4,"iconIdx":48},{"icon":{"paths":["M352 445.437c0-17.67 14.326-32 32-32h256c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M352 322.557c0-17.672 14.326-31.999 32-31.999h256c17.674 0 32 14.327 32 31.999 0 17.674-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M864 679.68c0 17.674-14.326 32-32 32h-18.509c-8.218 40.547-8.218 82.333 0 122.88h19.789c16.966 0 30.72 13.754 30.72 30.72s-13.754 30.72-30.72 30.72h-545.28c-70.692 0-128-55.014-128-122.88v-453.12c0-106.038 85.961-192 192-192h480c17.674 0 32 14.327 32 32v519.68zM748.419 834.56c-6.787-40.678-6.787-82.202 0-122.88h-460.419c-35.346 0-64 27.507-64 61.44s28.654 61.44 64 61.44h460.419zM224 647.68h576v-455.68h-448c-70.692 0-128 57.308-128 128v327.68z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["book"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":188,"id":43,"name":"book","prevSize":32,"code":59685},"setIdx":0,"setId":4,"iconIdx":49},{"icon":{"paths":["M224 224h320v576h-96v-112c0-8.835-7.165-16-16-16h-96c-8.835 0-16 7.165-16 16v112h-96v-576zM608 448h192v352h-192v-352zM832 384h-224v-192c0-17.673-14.326-32-32-32h-384c-17.673 0-32 14.327-32 32v640c0 17.674 14.327 32 32 32h640c17.674 0 32-14.326 32-32v-416c0-17.674-14.326-32-32-32zM304 288c-8.836 0-16 7.164-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.836-7.165-16-16-16h-32zM288 432c0-8.835 7.164-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.836 0-16-7.165-16-16v-32zM304 544c-8.836 0-16 7.165-16 16v32c0 8.835 7.164 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 304c0-8.836 7.165-16 16-16h32c8.835 0 16 7.164 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM432 416c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM416 560c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32zM688 512c-8.835 0-16 7.165-16 16v32c0 8.835 7.165 16 16 16h32c8.835 0 16-7.165 16-16v-32c0-8.835-7.165-16-16-16h-32zM672 656c0-8.835 7.165-16 16-16h32c8.835 0 16 7.165 16 16v32c0 8.835-7.165 16-16 16h-32c-8.835 0-16-7.165-16-16v-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["business"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":189,"id":44,"name":"business","prevSize":32,"code":59686},"setIdx":0,"setId":4,"iconIdx":50},{"icon":{"paths":["M277.831 157.44c0-16.259 13.181-29.44 29.44-29.44s29.439 13.181 29.439 29.44v58.876h353.28v-58.876c0-16.259 13.181-29.44 29.44-29.44s29.44 13.181 29.44 29.44v58.876h85.76c17.674 0 32 14.327 32 32v583.68c0 17.674-14.326 32-32 32h-642.559c-17.673 0-32-14.326-32-32v-583.68c0-1.105 0.056-2.196 0.165-3.272 1.639-16.136 15.266-28.728 31.835-28.728h85.76v-58.876zM802.63 392.957h-578.559v407.040h578.559v-407.040zM425.034 644.474c0-8.835 7.162-16 16-16h26.88c8.835 0 16 7.165 16 16v26.88c0 8.838-7.165 16-16 16h-26.88c-8.838 0-16-7.162-16-16v-26.88zM323.27 510.72c-8.836 0-15.999 7.162-15.999 16v26.88c0 8.835 7.163 16 15.999 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.838-7.162-16-16-16h-26.88zM542.79 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM323.27 628.474c-8.835 0-15.999 7.165-15.999 16v26.88c0 8.838 7.164 16 15.999 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM542.79 644.474c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.838-7.162 16-16 16h-26.88c-8.835 0-16-7.162-16-16v-26.88zM441.030 510.72c-8.835 0-16 7.165-16 16v26.88c0 8.835 7.165 16 16 16h26.88c8.838 0 16-7.165 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88zM660.55 526.72c0-8.835 7.165-16 16-16h26.88c8.838 0 16 7.165 16 16v26.88c0 8.835-7.162 16-16 16h-26.88c-8.835 0-16-7.165-16-16v-26.88zM676.55 628.474c-8.835 0-16 7.165-16 16v26.88c0 8.838 7.165 16 16 16h26.88c8.838 0 16-7.162 16-16v-26.88c0-8.835-7.162-16-16-16h-26.88z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["calendar"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":190,"id":45,"name":"calendar","prevSize":32,"code":59687},"setIdx":0,"setId":4,"iconIdx":51},{"icon":{"paths":["M866.128 153.126c-12.496-12.497-32.758-12.497-45.254 0l-668.246 668.246c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l668.246-668.246c12.496-12.497 12.496-32.758 0-45.255zM298.667 170.671c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999zM574.173 309.327h-403.506c-41.237 0-74.667 33.428-74.667 74.667v384c0 6.010 0.71 11.856 2.051 17.453l61.949-61.949v-339.504c0-5.891 4.776-10.666 10.667-10.666h339.506l64-64.001zM376.339 778.659h306.326c5.891 0 10.669-4.774 10.669-10.666v-85.334c0-11.373 6.038-21.891 15.859-27.629s21.949-5.83 31.856-0.243l97.83 55.162c2.531 1.427 4.858 3.194 6.912 5.248 6.72 6.72 18.208 1.962 18.208-7.542v-263.322c0-9.501-11.488-14.262-18.208-7.542-2.054 2.054-4.381 3.821-6.912 5.248l-97.83 55.162c-9.907 5.587-22.035 5.494-31.856-0.243-9.821-5.734-15.859-16.256-15.859-27.629v-7.661l110.778-73.498c47.418-41.99 123.888-8.701 123.888 56.163v263.322c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.378v30.554c0 41.238-33.43 74.666-74.669 74.666h-370.327l64.001-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["camera-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":191,"id":46,"name":"camera-disabled","prevSize":32,"code":59688},"setIdx":0,"setId":4,"iconIdx":52},{"icon":{"paths":["M288 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.674 0 32-14.327 32-32s-14.326-32-32-32h-256z","M170.667 341.328c-23.564 0-42.667 19.104-42.667 42.666v384c0 23.565 19.102 42.669 42.667 42.669h511.999c23.565 0 42.669-19.104 42.669-42.669v-128l97.83 97.83c26.877 26.88 72.835 7.843 72.835-30.17v-263.318c0-38.013-45.958-57.050-72.835-30.173l-97.83 97.83v-128c0-23.562-19.104-42.666-42.669-42.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["camera-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":192,"id":47,"name":"camera-filled","prevSize":32,"code":59689},"setIdx":0,"setId":4,"iconIdx":53},{"icon":{"paths":["M196.731 191.997c0-15.807 12.814-28.622 28.622-28.622h128.001c15.805 0 28.621 12.814 28.621 28.622s-12.816 28.621-28.621 28.621h-128.001c-15.807 0-28.622-12.814-28.622-28.621z","M737.354 559.997c0 97.203-78.8 176-176 176-97.203 0-176-78.797-176-176s78.797-176 176-176c97.2 0 176 78.797 176 176zM673.354 559.997c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112z","M193.353 255.997c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h640.001c35.344 0 64-28.653 64-64v-448c0-35.346-28.656-64-64-64h-640.001zM833.354 319.997v448h-640.001v-448h640.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["camera-photo"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":193,"id":48,"name":"camera-photo","prevSize":32,"code":59690},"setIdx":0,"setId":4,"iconIdx":54},{"icon":{"paths":["M298.667 170.672c-23.564 0-42.667 14.327-42.667 32s19.102 32 42.667 32h255.999c23.565 0 42.669-14.327 42.669-32s-19.104-32-42.669-32h-255.999z","M545.712 503.453c11.267-11.267 11.19-29.61-0.17-40.97s-29.706-11.437-40.973-0.17l-71.402 71.402-71.994-71.997c-11.363-11.36-29.706-11.437-40.973-0.17s-11.19 29.61 0.17 40.97l71.997 71.997-71.402 71.402c-11.266 11.267-11.19 29.61 0.17 40.97 11.363 11.36 29.706 11.437 40.973 0.17l71.402-71.402 71.997 71.997c11.36 11.36 29.702 11.437 40.97 0.17s11.19-29.61-0.17-40.97l-71.997-71.997 71.402-71.402z","M96 383.994c0-41.235 33.429-74.666 74.667-74.666h511.999c41.238 0 74.669 33.43 74.669 74.666v30.554l46.778-26.378c47.418-41.99 123.888-8.698 123.888 56.166v263.318c0 64.864-76.47 98.154-123.888 56.163l-46.778-26.374v30.55c0 41.238-33.43 74.669-74.669 74.669h-511.999c-41.237 0-74.667-33.43-74.667-74.669v-384zM170.667 373.328c-5.891 0-10.667 4.774-10.667 10.666v384c0 5.891 4.776 10.669 10.667 10.669h511.999c5.891 0 10.669-4.778 10.669-10.669v-85.331c0-11.376 6.038-21.894 15.859-27.632s21.949-5.83 31.856-0.243l97.83 55.165c2.531 1.427 4.858 3.19 6.912 5.245 6.72 6.72 18.208 1.962 18.208-7.542v-263.318c0-9.504-11.488-14.262-18.208-7.546-2.054 2.058-4.381 3.821-6.912 5.248l-97.83 55.165c-9.907 5.587-22.035 5.494-31.856-0.243s-15.859-16.256-15.859-27.632v-85.334c0-5.891-4.778-10.666-10.669-10.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["camera-unavailable"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":194,"id":49,"name":"camera-unavailable","prevSize":32,"code":59691},"setIdx":0,"setId":4,"iconIdx":55},{"icon":{"paths":["M256 202.672c0-17.673 19.102-32 42.667-32h255.999c23.565 0 42.669 14.327 42.669 32s-19.104 32-42.669 32h-255.999c-23.564 0-42.667-14.327-42.667-32zM160 383.994c0-5.891 4.776-10.666 10.667-10.666h511.999c5.891 0 10.669 4.774 10.669 10.666v85.334c0 11.376 6.038 21.894 15.859 27.632s21.949 5.83 31.856 0.243l97.83-55.165c2.531-1.427 4.858-3.19 6.912-5.248 6.72-6.717 18.208-1.958 18.208 7.546v263.318c0 9.504-11.488 14.262-18.208 7.542-2.054-2.054-4.381-3.818-6.912-5.245l-97.83-55.165c-9.907-5.587-22.035-5.494-31.856 0.243s-15.859 16.256-15.859 27.632v85.331c0 5.891-4.778 10.669-10.669 10.669h-511.999c-5.891 0-10.667-4.778-10.667-10.669v-384zM170.667 309.328c-41.237 0-74.667 33.43-74.667 74.666v384c0 41.238 33.429 74.669 74.667 74.669h511.999c41.238 0 74.669-33.43 74.669-74.669v-30.55l46.778 26.374c47.418 41.99 123.888 8.701 123.888-56.163v-263.318c0-64.864-76.47-98.157-123.888-56.166l-46.778 26.378v-30.554c0-41.235-33.43-74.666-74.669-74.666h-511.999z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["camera"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":195,"id":50,"name":"camera","prevSize":32,"code":59692},"setIdx":0,"setId":4,"iconIdx":56},{"icon":{"paths":["M224.248 304.026c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.702 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.152 83.731 244.197 93.958 91.965 10.218 193.27 1.446 273.306-15.482 40.022-8.461 73.616-18.733 97.443-29.075 9.245-4.013 16.438-7.786 21.734-11.126-2.464-1.565-5.446-3.306-9.002-5.197-9.222-4.912-19.779-9.578-30.733-14.368l-1.914-0.835c-9.667-4.221-20.47-8.941-28.656-13.517-14.835-8.298-29.389-17.734-40.006-27.776-5.222-4.941-11.165-11.571-15.146-19.827-4.208-8.742-7.226-21.792-1.306-35.597 31.978-74.621 47.178-115.494 54.538-142.483 6.874-25.2 6.874-37.888 6.874-58.064v-0.182c0-16.035-9.318-89.517-55.811-158.032-45.018-66.338-125.99-129.968-274.854-129.968-134.637 0-215.698 55.382-264.165 122.698zM172.309 266.63c60.333-83.796 160.606-149.302 316.103-149.302 171.136 0 271.494 75.037 327.811 158.032 54.842 80.819 66.854 167.338 66.854 193.968 0 22.384-0.022 41.696-9.126 75.088-8.131 29.805-23.485 70.928-51.946 137.923 5.261 4.166 13.072 9.306 23.36 15.062 5.315 2.97 13.485 6.55 24.963 11.568 10.653 4.659 23.437 10.266 35.174 16.515 11.258 5.994 24.416 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.056 15.168-16.794 25.939-26.576 33.094-10.63 7.776-23.818 14.762-38.253 21.030-29.008 12.589-67.030 23.962-109.683 32.982-85.309 18.038-193.581 27.587-293.616 16.474-99.955-11.107-202.74-44.634-278.468-108.71-76.833-65.011-123.811-159.994-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904zM493.744 320c17.674 0 32 14.326 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.674 14.326-32 32-32zM525.744 672c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["canned-response"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":196,"id":51,"name":"canned-response","prevSize":32,"code":59693},"setIdx":0,"setId":4,"iconIdx":57},{"icon":{"paths":["M193.352 181.331c-53.020 0-96 42.981-96 96v469.335c0 53.018 42.98 96 96 96h639.999c53.021 0 96-42.982 96-96v-469.335c0-53.019-42.979-96-96-96h-639.999zM161.352 277.331c0-17.673 14.327-32 32-32h639.999c17.674 0 32 14.327 32 32v202.673h-703.999v-202.673zM161.352 544.003h703.999v202.662c0 17.67-14.326 32-32 32h-639.999c-17.673 0-32-14.33-32-32v-202.662zM812.016 661.331c0-35.347-28.653-64-64-64-35.344 0-64 28.653-64 64s28.656 64 64 64c35.347 0 64-28.653 64-64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["card"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":197,"id":52,"name":"card","prevSize":32,"code":59694},"setIdx":0,"setId":4,"iconIdx":58},{"icon":{"paths":["M368 160c0-17.673-14.326-32-32-32s-32 14.327-32 32v144h-144c-17.673 0-32 14.327-32 32s14.327 32 32 32h144v288h-144c-17.673 0-32 14.326-32 32s14.327 32 32 32h144v144c0 17.674 14.327 32 32 32s32-14.326 32-32v-144h288v144c0 17.674 14.326 32 32 32s32-14.326 32-32v-144h144c17.674 0 32-14.326 32-32s-14.326-32-32-32h-144v-80h-58.666c-1.786 0-3.565-0.042-5.334-0.118v80.118h-288v-288h168.79c-0.522-5.264-0.79-10.602-0.79-16v-48h-168v-144z","M760 96c-57.437 0-104 46.562-104 104v56h-24c-17.674 0-32 14.327-32 32v192c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-192c0-17.673-14.326-32-32-32h-24v-56c0-57.438-46.563-104-104-104zM800 255.238h-80v-55.238c0-22.092 17.907-40 40-40s40 17.908 40 40v55.238z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["channel-private"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":198,"id":53,"name":"channel-private","prevSize":32,"code":59695},"setIdx":0,"setId":4,"iconIdx":59},{"icon":{"paths":["M336 128c17.674 0 32 14.327 32 32v144h288v-144c0-17.673 14.326-32 32-32s32 14.327 32 32v144h144c17.674 0 32 14.327 32 32s-14.326 32-32 32h-144v288h144c17.674 0 32 14.326 32 32s-14.326 32-32 32h-144v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-288v144c0 17.674-14.326 32-32 32s-32-14.326-32-32v-144h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-288h-144c-17.673 0-32-14.326-32-32s14.327-32 32-32h144v-144c0-17.673 14.327-32 32-32zM368 368v288h288v-288h-288z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["channel-public"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":199,"id":54,"name":"channel-public","prevSize":32,"code":59696},"setIdx":0,"setId":4,"iconIdx":60},{"icon":{"paths":["M886.627 105.372c12.496 12.497 12.496 32.758 0 45.255l-89.373 89.372 89.373 89.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-89.373-89.372-89.373 89.372c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l89.373-89.373-89.373-89.372c-12.496-12.497-12.496-32.758 0-45.255s32.758-12.497 45.254 0l89.373 89.373 89.373-89.373c12.496-12.497 32.758-12.497 45.254 0zM226.501 304.042c-49.642 68.947-66.502 152.646-66.502 207.968v1.453l-0.132 1.446c-9.701 106.717 28.59 181.93 90.135 234.006 62.938 53.254 152.151 83.731 244.196 93.958 91.968 10.218 193.27 1.446 273.309-15.482 40.019-8.461 73.613-18.733 97.44-29.075 9.245-4.013 16.438-7.786 21.738-11.126-2.467-1.565-5.446-3.306-9.005-5.2-9.222-4.909-19.776-9.574-30.733-14.365l-1.917-0.838c-9.667-4.221-20.47-8.938-28.653-13.517-14.835-8.294-29.389-17.731-40.003-27.773-5.226-4.941-11.168-11.571-15.146-19.827-4.211-8.742-7.226-21.792-1.309-35.6 42.086-98.205 54.957-137.722 59.219-163.318 2.906-17.434 19.392-29.21 36.822-26.307 17.434 2.906 29.213 19.389 26.307 36.822-5.453 32.749-20.333 76.41-58.006 165.088 5.261 4.166 13.069 9.306 23.357 15.059 5.315 2.973 13.485 6.554 24.963 11.571 10.656 4.656 23.437 10.266 35.174 16.515 11.261 5.994 24.419 14.029 34.202 24.538 10.234 10.992 20.973 29.846 13.299 52.864-5.053 15.168-16.794 25.939-26.576 33.094-10.627 7.776-23.814 14.762-38.253 21.027-29.005 12.592-67.027 23.965-109.68 32.986-85.312 18.038-193.584 27.587-293.616 16.47-99.955-11.104-202.742-44.63-278.471-108.707-76.833-65.014-123.811-159.997-112.66-287.222 0.286-65.549 19.841-162.349 78.561-243.904 60.333-83.796 160.605-149.302 316.103-149.302 17.674 0 32 14.327 32 32s-14.326 32-32 32c-134.637 0-215.697 55.382-264.164 122.698z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chat-close"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":200,"id":55,"name":"chat-close","prevSize":32,"code":59697},"setIdx":0,"setId":4,"iconIdx":61},{"icon":{"paths":["M778 93.833c-11.795-13.162-32.026-14.271-45.187-2.477s-14.272 32.025-2.477 45.187l81.222 90.645h-216.358c-17.674 0-32 14.327-32 32s14.326 32 32 32h216.358l-81.222 90.646c-11.795 13.162-10.685 33.392 2.477 45.187 13.162 11.792 33.392 10.685 45.187-2.477l129.030-144.001c10.893-12.154 10.893-30.556 0-42.71l-129.030-144zM159.999 512.010c0-55.322 16.86-139.021 66.502-207.968 48.467-67.316 129.527-122.698 264.164-122.698 17.674 0 32-14.327 32-32s-14.326-32-32-32c-155.498 0-255.77 65.507-316.102 149.302-58.72 81.555-78.275 178.355-78.561 243.904-11.151 127.229 35.827 222.211 112.66 287.222 75.729 64.077 178.516 97.603 278.471 108.707 100.032 11.117 208.304 1.568 293.616-16.47 42.653-9.021 80.675-20.394 109.68-32.982 14.438-6.269 27.626-13.254 38.253-21.030 9.782-7.155 21.523-17.926 26.579-33.094 7.67-23.018-3.069-41.872-13.302-52.864-9.782-10.509-22.941-18.544-34.202-24.538-11.738-6.25-24.518-11.859-35.171-16.515-11.482-5.018-19.651-8.598-24.966-11.571-10.288-5.754-18.096-10.89-23.357-15.059 37.674-88.678 52.554-132.339 58.010-165.088 2.902-17.43-8.877-33.917-26.31-36.822-17.43-2.902-33.917 8.877-36.822 26.307-4.262 25.597-17.133 65.114-59.219 163.318-5.917 13.808-2.902 26.858 1.309 35.6 3.978 8.256 9.92 14.886 15.146 19.827 10.614 10.042 25.171 19.478 40.003 27.776 8.186 4.576 18.989 9.296 28.656 13.517v0l1.914 0.835c10.957 4.79 21.51 9.456 30.733 14.368 3.558 1.891 6.541 3.632 9.005 5.197-5.299 3.341-12.493 7.114-21.738 11.126-23.827 10.342-57.421 20.614-97.44 29.075-80.038 16.928-181.341 25.699-273.309 15.482-92.045-10.227-181.258-40.704-244.196-93.958-61.545-52.077-99.836-127.29-90.135-234.006l0.132-1.446v-1.453z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chat-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":201,"id":56,"name":"chat-forward","prevSize":32,"code":59698},"setIdx":0,"setId":4,"iconIdx":62},{"icon":{"paths":["M854.506 233.252c12.563 12.429 12.672 32.691 0.243 45.254l-474.877 480c-6.013 6.077-14.208 9.498-22.755 9.494-8.55-0.003-16.742-3.427-22.752-9.507l-165.126-167.088c-12.423-12.57-12.303-32.832 0.268-45.254s32.831-12.304 45.254 0.269l142.375 144.067 452.115-456.992c12.429-12.564 32.691-12.672 45.254-0.243z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":202,"id":57,"name":"check","prevSize":32,"code":59699},"setIdx":0,"setId":4,"iconIdx":63},{"icon":{"paths":["M281.372 436.042c12.497-12.499 32.758-12.499 45.255 0l185.373 185.373 185.373-185.373c12.496-12.499 32.758-12.499 45.254 0 12.496 12.496 12.496 32.758 0 45.254l-208 208c-12.496 12.496-32.758 12.496-45.254 0l-208-208c-12.497-12.496-12.497-32.758 0-45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-down"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":203,"id":58,"name":"chevron-down","prevSize":32,"code":59700},"setIdx":0,"setId":4,"iconIdx":64},{"icon":{"paths":["M670.17 183.165c16.662 16.662 16.662 43.677 0 60.34l-268.496 268.495 268.496 268.499c16.662 16.662 16.662 43.677 0 60.339s-43.677 16.662-60.339 0l-298.668-298.669c-8.002-8-12.497-18.851-12.497-30.17 0-11.315 4.495-22.166 12.497-30.17l298.668-298.666c16.662-16.662 43.677-16.662 60.339 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-left-big"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":204,"id":59,"name":"chevron-left-big","prevSize":32,"code":59701},"setIdx":0,"setId":4,"iconIdx":65},{"icon":{"paths":["M587.962 281.372c12.496 12.497 12.496 32.758 0 45.255l-185.373 185.373 185.373 185.373c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-208-208c-12.496-12.496-12.496-32.758 0-45.254l208-208c12.499-12.497 32.758-12.497 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-left"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":205,"id":60,"name":"chevron-left","prevSize":32,"code":59702},"setIdx":0,"setId":4,"iconIdx":66},{"icon":{"paths":["M436.038 742.627c-12.496-12.496-12.496-32.758 0-45.254l185.373-185.373-185.373-185.373c-12.496-12.497-12.496-32.758 0-45.254 12.499-12.497 32.758-12.497 45.254 0l208 208c12.499 12.496 12.499 32.758 0 45.254l-207.997 208c-12.499 12.496-32.758 12.496-45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-right"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":206,"id":61,"name":"chevron-right","prevSize":32,"code":59703},"setIdx":0,"setId":4,"iconIdx":67},{"icon":{"paths":["M742.627 587.958c-12.496 12.499-32.758 12.499-45.254 0l-185.373-185.373-185.373 185.373c-12.496 12.499-32.758 12.499-45.254 0-12.497-12.496-12.497-32.758 0-45.254l208-208c12.496-12.496 32.758-12.496 45.254 0l208 208c12.496 12.496 12.496 32.758 0 45.254z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["chevron-up"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":207,"id":62,"name":"chevron-up","prevSize":32,"code":59704},"setIdx":0,"setId":4,"iconIdx":68},{"icon":{"paths":["M512 864c194.403 0 352-157.597 352-352 0-46.522-9.024-90.931-25.418-131.581l48.518-48.518c26.211 54.496 40.899 115.581 40.899 180.099 0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416 95.376 0 183.254 32.096 253.424 86.076l-45.712 45.712c-58.221-42.623-130.029-67.788-207.712-67.788-194.404 0-352 157.596-352 352s157.596 352 352 352zM902.63 230.623c12.496-12.499 12.493-32.76-0.006-45.255s-32.762-12.491-45.254 0.008l-345.386 345.503-105.341-105.491c-12.486-12.506-32.749-12.522-45.254-0.032-12.506 12.486-12.522 32.749-0.032 45.254l127.971 128.157c6 6.006 14.144 9.386 22.634 9.389 8.493 0 16.637-3.373 22.64-9.376l368.029-368.157z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["circle-check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":208,"id":63,"name":"circle-check","prevSize":32,"code":59705},"setIdx":0,"setId":4,"iconIdx":69},{"icon":{"paths":["M608 192c0-53.019-42.979-96-96-96s-96 42.981-96 96h-192c-17.673 0-32 14.327-32 32v672c0 17.674 14.327 32 32 32h576c17.674 0 32-14.326 32-32v-672c0-17.673-14.326-32-32-32h-192zM256 864v-608h96v64c0 17.674 14.326 32 32 32h256c17.674 0 32-14.326 32-32v-64h96v608h-512zM512 224c17.674 0 32-14.327 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["clipboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":209,"id":64,"name":"clipboard","prevSize":32,"code":59706},"setIdx":0,"setId":4,"iconIdx":70},{"icon":{"paths":["M864 512c0 194.403-157.597 352-352 352s-352-157.597-352-352c0-194.404 157.596-352 352-352s352 157.596 352 352zM928 512c0-229.75-186.25-416-416-416s-416 186.25-416 416c0 229.75 186.25 416 416 416s416-186.25 416-416zM544 288c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["clock"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":210,"id":65,"name":"clock","prevSize":32,"code":59707},"setIdx":0,"setId":4,"iconIdx":71},{"icon":{"paths":["M806.627 262.628c12.496-12.497 12.496-32.758 0-45.255s-32.758-12.497-45.254 0l-249.373 249.373-249.372-249.373c-12.497-12.497-32.758-12.497-45.255 0s-12.497 32.758 0 45.255l249.373 249.372-249.373 249.373c-12.497 12.496-12.497 32.758 0 45.254s32.758 12.496 45.255 0l249.372-249.373 249.373 249.373c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-249.373-249.373 249.373-249.372z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["close"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":211,"id":66,"name":"close","prevSize":32,"code":59708},"setIdx":0,"setId":4,"iconIdx":72},{"icon":{"paths":["M273.129 356.678c6.747-28.298 25.696-52.004 51.21-67.152 25.6-15.2 56.323-20.858 84.698-14.53 27.642 6.163 55.117 24.12 74.874 60.339l22.541 41.325 30.134-36.16c27.238-32.689 85.126-39.713 134.714-14.064 23.562 12.186 42.208 30.618 52.064 53.488 9.654 22.406 12.112 51.898-1.434 89.149l-15.616 42.938h45.686c53.606 0 82.419 15.882 97.642 33.75 15.651 18.374 21.898 44.646 18.557 74.714-3.344 30.083-16.054 60.518-33.456 82.89-17.939 23.066-36.646 32.646-50.742 32.646h-543.998c-18.791 0-37.068-10.362-52.195-31.578-15.217-21.344-24.978-51.050-25.818-81.312-0.84-30.227 7.237-57.914 23.733-77.491 15.796-18.746 42.268-33.619 86.279-33.619h59.791l-33.165-49.75c-27.882-41.824-32.118-77.814-25.498-105.581zM518.218 272.084c-26.339-32.073-59.667-51.619-95.251-59.554-45.626-10.174-92.902-0.833-131.301 21.965-38.487 22.85-69.538 60.142-80.791 107.342-8.278 34.72-5.369 72.758 10.731 111.77-35.67 8.464-64.099 26.186-84.825 50.784-29.004 34.422-39.927 78.733-38.766 120.506 1.159 41.738 14.399 84.032 37.682 116.688 23.373 32.784 59.097 58.426 104.306 58.426h543.999c41.907 0 77.2-26.419 101.261-57.354 24.598-31.629 41.888-73.197 46.544-115.114 4.659-41.933-3.094-87.658-33.443-123.283-24.106-28.301-59.504-46.774-105.616-53.456 5.83-35.194 1.686-67.674-10.605-96.205-16.646-38.628-46.998-67.197-81.437-85.010-54.902-28.397-128.733-32.652-182.486 2.495zM512 437.331c17.674 0 32 14.33 32 32v53.328h53.334c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-53.334v53.341c0 17.674-14.326 32-32 32s-32-14.326-32-32v-53.341h-53.331c-17.674 0-32-14.326-32-32 0-17.67 14.326-32 32-32h53.331v-53.328c0-17.67 14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["cloud-connectivity"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":212,"id":67,"name":"cloud-connectivity","prevSize":32,"code":59709},"setIdx":0,"setId":4,"iconIdx":73},{"icon":{"paths":["M630.154 204.798c16.496 6.344 24.723 24.859 18.381 41.355l-213.334 554.667c-6.342 16.496-24.858 24.723-41.354 18.381-16.496-6.346-24.723-24.861-18.381-41.357l213.334-554.666c6.346-16.495 24.858-24.724 41.354-18.38zM321.293 361.37c12.499 12.499 12.499 32.758 0 45.258l-105.371 105.37 105.371 105.373c12.499 12.499 12.499 32.758 0 45.258-12.495 12.496-32.756 12.496-45.253 0l-128-128c-12.497-12.499-12.497-32.758 0-45.258l128-128c12.497-12.496 32.758-12.496 45.253 0zM702.707 361.37c12.496-12.496 32.758-12.496 45.254 0l128 128c12.496 12.499 12.496 32.758 0 45.258l-128 128c-12.496 12.496-32.758 12.496-45.254 0-12.499-12.499-12.499-32.758 0-45.258l105.373-105.373-105.373-105.37c-12.499-12.499-12.499-32.758 0-45.258z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["code"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":213,"id":68,"name":"code","prevSize":32,"code":59710},"setIdx":0,"setId":4,"iconIdx":74},{"icon":{"paths":["M770.704 224c17.674 0 32 14.327 32 32v544c0 17.674-14.326 32-32 32h-543.999c-17.673 0-32-14.326-32-32v-128c17.673 0 32-14.326 32-32s-14.327-32-32-32v-192c17.673 0 32-14.326 32-32s-14.327-32-32-32v-96c0-17.673 14.327-32 32-32h543.999zM130.705 608c-17.673 0-32 14.326-32 32s14.327 32 32 32v128c0 53.021 42.981 96 96 96h543.999c53.021 0 96-42.979 96-96v-544c0-53.019-42.979-96-96-96h-543.999c-53.019 0-96 42.981-96 96v96c-17.673 0-32 14.326-32 32s14.327 32 32 32v192zM427.91 514.266c13.315-3.568 27.309-3.789 40.73-0.643l31.52 7.389c8.73 2.045 17.83 1.904 26.49-0.416l22.186-5.942c14.285-3.827 29.328-4.042 43.683-0.675 40.429 9.475 69.325 45.584 69.325 87.277v24.336c0 31.811-25.789 57.6-57.6 57.6h-180.739c-31.811 0-57.6-25.789-57.6-57.6v-30.525c0-37.862 25.434-71.005 62.006-80.8zM456.957 563.472c-5.206-1.219-10.634-1.133-15.798 0.25-14.189 3.798-24.054 16.656-24.054 31.344v30.525c0 3.536 2.867 6.4 6.4 6.4h180.739c3.533 0 6.4-2.864 6.4-6.4v-24.336c0-17.75-12.365-33.341-29.808-37.427-6.186-1.45-12.662-1.35-18.752 0.282l-22.186 5.942c-16.813 4.502-34.474 4.781-51.421 0.81l-31.52-7.389zM539.155 420.48c0-13.962-11.318-25.28-25.28-25.28s-25.283 11.318-25.283 25.28c0 13.962 11.322 25.28 25.283 25.28s25.28-11.318 25.28-25.28zM590.355 420.48c0 42.24-34.243 76.48-76.48 76.48-42.24 0-76.483-34.24-76.483-76.48s34.243-76.48 76.483-76.48c42.237 0 76.48 34.24 76.48 76.48z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["contacts"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":214,"id":69,"name":"contacts","prevSize":32,"code":59711},"setIdx":0,"setId":4,"iconIdx":75},{"icon":{"paths":["M464 272c-35.347 0-64 28.654-64 64v480c0 35.347 28.653 64 64 64h352c35.347 0 64-28.653 64-64v-304c0-6.509-1.984-12.864-5.69-18.214l-134.458-194.215c-11.952-17.267-31.619-27.571-52.621-27.571h-223.232zM464 336h144v144c0 35.347 28.653 64 64 64h144v272h-352v-480zM672 480v-144h15.232l99.693 144h-114.925zM144 208c0-35.346 28.654-64 64-64h241.844c18.032 0 35.229 7.607 47.357 20.949l39.136 43.051h-328.336v480h128v64h-128c-35.346 0-64-28.653-64-64v-480z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["copy"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":215,"id":70,"name":"copy","prevSize":32,"code":59712},"setIdx":0,"setId":4,"iconIdx":76},{"icon":{"paths":["M824.682 183.521c-37.19-37.986-98.202-38.583-136.131-1.333l-348.48 342.237c-12.739 12.512-21.733 28.32-25.976 45.654l-23.681 96.749c-6.94 28.355 16.754 54.845 45.747 51.142l90.691-11.578c20.224-2.582 39.104-11.52 53.907-25.52l360.486-340.922c38.986-36.868 40.173-98.482 2.637-136.82l-19.2-19.61zM733.485 227.821c12.643-12.417 32.979-12.218 45.376 0.444l19.2 19.61c12.512 12.78 12.115 33.317-0.88 45.607l-69.965 66.169-63.446-63.364 69.715-68.466zM618.074 341.162l62.592 62.512-243.971 230.73c-4.934 4.666-11.229 7.645-17.968 8.506l-58.307 7.443 15.926-65.075c1.414-5.779 4.413-11.046 8.659-15.219l233.069-228.896zM193.608 265.602c0-17.673 14.346-32 32.042-32h281.332c17.696 0 32.042-14.327 32.042-32s-14.346-32-32.042-32h-281.332c-53.089 0-96.127 42.981-96.127 96v534.402c0 53.018 43.037 95.997 96.127 95.997h529.764c53.091 0 96.128-42.979 96.128-96v-279.414c0-17.67-14.346-32-32.042-32s-32.042 14.33-32.042 32v279.414c0 17.674-14.346 32-32.045 32h-529.764c-17.696 0-32.042-14.326-32.042-31.997v-534.402z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["create"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":216,"id":71,"name":"create","prevSize":32,"code":59713},"setIdx":0,"setId":4,"iconIdx":77},{"icon":{"paths":["M717.373 298.663c0-17.673-14.326-32-32-32s-32 14.327-32 32v426.665c0 17.674 14.326 32 32 32s32-14.326 32-32v-426.665z","M514.704 394.672c17.674 0 32 14.326 32 32v298.666c0 17.674-14.326 32-32 32s-32-14.326-32-32v-298.666c0-17.674 14.326-32 32-32z","M376.038 554.672c0-17.674-14.326-32-32-32s-32 14.326-32 32v170.669c0 17.67 14.327 32 32 32s32-14.33 32-32v-170.669z","M130.705 199.556v624.889c0 39.52 32.036 71.555 71.556 71.555h624.888c39.52 0 71.555-32.035 71.555-71.555v-624.889c0-39.519-32.035-71.556-71.555-71.556h-624.888c-39.519 0-71.556 32.036-71.556 71.556zM202.26 192h624.888c4.173 0 7.555 3.383 7.555 7.556v624.889c0 4.173-3.382 7.555-7.555 7.555h-624.888c-4.173 0-7.556-3.382-7.556-7.555v-624.889c0-4.173 3.383-7.556 7.556-7.556z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["dashboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":217,"id":72,"name":"dashboard","prevSize":32,"code":59714},"setIdx":0,"setId":4,"iconIdx":78},{"icon":{"paths":["M739.68 864v-448h-448.593v448h448.593zM227.003 864v-448c-35.393 0-64.084-28.653-64.084-64v-128c0-35.346 28.692-64 64.084-64h224.297c0-35.346 28.691-64 64.083-64 35.395 0 64.086 28.654 64.086 64h224.294c35.395 0 64.086 28.654 64.086 64v128c0 35.347-28.691 64-64.086 64v448c0 35.347-28.691 64-64.083 64h-448.593c-35.393 0-64.085-28.653-64.085-64zM803.763 224h-576.761v128h576.761v-128zM419.258 544v192c0 17.674 14.346 32 32.042 32s32.042-14.326 32.042-32v-192c0-17.674-14.346-32-32.042-32s-32.042 14.326-32.042 32zM579.469 512c17.696 0 32.042 14.326 32.042 32v192c0 17.674-14.346 32-32.042 32s-32.042-14.326-32.042-32v-192c0-17.674 14.346-32 32.042-32z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["delete"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":218,"id":73,"name":"delete","prevSize":32,"code":59715},"setIdx":0,"setId":4,"iconIdx":79},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.327 32 32 32h341.334c17.67 0 32-14.326 32-32s-14.33-32-32-32h-341.334z","M85.334 298.672c0-70.692 57.308-128 128-128h597.335c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.335c-70.692 0-128-57.306-128-128v-298.666zM213.334 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.335c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.335z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["desktop"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":219,"id":74,"name":"desktop","prevSize":32,"code":59716},"setIdx":0,"setId":4,"iconIdx":80},{"icon":{"paths":["M325.837 160c0-17.673-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.327-32.042 32v64c0 17.673 14.346 32 32.042 32h64.085c17.696 0 32.043-14.327 32.043-32v-64zM325.837 586.666c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64zM454.006 160c0-17.673 14.346-32 32.042-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.327-32.042-32v-64zM582.173 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM454.006 586.666c0-17.674 14.346-32 32.042-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.696 0-32.042-14.326-32.042-32v-64zM582.173 800c0-17.674-14.346-32-32.042-32h-64.083c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 160c0-17.673 14.346-32 32.045-32h64.083c17.696 0 32.042 14.327 32.042 32v64c0 17.673-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.327-32.045-32v-64zM838.512 373.334c0-17.674-14.346-32-32.042-32h-64.083c-17.699 0-32.045 14.326-32.045 32v64c0 17.674 14.346 32 32.045 32h64.083c17.696 0 32.042-14.326 32.042-32v-64zM710.342 586.666c0-17.674 14.346-32 32.045-32h64.083c17.696 0 32.042 14.326 32.042 32v64c0 17.674-14.346 32-32.042 32h-64.083c-17.699 0-32.045-14.326-32.045-32v-64zM325.837 373.334c0-17.674-14.347-32-32.043-32h-64.085c-17.696 0-32.042 14.326-32.042 32v64c0 17.674 14.346 32 32.042 32h64.085c17.696 0 32.043-14.326 32.043-32v-64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["dialpad"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":220,"id":75,"name":"dialpad","prevSize":32,"code":59717},"setIdx":0,"setId":4,"iconIdx":81},{"icon":{"paths":["M514.704 96c80.096 0 154.906 22.636 218.378 61.859l-46.746 46.746c-24.739-13.843-51.322-24.785-79.286-32.368 12.166 22.395 23.078 49.095 32.403 79.249l-51.997 51.999c-5.654-22.994-12.17-44.005-19.347-62.666-12.822-33.339-26.522-55.927-38.474-69.070-8.4-9.235-13.43-11.291-14.928-11.698-1.501 0.407-6.531 2.463-14.931 11.698-11.949 13.143-25.651 35.731-38.474 69.070-16.298 42.377-29.174 96.867-36.339 159.18h65.974l-63.997 64h-7.117c-0.115 2.47-0.221 4.95-0.32 7.437l-64.538 64.538c-0.173-7.933-0.259-15.926-0.259-23.974 0-16.234 0.355-32.25 1.053-48h-189.81c-2.14 15.696-3.245 31.718-3.245 48 0 33.28 4.619 65.485 13.251 96h106.984l-64 64h-17.852c2.004 3.92 4.078 7.798 6.223 11.629l-46.746 46.749c-39.223-63.475-61.859-138.282-61.859-218.378 0-229.75 186.25-416 415.999-416zM868.845 293.623l-46.746 46.748c10.56 18.87 19.434 38.816 26.413 59.629h-86.045l-64 64h164.992c2.141 15.696 3.245 31.718 3.245 48 0 33.28-4.618 65.485-13.248 96h-183.030c2.8-30.816 4.282-62.957 4.282-96 0-8.045-0.090-16.042-0.262-23.974l-64.538 64.534c-0.752 19.008-2.022 37.523-3.763 55.44h-51.677l-64 64h107.091c-7.37 42.458-17.488 80.083-29.45 111.184-12.822 33.338-26.522 55.926-38.474 69.069-8.397 9.235-13.43 11.29-14.928 11.699-1.501-0.41-6.531-2.464-14.931-11.699-11.949-13.142-25.651-35.731-38.474-69.069-7.178-18.662-13.693-39.677-19.347-62.669l-52 51.997c9.328 30.154 20.24 56.854 32.406 79.251-27.965-7.584-54.547-18.525-79.286-32.368l-46.747 46.746c63.348 39.146 137.985 61.77 217.899 61.859h0.957c229.53-0.259 415.52-186.41 415.52-416 0-80.096-22.634-154.902-61.859-218.377zM422.362 172.237c-113.55 30.788-204.31 116.98-241.464 227.763h179.676c10-93.226 32.176-173.252 61.789-227.763zM607.050 851.763c24.397-44.902 43.741-107.117 55.395-179.763h165.878c-44.653 87.35-124.723 153.584-221.274 179.763zM828.077 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-671.999 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l671.999-672z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["directory-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":221,"id":76,"name":"directory-disabled","prevSize":32,"code":59718},"setIdx":0,"setId":4,"iconIdx":82},{"icon":{"paths":["M866.493 512c0 33.28-4.624 65.485-13.267 96h-183.27c2.803-30.816 4.285-62.957 4.285-96 0-16.234-0.358-32.25-1.053-48h190.058c2.141 15.696 3.248 31.718 3.248 48zM609.037 464c0.736 15.67 1.12 31.686 1.12 48 0 33.398-1.606 65.555-4.57 96h-183.117c-2.96-30.445-4.566-62.602-4.566-96 0-16.314 0.381-32.33 1.12-48h190.013zM668.368 400c-10.013-93.226-32.218-173.252-61.872-227.763 113.699 30.788 204.579 116.981 241.782 227.763h-179.91zM421.565 172.237c-29.654 54.51-51.859 134.537-61.872 227.763h-179.913c37.204-110.782 128.083-196.975 241.785-227.763zM424.17 400c7.171-62.314 20.067-116.804 36.387-159.18 12.838-33.339 26.557-55.927 38.525-69.070 8.41-9.235 13.446-11.291 14.947-11.698 1.501 0.407 6.541 2.463 14.95 11.698 11.965 13.143 25.683 35.731 38.525 69.070 16.32 42.377 29.213 96.867 36.387 159.18h-179.722zM354.874 464c-0.698 15.75-1.056 31.766-1.056 48 0 33.043 1.485 65.184 4.288 96h-183.274c-8.643-30.515-13.268-62.72-13.268-96 0-16.282 1.107-32.304 3.249-48h190.060zM366.096 672c11.667 72.646 31.040 134.861 55.466 179.763-96.675-26.179-176.853-92.413-221.565-179.763h166.099zM514.509 928c229.834-0.259 416.070-186.41 416.070-416 0-229.75-186.496-416-416.55-416s-416.549 186.25-416.549 416c0 229.59 186.237 415.741 416.073 416 0.16 0 0.317 0 0.477 0s0.32 0 0.48 0zM606.496 851.763c24.426-44.902 43.798-107.117 55.466-179.763h166.099c-44.71 87.35-124.886 153.584-221.565 179.763zM596.992 672c-7.379 42.458-17.51 80.083-29.488 111.184-12.842 33.338-26.56 55.926-38.525 69.069-8.41 9.235-13.45 11.29-14.95 11.699-1.501-0.41-6.538-2.464-14.947-11.699-11.968-13.142-25.686-35.731-38.525-69.069-11.978-31.101-22.112-68.726-29.491-111.184h165.926z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["directory"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":222,"id":77,"name":"directory","prevSize":32,"code":59719},"setIdx":0,"setId":4,"iconIdx":83},{"icon":{"paths":["M561.667 127.992c-121.696 0-200.973 50.509-248.813 115.801-46.216 63.073-61.638 137.752-61.933 188.616-8.705 98.746 28.601 172.896 89.422 223.469 59.686 49.626 140.202 75.258 217.85 83.738 77.75 8.486 161.715 1.197 227.856-12.547 33.066-6.87 62.774-15.581 85.642-25.331 11.366-4.848 22.029-10.368 30.797-16.669 7.875-5.661 18.541-14.976 23.242-28.835 7.286-21.475-3.133-38.784-11.965-48.102-8.41-8.877-19.427-15.405-28.24-20.016-9.306-4.867-19.379-9.206-27.533-12.707-8.973-3.856-14.858-6.4-18.56-8.432-4.845-2.662-8.842-5.088-12.026-7.203 20.256-47.142 31.549-77.043 37.696-99.19 7.293-26.272 7.315-41.725 7.315-58.909 0-21.523-9.603-88.542-52.81-151.108-44.701-64.73-124.074-122.573-257.939-122.573zM314.916 433.898c0-40.416 12.607-101.84 49.564-152.277 35.782-48.836 95.882-89.628 197.187-89.628 112.086 0 172.090 46.886 205.277 94.94 34.678 50.219 41.472 104.040 41.472 114.741v0.198c0 14.918 0 23.638-4.982 41.594-5.491 19.779-16.963 50.189-41.539 106.538-5.802 13.296-2.762 25.77 1.155 33.754 3.664 7.478 9.005 13.242 13.331 17.261 8.835 8.211 20.653 15.686 32.224 22.045 6.618 3.638 15.238 7.334 22.563 10.477l1.562 0.672c5.904 2.534 11.52 4.97 16.688 7.418-0.909 0.406-1.856 0.819-2.835 1.238-17.741 7.568-43.078 15.206-73.555 21.539-60.947 12.666-138.064 19.21-207.888 11.587-69.926-7.635-136.982-30.336-183.878-69.328-45.459-37.798-73.674-92.064-66.481-169.821l0.136-1.469v-1.478zM819.162 553.354l-0.074-0.086c0 0.003 0.010 0.013 0.029 0.035 0.010 0.013 0.026 0.029 0.045 0.051z","M178.552 502.474c7.496-11.258 16.26-22.259 26.436-32.592 0.876 31.747 6.169 61.226 15.216 88.358-15.094 30.877-18.374 59.315-18.374 65.357v0.186c0 11.382 0 17.536 3.524 30.701 3.993 14.918 12.441 38.211 30.867 82.022 5.256 12.496 2.48 24.099-0.985 31.43-3.249 6.874-7.925 12.058-11.512 15.514-7.319 7.053-16.852 13.254-25.75 18.326-5.008 2.854-11.333 5.706-16.546 8.029 11.182 3.939 24.98 7.814 40.802 11.226 44.977 9.693 101.833 14.669 153.062 8.87 51.28-5.808 99.776-23.014 133.35-51.965l0.608-0.528c14.794 2.784 29.53 4.938 44.051 6.525 10.886 1.187 21.862 2.086 32.877 2.72-10.122 14.797-22.163 28.045-35.741 39.754-46.362 39.974-108.547 60.362-167.946 67.088-59.45 6.73-123.405 0.947-173.744-9.901-25.17-5.424-48.056-12.352-65.901-20.243-8.86-3.92-17.458-8.502-24.686-13.891-6.431-4.794-15.831-13.171-20.001-25.92-6.422-19.632 2.792-35.443 10.458-43.834 7.193-7.872 16.405-13.462 23.248-17.174 7.309-3.965 15.158-7.466 21.235-10.173 6.907-3.078 10.854-4.858 13.183-6.186 1.349-0.768 2.591-1.501 3.727-2.195-13.937-33.885-21.976-56.118-26.48-72.947-5.68-21.222-5.7-33.875-5.7-47.434 0-17.712 7.436-71.139 40.721-121.123zM155.337 797.248c-0.012 0 0.084 0.102 0.317 0.301-0.19-0.202-0.306-0.301-0.317-0.301zM179.587 737.085c-0.004 0-0.052 0.051-0.137 0.15l0.112-0.118c0.019-0.022 0.027-0.032 0.025-0.032z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["discussions"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":223,"id":78,"name":"discussions","prevSize":32,"code":59720},"setIdx":0,"setId":4,"iconIdx":84},{"icon":{"paths":["M160 256c0-17.673 14.327-32 32-32h640c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.327-32-32zM160 421.162c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 602.838c0-17.674 14.327-32 32-32h640c17.674 0 32 14.326 32 32s-14.326 32-32 32h-640c-17.673 0-32-14.326-32-32zM160 768c0-17.674 14.327-32 32-32h344.614c17.674 0 32 14.326 32 32s-14.326 32-32 32h-344.614c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["document"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":224,"id":79,"name":"document","prevSize":32,"code":59721},"setIdx":0,"setId":4,"iconIdx":85},{"icon":{"paths":["M128.169 352c0-17.674 14.346-32 32.042-32h704.928c17.696 0 32.045 14.326 32.045 32s-14.349 32-32.045 32h-704.928c-17.696 0-32.042-14.326-32.042-32zM213.615 522.669c0-17.674 14.346-32 32.042-32h534.036c17.699 0 32.045 14.326 32.045 32s-14.346 32-32.045 32h-534.036c-17.697 0-32.042-14.326-32.042-32zM331.104 661.331c-17.698 0-32.043 14.326-32.043 32s14.346 32 32.043 32h363.146c17.696 0 32.042-14.326 32.042-32s-14.346-32-32.042-32h-363.146z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["donner"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":225,"id":80,"name":"donner","prevSize":32,"code":59722},"setIdx":0,"setId":4,"iconIdx":86},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l21.374 32.061v17.69h-48c-44.011 0-70.483 14.874-86.278 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h79.999v64h-80c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.304-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.613 53.456 30.349 35.626 38.106 81.35 33.446 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-80v-64h80c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 787.222c12.298-12.691 11.981-32.95-0.707-45.251-12.691-12.298-32.95-11.981-45.251 0.707l-41.021 42.326v-273.005c0-17.674-14.326-32-32-32s-32 14.326-32 32v273.005l-41.021-42.326c-12.301-12.688-32.56-13.005-45.251-0.707-12.688 12.301-13.005 32.56-0.707 45.251l96 99.050c6.029 6.218 14.32 9.728 22.979 9.728s16.95-3.51 22.979-9.728l96-99.050z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["download"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":226,"id":81,"name":"download","prevSize":32,"code":59723},"setIdx":0,"setId":4,"iconIdx":87},{"icon":{"paths":["M795.648 132.004c-25.027-25.027-65.603-25.027-90.63-0l-530.467 530.469c-9.577 9.574-15.873 21.939-17.985 35.318l-19.611 124.186c-1.386 8.771-0.942 17.299 1.006 25.261 7.597 31.037 38.083 53.44 72.291 48.038l124.184-19.613c13.379-2.112 25.744-8.41 35.322-17.984l530.467-530.47c12.512-12.513 18.768-28.914 18.768-45.316 0-10.379-2.506-20.757-7.517-30.15-2.906-5.451-6.656-10.57-11.251-15.164l-104.576-104.575zM630.675 296.979l119.658-119.658 104.576 104.574-119.658 119.657-104.576-104.573zM200.255 831.974l19.611-124.186 365.494-365.494 104.576 104.573-365.494 365.494-124.187 19.613z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["edit"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":227,"id":82,"name":"edit","prevSize":32,"code":59724},"setIdx":0,"setId":4,"iconIdx":88},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM353.226 720c8.963 0 17.526-3.53 24.272-9.437 21.603-18.918 42.64-31.958 62.701-40.509 36.563-15.59 71.805-17.107 104.794-9.939 37.632 8.176 72.659 27.808 102.109 51.341 6.726 5.376 14.995 8.544 23.606 8.544 30.218 0 45.616-34.256 22.397-53.594-36.912-30.742-82.79-57.59-134.522-68.832-44.794-9.734-93.67-7.632-143.485 13.606-28.79 12.275-57.232 30.653-85.024 55.933-21.572 19.619-6.010 52.886 23.152 52.886z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["emoji-bad-mood"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":228,"id":83,"name":"emoji-bad-mood","prevSize":32,"code":59725},"setIdx":0,"setId":4,"iconIdx":89},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM400.166 480c-35.347 0-64-28.653-64-64s28.653-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64zM688.166 416c0-35.347-28.653-64-64-64s-64 28.653-64 64c0 35.347 28.653 64 64 64s64-28.653 64-64zM384 640h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32s14.326-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["emoji-neutral-mood"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":229,"id":84,"name":"emoji-neutral-mood","prevSize":32,"code":59726},"setIdx":0,"setId":4,"iconIdx":90},{"icon":{"paths":["M330.074 644.886c-21.572-19.619-6.010-52.886 23.152-52.886 8.963 0 17.526 3.53 24.272 9.437 21.603 18.918 42.64 31.958 62.701 40.509 36.563 15.59 71.805 17.107 104.794 9.939 37.632-8.176 72.659-27.808 102.109-51.341 6.726-5.376 14.995-8.544 23.606-8.544 30.218 0 45.616 34.256 22.397 53.594-36.912 30.742-82.79 57.59-134.522 68.832-44.794 9.734-93.67 7.632-143.485-13.606-28.79-12.275-57.232-30.653-85.024-55.933z","M400.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M624.17 480c35.344 0 64-28.653 64-64s-28.656-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64z","M928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["emoji"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":230,"id":85,"name":"emoji","prevSize":32,"code":59727},"setIdx":0,"setId":4,"iconIdx":91},{"icon":{"paths":["M655.744 512c88.365 0 160-71.635 160-160s-71.635-160-160-160c-88.368 0-160 71.635-160 160 0 26.934 6.653 52.314 18.41 74.582l-11.914 11.914 0.128 0.131-299.135 299.136c-3.533 9.926-6.41 20.976-7.738 31.606-1.652 13.219-0.563 22.966 1.874 28.938 1.768 4.333 4.22 7.232 10.772 9.014 8.316 2.262 24.518 2.794 52.822-5.501 8.524-3.808 27.721-16.285 45.132-35.382 18.18-19.939 29.648-41.856 29.648-62.438 0-15.642 11.309-28.992 26.736-31.565l91.75-15.293c3.766-2.656 18.768-15.693 10.134-58.867-2.099-10.49 1.184-21.338 8.749-28.902l88.198-88.195c26.467 19.379 59.114 30.822 94.432 30.822zM439.571 410.915c-5.104-18.771-7.827-38.525-7.827-58.915 0-123.712 100.288-224 224-224 123.709 0 224 100.288 224 224s-100.291 224-224 224c-29.29 0-57.264-5.619-82.906-15.843l-43.008 43.008c7.158 65.494-23.99 104.534-55.968 115.194l-2.384 0.794-74.854 12.477c-7.085 31.405-25.174 58.122-43.235 77.933-23.123 25.357-50.958 44.627-69.762 52.15l-1.324 0.528-1.365 0.41c-34.714 10.416-64.73 13.19-89.594 6.429-26.782-7.286-44.33-24.784-53.228-46.586-8.23-20.163-8.473-42.282-6.126-61.062 2.402-19.216 7.899-37.958 14.042-53.315 1.61-4.022 4.020-7.677 7.084-10.742l286.456-286.458zM623.744 336c0 26.509 21.488 48 48 48 26.509 0 48-21.491 48-48s-21.491-48-48-48c-26.512 0-48 21.49-48 48z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["encrypted"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":231,"id":86,"name":"encrypted","prevSize":32,"code":59728},"setIdx":0,"setId":4,"iconIdx":92},{"icon":{"paths":["M536.89 64c233.677 0 423.11 189.433 423.11 423.11h-423.11v-423.11z","M64 536.89c0-233.678 189.433-423.112 423.11-423.112v423.112h423.11c0 233.677-189.43 423.11-423.11 423.11-233.677 0-423.11-189.434-423.11-423.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["engagement-dashboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":232,"id":87,"name":"engagement-dashboard","prevSize":32,"code":59729},"setIdx":0,"setId":4,"iconIdx":93},{"icon":{"paths":["M416 586.445v177.232l75.514-62.928c11.869-9.888 29.104-9.888 40.973 0l75.514 62.928v-177.232c-29.098 13.821-61.645 21.555-96 21.555s-66.902-7.734-96-21.555zM352 540.768v291.232c0 12.416 7.184 23.712 18.426 28.979 11.245 5.267 24.522 3.552 34.061-4.397l107.514-89.594 107.514 89.594c9.539 7.949 22.816 9.664 34.061 4.397 11.242-5.267 18.426-16.563 18.426-28.979v-291.232c39.59-40.403 64-95.734 64-156.768 0-123.712-100.288-224.001-224-224.001s-224 100.288-224 224.001c0 61.034 24.41 116.365 64 156.768zM416 512.013l-0.016-0.013c-38.854-29.19-63.984-75.661-63.984-128 0-88.366 71.635-160.001 160-160.001s160 71.635 160 160.001c0 52.339-25.13 98.81-63.984 128l-0.016 0.013c-26.742 20.083-59.981 31.987-96 31.987s-69.258-11.904-96-31.987z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["enterprise-feature"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":233,"id":88,"name":"enterprise-feature","prevSize":32,"code":59730},"setIdx":0,"setId":4,"iconIdx":94},{"icon":{"paths":["M500.64 128c213.35 0 386.336 172.985 386.336 386.336 0 192.87-141.254 352.707-325.974 381.664v-269.958h90.022l17.114-111.706h-107.136v-72.47c0-11.462 2.102-22.822 7.274-32.544 2.474-4.656 5.651-8.934 9.635-12.666 9.866-9.245 24.688-15.152 46.058-15.152h48.733v-95.080c0 0-44.224-7.552-86.493-7.552-84.698 0-141.258 49.313-145.651 138.907-0.182 3.738-0.275 7.546-0.275 11.424v85.133h-98.122v111.706h98.122v269.958c-184.721-29.011-325.978-188.848-325.978-381.664 0-213.351 172.985-386.336 386.336-386.336z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["facebook-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":30,"id":89,"name":"facebook-monochromatic","prevSize":32,"code":59731},"setIdx":0,"setId":4,"iconIdx":95},{"icon":{"paths":["M373.334 448c0-17.674 14.326-32 32-32h213.331c17.674 0 32 14.326 32 32s-14.326 32-32 32h-213.331c-17.674 0-32-14.326-32-32z","M405.334 544c-17.674 0-32 14.326-32 32s14.326 32 32 32h213.331c17.674 0 32-14.326 32-32s-14.326-32-32-32h-213.331z","M256 128c-17.673 0-32 14.327-32 32v704c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-501.744c0-6.672-2.083-13.174-5.962-18.602l-144.467-202.254c-6.006-8.409-15.706-13.4-26.038-13.4h-367.533zM736 372.509v459.491h-448v-640h319.066l128.934 180.509z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["file-document"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":29,"id":90,"name":"file-document","prevSize":32,"code":59732},"setIdx":0,"setId":4,"iconIdx":96},{"icon":{"paths":["M128 192c-17.673 0-32 14.327-32 32v576.019c0 17.674 14.327 32 32 32h768c17.674 0 32-14.326 32-32v-576.019c0-17.673-14.326-32-32-32h-768zM160 378.301v-122.301h149.333v122.301h-149.333zM160 442.301h149.333v141.722h-149.333v-141.722zM160 648.022h149.333v119.997h-149.333v-119.997zM373.334 768.019v-119.997h490.666v119.997h-490.666zM864 584.022h-490.666v-141.722h490.666v141.722zM864 378.301h-490.666v-122.301h490.666v122.301z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["file-sheet"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":28,"id":91,"name":"file-sheet","prevSize":32,"code":59733},"setIdx":0,"setId":4,"iconIdx":97},{"icon":{"paths":["M206.667 293.692c-30.421-42.402-0.116-101.442 52.070-101.442h518.572c51.174 0 81.706 57.026 53.334 99.615l-180.678 271.207v220.762c0 46.352-47.693 77.373-90.067 58.582l-121.424-53.85c-23.168-10.275-38.102-33.238-38.102-58.582v-166.304l-193.704-269.988zM777.309 256.334h-518.572l193.705 269.989c7.811 10.89 12.013 23.955 12.013 37.357v166.304l121.424 53.85v-220.762c0-12.646 3.741-25.008 10.752-35.533l180.678-271.205z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["filter"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":27,"id":92,"name":"filter","prevSize":32,"code":59734},"setIdx":0,"setId":4,"iconIdx":98},{"icon":{"paths":["M623.091 896c-2.806 0-5.296-0.624-7.168-0.938-62-16.858-102.816-39.648-145.811-80.858-55.149-54.010-85.37-125.814-85.37-202.301 0-65.875 56.704-119.571 126.496-119.571s126.496 53.696 126.496 119.571c0 34.963 31.469 63.373 69.792 63.373s69.789-28.41 69.789-63.373c0-135.808-119.642-246.637-266.701-246.637-104.998 0-200.338 57.133-243.334 145.795-14.332 29.347-21.498 63.066-21.498 100.842 0 28.72 2.492 73.363 24.925 131.744 2.804 7.181 2.492 14.675-0.623 21.856-3.116 6.867-9.035 11.862-16.201 14.358-2.804 1.251-6.231 1.562-9.659 1.562-11.84 0-22.433-7.181-26.484-18.106-19.005-50.266-28.353-99.904-28.353-151.728 0-46.205 9.036-88.352 26.795-125.504 52.343-108.019 167.936-177.638 294.432-177.638 178.528 0 323.718 135.804 323.718 302.828 0 65.875-56.704 119.571-126.806 119.571s-126.81-53.696-126.81-119.571c0-34.963-31.469-63.373-69.792-63.373-38.634 0-69.789 28.41-69.789 63.373 0 61.504 24.301 119.261 68.544 162.342 35.206 34.029 68.858 53.072 120.576 67.123 7.168 1.872 13.398 6.557 17.136 13.11 3.741 6.557 4.675 14.362 2.806 21.229-2.806 11.866-14.022 20.918-27.107 20.918zM426.803 888.195c-7.789 0-15.267-3.123-20.253-8.742-33.338-32.781-51.718-54.010-77.891-100.525-26.795-47.142-41.127-105.21-41.127-167.338 0-116.448 100.948-211.357 224.951-211.357s224.954 94.909 224.954 211.357c0 15.61-12.464 28.096-28.352 28.096-15.891 0-28.666-12.173-28.666-28.096 0-85.542-75.398-155.162-168.246-155.162s-168.246 69.619-168.246 155.162c0 52.448 11.84 100.528 34.272 139.552 23.366 41.52 38.947 59.005 68.858 88.662 10.902 11.238 10.902 28.723 0 39.648-5.92 5.933-13.088 8.742-20.253 8.742zM699.738 818.886c-47.36 0-88.797-11.862-123.382-34.963-59.197-39.651-94.717-103.962-94.717-172.333 0-15.61 12.464-28.099 28.352-28.099 15.891 0 28.355 12.49 28.355 28.099 0 49.638 26.17 96.781 69.789 125.501 25.238 16.861 55.149 24.976 91.603 24.976 7.789 0 22.432-0.934 38.010-3.744 1.558-0.314 3.427-0.314 4.986-0.314 13.709 0 25.238 9.99 27.728 23.414 1.248 7.181-0.31 14.672-4.362 20.605-4.362 6.243-10.902 10.614-18.694 11.862-23.366 4.685-43.93 4.995-47.667 4.995zM188.765 435.824c-5.608 0-11.217-1.562-16.202-4.995-6.543-4.058-10.593-10.614-12.151-18.106-1.246-7.494 0.311-14.986 4.985-21.232 38.635-53.696 87.862-95.843 146.125-125.501 60.132-30.595 129.613-46.829 200.961-46.829 71.037 0 140.205 15.922 200.029 46.205 58.573 29.659 107.802 71.492 146.125 124.567 4.362 5.93 6.23 13.424 4.986 20.915-1.248 7.494-5.61 14.048-11.84 18.419-4.986 3.437-10.595 4.995-16.515 4.995-9.034 0-17.757-4.371-23.056-11.862-33.338-45.891-75.709-82.109-125.562-107.083-52.342-26.224-112.787-40.273-174.477-40.273-62.314 0-122.758 14.049-175.101 40.585-49.852 25.913-92.537 62.128-126.186 108.643-3.739 6.87-12.463 11.552-22.121 11.552zM733.696 239.141c-4.672 0-9.347-1.249-13.395-3.434-71.35-35.902-133.354-51.512-207.504-51.512-74.467 0-144.256 17.483-207.817 51.824-4.050 2.185-8.724 3.122-13.397 3.122-10.282 0-19.629-5.62-24.925-14.361-3.739-6.556-4.673-14.361-2.492-21.541s7.166-13.424 13.709-16.859c72.594-38.712 151.733-58.38 234.924-58.38 82.563 0 154.848 17.795 233.987 58.068 6.854 3.434 11.84 9.366 14.33 16.859 2.182 7.18 1.248 14.673-2.179 21.229-4.986 9.054-14.643 14.985-25.238 14.985z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["fingerprint"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":26,"id":93,"name":"fingerprint","prevSize":32,"code":59735},"setIdx":0,"setId":4,"iconIdx":99},{"icon":{"paths":["M266.667 170.664c0-17.673 14.327-32 32-32h500.623c12.122 0 23.2 6.848 28.621 17.689s4.253 23.814-3.021 33.511l-122.134 162.843 122.134 162.845c7.274 9.696 8.442 22.672 3.021 33.51-5.421 10.842-16.499 17.69-28.621 17.69h-468.624v286.579c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-682.667zM330.666 502.752h404.624l-98.134-130.845c-8.531-11.376-8.531-27.021 0-38.4l98.134-130.843h-404.624v300.088z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["flag"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":25,"id":94,"name":"flag","prevSize":32,"code":59736},"setIdx":0,"setId":4,"iconIdx":100},{"icon":{"paths":["M140.020 213.336c0-17.673 14.327-32 32-32h234.057c7.181 0 14.157 2.416 19.798 6.86l88.813 69.94h339.997c17.674 0 32 14.327 32 32v520.533c0 17.674-14.326 32-32 32h-682.665c-17.673 0-32-14.326-32-32v-597.333zM204.020 245.336v533.333h618.665v-456.534h-319.085c-7.181 0-14.154-2.415-19.798-6.858l-88.813-69.94h-190.969z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["folder"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":24,"id":95,"name":"folder","prevSize":32,"code":59737},"setIdx":0,"setId":4,"iconIdx":101},{"icon":{"paths":["M370.704 544c0-17.674-14.326-32-32-32s-31.999 14.326-31.999 32v32h-32c-17.673 0-32 14.326-32 32s14.327 32 32 32h32v32c0 17.674 14.325 32 31.999 32s32-14.326 32-32v-32h32c17.674 0 32-14.326 32-32s-14.326-32-32-32h-32v-32z","M746.704 624c30.928 0 56-25.072 56-56s-25.072-56-56-56c-30.928 0-56 25.072-56 56s25.072 56 56 56z","M674.704 664c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-30.928 25.072-56 56-56s56 25.072 56 56z","M706.704 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v96h-128c-17.674 0-32 14.327-32 32v96h-191.999c-106.038 0-192 85.962-192 192v128c0 106.038 85.961 192 192 192h447.999c106.038 0 192-85.962 192-192v-128c0-106.038-85.962-192-192-192h-192v-64h128c17.674 0 32-14.327 32-32v-128zM866.704 544v128c0 70.691-57.306 128-128 128h-447.999c-70.692 0-128-57.309-128-128v-128c0-70.691 57.308-128 128-128h447.999c70.694 0 128 57.309 128 128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["game"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":23,"id":96,"name":"game","prevSize":32,"code":59738},"setIdx":0,"setId":4,"iconIdx":102},{"icon":{"paths":["M494.31 170.648l23.037 24.005 23.629-24.005 74.669 0.041v75.854h74.669v75.856h74.666v26.518h0.003v504.419h-522.678v-682.689h252.006zM540.976 246.503h-224.004v530.979h373.341v-379.229h-149.338v-151.75z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["giphy-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":21,"id":97,"name":"giphy-monochromatic","prevSize":32,"code":59739},"setIdx":0,"setId":4,"iconIdx":103},{"icon":{"paths":["M634.803 170.664h-256.112l-264.387 460.802 124.984 221.866h534.916l124.982-221.866-264.384-460.802zM367.814 631.466l138.931-239.789 138.934 239.789h-277.866z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["google-drive-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":19,"id":98,"name":"google-drive-monochromatic","prevSize":32,"code":59756},"setIdx":0,"setId":4,"iconIdx":104},{"icon":{"paths":["M129.354 272c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32s-14.326 32-32 32h-704c-17.673 0-32-14.327-32-32zM289.354 432c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM289.354 752c0 17.674-14.327 32-32 32s-32-14.326-32-32c0-17.674 14.327-32 32-32s32 14.326 32 32zM449.354 624c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.326-32 32s14.326 32 32 32zM385.354 400c-17.674 0-32 14.326-32 32s14.326 32 32 32h480c17.674 0 32-14.326 32-32s-14.326-32-32-32h-480zM353.354 752c0-17.674 14.326-32 32-32h480c17.674 0 32 14.326 32 32s-14.326 32-32 32h-480c-17.674 0-32-14.326-32-32zM577.354 560c-17.674 0-32 14.326-32 32s14.326 32 32 32h288c17.674 0 32-14.326 32-32s-14.326-32-32-32h-288z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["group-by-type"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":150,"id":99,"name":"group-by-type","prevSize":32,"code":59757},"setIdx":0,"setId":4,"iconIdx":105},{"icon":{"paths":["M170.668 245.336c0-17.673 14.327-32 32-32h640.846c17.674 0 32 14.327 32 32s-14.326 32-32 32h-640.846c-17.673 0-32-14.327-32-32zM170.668 501.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32zM170.668 757.334c0-17.67 14.327-32 32-32h640.846c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32h-640.846c-17.673 0-32-14.326-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["hamburguer"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":148,"id":100,"name":"hamburguer","prevSize":32,"code":59758},"setIdx":0,"setId":4,"iconIdx":106},{"icon":{"paths":["M832 512c0 176.73-143.27 320-320 320s-320-143.27-320-320h-64c0 212.077 171.923 384 384 384s384-171.923 384-384c0-212.077-171.923-384-384-384-123.718 0-233.772 58.508-304 149.364v-101.364c0-17.673-14.327-32-32-32s-32 14.327-32 32v192c0 17.674 14.327 32 32 32h176c17.674 0 32-14.326 32-32s-14.326-32-32-32h-107.295c57.24-86.756 155.583-144 267.295-144 176.73 0 320 143.27 320 320z","M544 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v224c0 8.486 3.373 16.627 9.373 22.627l96 96c12.496 12.496 32.758 12.496 45.254 0s12.496-32.758 0-45.254l-86.627-86.627v-210.746z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["history"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":145,"id":101,"name":"history","prevSize":32,"code":59759},"setIdx":0,"setId":4,"iconIdx":107},{"icon":{"paths":["M522.042 195.354l224.464 260.044v366.234c0 5.856-4.752 10.605-10.614 10.605h-136.416v-149.821c0-23.424-19.014-42.413-42.47-42.413h-85.955c-23.453 0-42.467 18.989-42.467 42.413v149.821h-136.41c-5.864 0-10.617-4.749-10.617-10.605v-366.307l224.403-259.971c4.237-4.907 11.85-4.907 16.083 0zM560.57 895.856h175.322c41.043 0 74.32-33.232 74.32-74.224v-244.205h56.227c12.454 0 23.766-7.251 28.954-18.557 5.19-11.309 3.302-24.602-4.829-34.022l-320.272-371.033c-29.648-34.347-82.934-34.347-112.582 0l-320.27 371.033c-8.132 9.421-10.020 22.714-4.831 34.022 5.188 11.306 16.501 18.557 28.956 18.557h56.288v244.205c0 40.992 33.274 74.224 74.32 74.224h175.316c1.174 0.096 2.362 0.147 3.562 0.147h85.955c1.2 0 2.39-0.051 3.565-0.147z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["home"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":146,"id":102,"name":"home","prevSize":32,"code":59760},"setIdx":0,"setId":4,"iconIdx":108},{"icon":{"paths":["M406.685 405.334c0 47.126-38.205 85.331-85.334 85.331-47.127 0-85.332-38.205-85.332-85.331 0-47.13 38.205-85.334 85.332-85.334 47.13 0 85.334 38.205 85.334 85.334z","M97.352 192c0-17.673 14.327-32 32-32h767.999c17.674 0 32 14.327 32 32v640c0 17.674-14.326 32-32 32h-767.999c-17.673 0-32-14.326-32-32v-640zM161.352 764.163l151.704-176.989c9.271-10.813 24.57-14.202 37.536-8.307l153.123 69.603 160.474-204.24c6.010-7.651 15.174-12.15 24.902-12.23s18.963 4.272 25.098 11.821l151.162 186.048v-405.869h-703.999v540.163zM214.927 800h650.423v-68.64l-175.581-216.099-166.781 212.269-176.989-80.448-131.073 152.918z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["image"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":147,"id":103,"name":"image","prevSize":32,"code":59761},"setIdx":0,"setId":4,"iconIdx":109},{"icon":{"paths":["M512 873.027c-199.389 0-361.026-161.635-361.026-361.024s161.636-361.026 361.026-361.026c199.389 0 361.024 161.637 361.024 361.026s-161.635 361.024-361.024 361.024zM512 938.669c235.642 0 426.666-191.024 426.666-426.666s-191.024-426.667-426.666-426.667c-235.642 0-426.667 191.025-426.667 426.667s191.025 426.666 426.667 426.666zM544.819 347.901c0 18.125-14.694 32.819-32.819 32.819-18.128 0-32.822-14.694-32.822-32.819 0-18.128 14.694-32.821 32.822-32.821 18.125 0 32.819 14.693 32.819 32.821zM512 413.542c-18.128 0-32.822 14.694-32.822 32.819v229.744c0 18.125 14.694 32.819 32.822 32.819 18.125 0 32.819-14.694 32.819-32.819v-229.744c0-18.125-14.694-32.819-32.819-32.819z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["info"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":144,"id":104,"name":"info","prevSize":32,"code":59762},"setIdx":0,"setId":4,"iconIdx":110},{"icon":{"paths":["M512 864c-194.404 0-352-157.597-352-352s157.596-352 352-352c194.403 0 352 157.596 352 352s-157.597 352-352 352zM512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.75 0-416 186.25-416 416s186.25 416 416 416zM662.627 361.373c12.496 12.496 12.496 32.758 0 45.254l-105.373 105.373 105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-105.373-105.373-105.373 105.373c-12.496 12.496-32.758 12.496-45.254 0s-12.496-32.758 0-45.254l105.373-105.373-105.373-105.373c-12.496-12.496-12.496-32.758 0-45.254s32.758-12.496 45.254 0l105.373 105.373 105.373-105.373c12.496-12.496 32.758-12.496 45.254 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["input-clear"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":143,"id":105,"name":"input-clear","prevSize":32,"code":59763},"setIdx":0,"setId":4,"iconIdx":111},{"icon":{"paths":["M384 288c-17.674 0-32 14.327-32 32s14.326 32 32 32h256c17.674 0 32-14.326 32-32s-14.326-32-32-32h-256z","M352 448c0-17.674 14.326-32 32-32h256c17.674 0 32 14.326 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M512 640c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M224 224v576c0 35.347 28.654 64 64 64h448c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-448c-35.346 0-64 28.654-64 64zM288 800v-576h448v576h-448z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["instance"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":18,"id":106,"name":"instance","prevSize":32,"code":59764},"setIdx":0,"setId":4,"iconIdx":112},{"icon":{"paths":["M544 352c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.674 0-32 14.327-32 32s14.326 32 32 32zM559.61 436.995c2.755-17.456-9.162-33.843-26.618-36.598-17.456-2.758-33.843 9.162-36.598 26.618l-48 304c-2.758 17.456 9.158 33.843 26.618 36.598 17.456 2.755 33.84-9.162 36.598-26.618l48-304z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["italic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":17,"id":107,"name":"italic","prevSize":32,"code":59765},"setIdx":0,"setId":4,"iconIdx":113},{"icon":{"paths":["M497.136 169.372c12.499 12.497 12.499 32.758 0 45.255l-35.958 35.96c1.078-0.016 2.163-0.025 3.245-0.025h191.152c115.11 0 208.426 93.316 208.426 208.426 0 115.107-93.315 208.422-208.426 208.422h-15.574v-64h15.574c79.763 0 144.426-64.659 144.426-144.422 0-79.766-64.662-144.426-144.426-144.426h-191.152c-1.030 0-2.058 0.011-3.082 0.032l35.795 35.796c12.499 12.499 12.499 32.758 0 45.258-12.496 12.496-32.758 12.496-45.254 0l-90.509-90.511c-12.496-12.497-12.496-32.758 0-45.255l90.509-90.51c12.496-12.497 32.758-12.497 45.254 0zM201.318 500.746h56.159v325.818h-59.023v-268.387h-1.909l-76.204 48.682v-54.090l80.977-52.022zM570.41 719.494c0 64.749-48.045 111.523-116.931 111.523-63.638 0-110.886-38.979-112.48-93.069h57.274c2.070 26.726 25.773 45.341 55.206 45.341 34.838 0 59.978-25.933 59.818-62.365 0.16-36.909-25.613-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.024-168h188.998v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.184 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-backward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":16,"id":108,"name":"jump-backward","prevSize":32,"code":59766},"setIdx":0,"setId":4,"iconIdx":114},{"icon":{"paths":["M494.861 169.372c-12.496 12.497-12.496 32.758 0 45.255l35.962 35.96c-1.082-0.016-2.163-0.025-3.248-0.025h-191.149c-115.111 0-208.426 93.316-208.426 208.426 0 115.107 93.315 208.422 208.426 208.422h15.574v-64h-15.574c-79.764 0-144.426-64.659-144.426-144.422 0-79.766 64.661-144.426 144.426-144.426h191.149c1.030 0 2.061 0.011 3.085 0.032l-35.798 35.796c-12.496 12.499-12.496 32.758 0 45.258 12.499 12.496 32.758 12.496 45.258 0l90.509-90.511c12.496-12.497 12.496-32.758 0-45.255l-90.509-90.51c-12.499-12.497-32.758-12.497-45.258 0zM521.318 500.746h56.157v325.818h-59.021v-268.387h-1.91l-76.205 48.682v-54.090l80.979-52.022zM890.41 719.494c0 64.749-48.048 111.523-116.934 111.523-63.635 0-110.886-38.979-112.477-93.069h57.274c2.067 26.726 25.773 45.341 55.203 45.341 34.842 0 59.978-25.933 59.821-62.365 0.157-36.909-25.616-63.318-61.411-63.475-19.568-0.16-40.25 7.955-51.226 20.045l-53.296-8.749 17.021-168h189.002v49.318h-140.16l-9.386 86.384h1.91c12.090-14.317 35.475-24.816 61.885-24.816 59.181 0 102.774 45.181 102.774 107.862z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":15,"id":109,"name":"jump-forward","prevSize":32,"code":59767},"setIdx":0,"setId":4,"iconIdx":115},{"icon":{"paths":["M769.296 649.373c12.496 12.496 12.496 32.758 0 45.254l-192 192c-12.499 12.496-32.758 12.496-45.258 0l-192-192c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.258 0l137.37 137.373v-578.746h-192v192c0 17.674-14.325 32-31.999 32s-32-14.326-32-32v-224c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v610.746l137.373-137.373c12.499-12.496 32.758-12.496 45.258 0z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["jump-to-message"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":14,"id":110,"name":"jump-to-message","prevSize":32,"code":59768},"setIdx":0,"setId":4,"iconIdx":116},{"icon":{"paths":["M576 256c0 35.346-28.653 64-64 64s-64-28.654-64-64c0-35.346 28.653-64 64-64s64 28.654 64 64z","M576 512c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z","M576 768c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["kebab"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":13,"id":111,"name":"kebab","prevSize":32,"code":59769},"setIdx":0,"setId":4,"iconIdx":117},{"icon":{"paths":["M160 224c-35.346 0-64 28.654-64 64v448c0 35.347 28.654 64 64 64h704c35.347 0 64-28.653 64-64v-448c0-35.346-28.653-64-64-64h-704zM160 288h704v448h-704v-448zM256 352c-17.673 0-32 14.326-32 32s14.327 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM256 512c0-17.674 14.327-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.673 0-32-14.326-32-32zM480 480c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM640 512c0-17.674 14.326-32 32-32h64c17.674 0 32 14.326 32 32s-14.326 32-32 32h-64c-17.674 0-32-14.326-32-32zM480 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64zM320 640c0-17.674 14.326-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-320c-17.674 0-32-14.326-32-32zM704 352c-17.674 0-32 14.326-32 32s14.326 32 32 32h64c17.674 0 32-14.326 32-32s-14.326-32-32-32h-64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["keyboard"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":12,"id":112,"name":"keyboard","prevSize":32,"code":59770},"setIdx":0,"setId":4,"iconIdx":118},{"icon":{"paths":["M681.904 256c0-17.673-14.326-32-32-32s-32 14.327-32 32v56.875l-80.346 13.998c-17.411 3.034-29.069 19.61-26.035 37.021 3.034 17.408 19.61 29.066 37.021 26.032l69.36-12.086v69.373c-30.384 6.851-60.461 20.074-84.154 43.139-27.923 27.184-44.070 65.238-44.070 113.808 0 25.741 6.262 48.262 18.451 66.621 12.186 18.349 29.062 30.682 47.251 38 35.357 14.221 76.72 10.173 108.128-4.579l1.206-0.566c31.126-14.621 62.493-29.354 90.723-57.818 21.325-21.507 39.709-49.539 56.848-88.678 5.654 9.498 9.594 20.966 10.285 34.339 1.632 31.526-14.275 82.813-87.955 153.418-12.758 12.227-13.19 32.483-0.963 45.245 12.227 12.758 32.486 13.19 45.245 0.963 80.192-76.851 110.586-145.034 107.59-202.934-2.986-57.658-38.586-96.022-70.675-113.955-20.774-13.014-50.214-22.826-81.216-28.288-16.624-2.931-34.47-4.749-52.694-4.995v-74.243l101.718-17.722c17.411-3.034 29.066-19.61 26.032-37.019-3.034-17.411-19.606-29.066-37.018-26.032l-90.733 15.809v-45.724zM578.394 536.208c10.163-9.891 23.565-17.475 39.51-22.704v138.653c-13.443 2.547-27.485 1.731-38.634-2.752-7.712-3.104-13.658-7.757-17.824-14.029-4.157-6.262-7.766-15.997-7.766-31.216 0-33.35 10.563-54.176 24.714-67.952zM709.994 600.752c-8.682 8.755-17.782 15.706-28.090 22.074v-117.888c14.125 0.24 28.224 1.661 41.587 4.016 13.587 2.397 25.683 5.622 35.763 9.165-16.88 42.038-33.069 66.304-49.261 82.634zM247.704 565.334h98.386l-49.193-184.883-49.193 184.883zM390.851 733.562l-27.734-104.227h-132.442l-27.732 104.227c-4.544 17.078-22.073 27.242-39.152 22.694-17.079-4.544-27.24-22.070-22.696-39.152l106.323-399.598c13.494-50.714 85.462-50.713 98.956 0l106.323 399.598c4.544 17.082-5.616 34.608-22.694 39.152-17.078 4.547-34.608-5.616-39.152-22.694z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["language"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":11,"id":113,"name":"language","prevSize":32,"code":59771},"setIdx":0,"setId":4,"iconIdx":119},{"icon":{"paths":["M439.274 704.374c0-33.645 26.278-47.677 72.726-47.677s72.73 14.032 72.73 47.677c0 32.96-13.19 111.069-23.914 149.76-4.963 17.808-22.080 25.171-48.816 25.171s-43.85-7.363-48.813-25.174c-10.717-38.666-23.914-116.688-23.914-149.757zM616.778 870.374l0.026-0.090c6.176-22.291 12.566-53.869 17.386-83.453 4.688-28.787 8.72-60.707 8.72-82.458 0-35.891-15.811-67.802-46.797-87.114-26.035-16.227-57.152-19.926-84.112-19.926-26.957 0-58.077 3.699-84.112 19.926-30.982 19.312-46.797 51.222-46.797 87.114 0 21.805 4.035 53.728 8.726 82.515 4.819 29.578 11.21 61.123 17.379 83.392l0.026 0.086c7.402 26.557 24.982 45.664 46.87 56.467 19.472 9.61 40.426 11.834 57.907 11.834 17.485 0 38.435-2.224 57.907-11.83 21.888-10.8 39.469-29.907 46.87-56.464zM459.635 460.8c0-28.275 23.446-51.2 52.365-51.2s52.365 22.925 52.365 51.2c0 28.278-23.446 51.2-52.365 51.2s-52.365-22.922-52.365-51.2zM512 341.334c-67.478 0-122.182 53.488-122.182 119.466 0 65.981 54.704 119.469 122.182 119.469s122.182-53.488 122.182-119.469c0-65.978-54.704-119.466-122.182-119.466zM677.802 537.254c-6.662 13.792-3.882 31.11 6.278 42.573 14.086 15.894 39.85 17.939 50.205-0.602 19.642-35.174 30.806-75.526 30.806-118.426 0-136.672-113.315-247.465-253.091-247.465-139.779 0-253.092 110.793-253.092 247.465 0 42.899 11.164 83.251 30.806 118.426 10.354 18.541 36.119 16.496 50.205 0.602 10.16-11.462 12.938-28.781 6.275-42.573-11.203-23.187-17.469-49.104-17.469-76.454 0-98.97 82.054-179.199 183.274-179.199s183.27 80.229 183.27 179.199c0 27.35-6.262 53.267-17.469 76.454zM730.16 699.795c-0.304-10.659 3.542-21.072 10.928-28.762 52.771-54.957 85.094-128.902 85.094-210.234 0-169.661-140.666-307.199-314.182-307.199s-314.182 137.538-314.182 307.199c0 81.331 32.323 155.28 85.093 210.234 7.386 7.69 11.234 18.102 10.928 28.762-0.833 29.018-31.273 47.917-52.121 27.715-70.223-68.042-113.718-162.41-113.718-266.71 0-207.363 171.923-375.465 384-375.465s384 168.102 384 375.465c0 104.304-43.498 198.672-113.722 266.714-20.848 20.202-51.286 1.302-52.118-27.718z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["live-streaming"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":9,"id":115,"name":"live-streaming","prevSize":32,"code":59773},"setIdx":0,"setId":4,"iconIdx":120},{"icon":{"paths":["M700.144 361.891c4.685-24.973 34.704-34.093 49.13-13.171 31.994 46.403 50.726 102.653 50.726 163.28s-18.733 116.88-50.726 163.283c-14.426 20.922-44.445 11.802-49.13-13.174l-1.706-9.101c-1.581-8.429 0.384-17.082 4.858-24.403 20.749-33.965 32.704-73.888 32.704-116.605 0-42.714-11.955-82.637-32.704-116.605-4.474-7.318-6.438-15.971-4.858-24.4l1.706-9.104z","M320.704 395.395c-20.748 33.968-32.704 73.891-32.704 116.605 0 42.717 11.956 82.64 32.704 116.605 4.474 7.322 6.438 15.974 4.858 24.403l-1.706 9.101c-4.684 24.976-34.705 34.096-49.128 13.174-31.994-46.403-50.728-102.656-50.728-163.283s18.733-116.877 50.728-163.28c14.424-20.922 44.444-11.802 49.128 13.171l1.706 9.104c1.581 8.429-0.384 17.082-4.858 24.4z","M728.765 209.256l-0.515 2.747c-2.234 11.911 2.534 23.967 11.763 31.821 75.866 64.565 123.987 160.751 123.987 268.175 0 107.427-48.122 203.613-123.987 268.176-9.229 7.856-13.997 19.914-11.763 31.824l0.515 2.746c4.192 22.362 29.69 33.194 47.261 18.746 92.794-76.294 151.974-191.981 151.974-321.491 0-129.507-59.181-245.193-151.974-321.489-17.571-14.448-43.069-3.615-47.261 18.745z","M283.986 243.825c9.228-7.854 13.998-19.911 11.764-31.821l-0.515-2.747c-4.192-22.359-29.69-33.193-47.262-18.745-92.793 76.296-151.973 191.981-151.973 321.489 0 129.51 59.18 245.197 151.973 321.491 17.572 14.448 43.070 3.616 47.262-18.746l0.515-2.746c2.233-11.91-2.536-23.968-11.764-31.824-75.864-64.563-123.986-160.749-123.986-268.176 0-107.424 48.122-203.61 123.986-268.175z","M608 512c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.018 42.979-96 96-96s96 42.982 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["live"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":8,"id":116,"name":"live","prevSize":32,"code":59774},"setIdx":0,"setId":4,"iconIdx":121},{"icon":{"paths":["M397.011 527.334c26.576 0 48.122-21.587 48.122-48.214s-21.546-48.214-48.122-48.214c-26.576 0-48.118 21.587-48.118 48.214s21.542 48.214 48.118 48.214z","M589.491 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M733.853 479.12c0 26.627-21.542 48.214-48.118 48.214s-48.122-21.587-48.122-48.214c0-26.627 21.546-48.214 48.122-48.214s48.118 21.587 48.118 48.214z","M88.039 813.683l119.625 31.283c85.312 22.307 173.45-16.256 238.691-79.709 29.501 4.794 59.875 7.242 90.678 7.242 218.294 0 404.339-122.864 404.339-294.518 0-171.664-186.042-294.52-404.339-294.52-218.314 0-404.351 122.852-404.34 294.523 0 65.072 27.642 125.014 75.655 173.587-2.847 24.835-14.596 44.73-36.049 68.55l-84.261 93.562zM537.034 258.997c183.13 0 331.6 98.043 331.6 218.984 0 120.931-148.47 218.982-331.6 218.982-40.781 0-79.834-4.877-115.91-13.763-36.669 45.6-117.335 109.008-195.697 88.518 25.489-28.304 63.251-76.131 55.168-154.909-46.968-37.779-75.162-86.134-75.162-138.829-0.008-120.95 148.461-218.984 331.6-218.984z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["livechat-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":31,"id":117,"name":"livechat-monochromatic","prevSize":32,"code":59775},"setIdx":0,"setId":4,"iconIdx":122},{"icon":{"paths":["M341.334 778.672c-17.674 0-32 14.326-32 32s14.326 32 32 32h341.334c17.674 0 32-14.326 32-32s-14.326-32-32-32h-341.334zM85.335 298.672c0-70.692 57.308-128 128-128h597.334c70.691 0 128 57.308 128 128v298.666c0 70.694-57.309 128-128 128h-597.334c-70.692 0-128-57.306-128-128v-298.666zM213.335 234.672c-35.346 0-64 28.654-64 64v298.666c0 35.347 28.654 64 64 64h597.334c35.344 0 64-28.653 64-64v-298.666c0-35.347-28.656-64-64-64h-597.334zM256 320c0-11.782 9.551-21.333 21.333-21.333h170.667c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.667c-11.782 0-21.333-9.552-21.333-21.334zM277.333 554.666c-11.782 0-21.333 9.552-21.333 21.334s9.551 21.334 21.333 21.334h85.332c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-85.332zM554.666 320c0-11.782 9.552-21.333 21.334-21.333h170.666c11.782 0 21.334 9.551 21.334 21.333s-9.552 21.334-21.334 21.334h-170.666c-11.782 0-21.334-9.552-21.334-21.334zM448 554.666c-11.782 0-21.334 9.552-21.334 21.334s9.552 21.334 21.334 21.334h298.666c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-298.666zM256 448c0-11.782 9.551-21.334 21.333-21.334h213.332c11.782 0 21.334 9.552 21.334 21.334s-9.552 21.334-21.334 21.334h-213.332c-11.782 0-21.333-9.552-21.333-21.334zM618.666 426.666c-11.782 0-21.331 9.552-21.331 21.334s9.549 21.334 21.331 21.334h128c11.782 0 21.334-9.552 21.334-21.334s-9.552-21.334-21.334-21.334h-128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["log-view"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":33,"id":119,"name":"log-view","prevSize":32,"code":59778},"setIdx":0,"setId":4,"iconIdx":123},{"icon":{"paths":["M176 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM521.373 329.373c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.254l-105.373 105.373h418.746c17.674 0 32 14.326 32 32s-14.326 32-32 32h-418.746l105.373 105.373c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0l-160-160c-12.496-12.496-12.496-32.758 0-45.254l160-160z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["login"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":34,"id":120,"name":"login","prevSize":32,"code":59779},"setIdx":0,"setId":4,"iconIdx":124},{"icon":{"paths":["M268.099 96c-17.673 0-32 14.327-32 32v768c0 17.674 14.327 32 32 32h512c17.674 0 32-14.326 32-32v-96c0-17.674-14.326-32-32-32s-32 14.326-32 32v64h-448v-704h448v64c0 17.673 14.326 32 32 32s32-14.327 32-32v-96c0-17.673-14.326-32-32-32h-512zM994.726 489.373l-160-160c-12.496-12.497-32.758-12.497-45.254 0s-12.496 32.758 0 45.254l105.373 105.373h-418.746c-17.674 0-32 14.326-32 32s14.326 32 32 32h418.746l-105.373 105.373c-12.496 12.496-12.496 32.758 0 45.254s32.758 12.496 45.254 0l160-160c12.496-12.496 12.496-32.758 0-45.254z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["logout"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":35,"id":121,"name":"logout","prevSize":32,"code":59780},"setIdx":0,"setId":4,"iconIdx":125},{"icon":{"paths":["M192 736h640v-448h-640v448zM128 256c0-17.673 14.327-32 32-32h704c17.674 0 32 14.327 32 32v512c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512zM305.304 389.082c-14.866-9.555-34.665-5.251-44.222 9.613-9.557 14.867-5.253 34.666 9.613 44.224l241.304 155.123 241.306-155.123c14.864-9.558 19.168-29.357 9.613-44.224-9.558-14.864-29.357-19.168-44.224-9.613l-206.694 132.877-206.696-132.877z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mail"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":36,"id":122,"name":"mail","prevSize":32,"code":59781},"setIdx":0,"setId":4,"iconIdx":126},{"icon":{"paths":["M302.769 192h418.463l23.187 72.727h-0.211l23.792 63.999c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818c0-18.476-14.326-33.454-32-33.454s-32 14.978-32 33.454c0 41.27-31.306 69.818-64 69.818s-64-28.547-64-69.818l23.794-63.999h-0.213l23.188-72.727zM212.406 264.727l36.491-114.448c4.231-13.27 16.56-22.279 30.488-22.279h465.23c13.93 0 26.259 9.009 30.49 22.279l56.896 178.447c0 33.939-12.083 64.925-32 88.515v350.778c0 53.018-42.979 96-96 96h-384c-53.019 0-96-42.982-96-96v-350.778c-19.916-23.59-32-54.576-32-88.515l20.406-63.999zM288 458.33v309.69c0 17.67 14.327 32 32 32h128v-192.019h128v192.019h128c17.674 0 32-14.33 32-32v-309.69c-10.227 2.752-20.95 4.214-32 4.214-38.23 0-72.547-17.52-96-45.302-23.453 27.782-57.77 45.302-96 45.302s-72.547-17.52-96-45.302c-23.453 27.782-57.77 45.302-96 45.302-11.050 0-21.772-1.462-32-4.214z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["marketplace"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":37,"id":123,"name":"marketplace","prevSize":32,"code":59782},"setIdx":0,"setId":4,"iconIdx":127},{"icon":{"paths":["M773.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M517.072 576c-35.344 0-64-28.653-64-64s28.656-64 64-64c35.347 0 64 28.653 64 64s-28.653 64-64 64z","M261.073 576c-35.346 0-64-28.653-64-64s28.654-64 64-64c35.346 0 63.999 28.653 63.999 64s-28.652 64-63.999 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["meatballs"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":38,"id":124,"name":"meatballs","prevSize":32,"code":59783},"setIdx":0,"setId":4,"iconIdx":128},{"icon":{"paths":["M651.36 116.071c-57.242-19.989-105.792-20.069-138.358-20.071v64l-1.002-64c-92.006 0.342-297.345 47.824-381.242 242.995-17.897 38.97-34.758 103.344-34.758 173.005 0 69.958 17.020 146.285 52.216 207.875 23.229 40.653 92.799 131.376 191.179 173.536 94.861 40.656 206.368 52.349 296.49 16.301 16.41-6.563 24.39-25.187 17.827-41.597s-25.187-24.39-41.597-17.827c-69.878 27.952-163.171 20.445-247.51-15.699-80.819-34.64-141.384-112.451-160.821-146.464-28.804-50.41-43.784-115.418-43.784-176.125 0-60.765 15.020-116.182 29.055-146.589l0.184-0.4 0.173-0.406c69.507-162.181 243.823-204.604 323.589-204.605 31.594 0.002 70.877 0.296 117.258 16.493 46.147 16.114 101.389 48.779 161.824 116.767 43.658 49.115 63.533 114.977 69.389 177.713 5.891 63.12-2.854 118.189-11.546 142.093-6.4 17.6-20.429 45.44-59.392 45.699-18.259-0.806-72.822-14.672-83.12-69.568v-235.062c0-17.674-3.414-34.134-29.014-34.134-19.338 0-26.454 16.461-26.454 34.134v34.131c-35.181-39.859-95.402-68.266-152.746-68.266-106.038 0-192 85.962-192 192s85.962 192 192 192c62.179 0 117.658-29.555 152.746-75.386 25.715 71.078 102.57 93.027 137.014 94.134l0.515 0.016h0.512c82.643 0 111.715-64.806 120.086-87.83 12.64-34.762 21.674-99.696 15.12-169.907-6.589-70.595-29.379-151.401-85.277-214.287-66.902-75.265-131.075-114.597-188.557-134.67zM627.2 512c0 70.691-57.309 128-128 128s-128-57.309-128-128c0-70.691 57.309-128 128-128s128 57.309 128 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mention"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":142,"id":125,"name":"mention","prevSize":32,"code":59784},"setIdx":0,"setId":4,"iconIdx":129},{"icon":{"paths":["M477.84 128c104.256 0 181.251 29.018 237.494 70.652l-44.317 44.317c-45.52-31.22-107.747-53.057-193.178-53.057-129.725 0-207.83 53.576-254.529 118.696-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-7.328 80.928 13.761 143.126 51.784 190.499l-43.879 43.878c-50.179-59.901-78.131-139.043-69.441-238.595 0.276-63.411 19.117-157.053 75.696-235.948 58.132-81.063 154.749-144.433 304.573-144.433zM822.848 332.499l-47.008 47.008c16.502 42.634 20.608 78.525 20.608 89.011v0.179c0 19.517 0 31.792-6.621 56.17-7.094 26.109-21.738 65.648-52.554 137.834-5.699 13.357-2.794 25.981 1.261 34.435 3.834 7.99 9.562 14.403 14.595 19.184 10.227 9.712 24.253 18.842 38.544 26.867 7.888 4.429 18.298 8.995 27.613 13.078l1.843 0.81c10.554 4.634 20.726 9.146 29.613 13.894 3.427 1.834 6.298 3.517 8.672 5.030-5.104 3.229-12.035 6.883-20.941 10.765-22.96 10.003-55.328 19.939-93.888 28.128-77.12 16.371-174.73 24.858-263.341 14.973-43.744-4.88-86.826-14.525-126.534-29.229l-47.542 47.542c52.771 23.018 110.492 36.886 167.267 43.222 96.387 10.752 200.71 1.517 282.909-15.936 41.098-8.726 77.731-19.731 105.68-31.907 13.91-6.064 26.618-12.822 36.858-20.342 9.427-6.925 20.739-17.344 25.61-32.016 7.392-22.269-2.957-40.509-12.816-51.139-9.427-10.166-22.106-17.939-32.954-23.738-11.309-6.048-23.626-11.472-33.891-15.978-11.059-4.854-18.934-8.317-24.054-11.194-9.914-5.565-17.437-10.538-22.506-14.57 27.421-64.81 42.214-104.589 50.048-133.424 8.774-32.304 8.797-50.986 8.797-72.64 0-20.106-7.053-75.501-35.267-136.019zM836.038 153.372c12.499-12.497 32.758-12.497 45.254 0 12.499 12.497 12.499 32.758 0 45.255l-682.665 682.665c-12.497 12.499-32.758 12.499-45.255 0-12.497-12.496-12.497-32.755 0-45.254l682.666-682.666z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["message-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":57,"id":126,"name":"message-disabled","prevSize":32,"code":59785},"setIdx":0,"setId":4,"iconIdx":130},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.643 51.52 146.602 80.998 235.29 90.893 88.614 9.885 186.224 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.944-10.765-2.378-1.514-5.248-3.197-8.675-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.395-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.83 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.123 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.946 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["message"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":58,"id":127,"name":"message","prevSize":32,"code":59786},"setIdx":0,"setId":4,"iconIdx":131},{"icon":{"paths":["M512 128c75.546 0 138.861 52.356 155.645 122.762l-59.645 59.644v-22.405c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 24.067 8.858 46.067 23.488 62.915l-45.322 45.325c-26.182-28.49-42.166-66.499-42.166-108.24v-128c0-88.365 71.635-160 160-160zM561.35 568.243l102.893-102.893c-15.763 48.672-54.221 87.13-102.893 102.893zM288 416c0 72.154 23.181 123.101 55.328 159.078l-45.304 45.302c-43.428-47.35-74.024-113.99-74.024-204.381 0-17.674 14.327-32 32-32s32 14.326 32 32zM478.659 650.938l-51.808 51.808c18.56 6.374 36.579 10.806 53.149 13.635v115.619h-160c-17.673 0-32 14.326-32 32s14.327 32 32 32h384c17.674 0 32-14.326 32-32s-14.326-32-32-32h-160v-115.619c44.64-7.619 99.818-26.896 147.722-64.381 60.704-47.501 108.278-123.286 108.278-236 0-17.674-14.326-32-32-32s-32 14.326-32 32c0 92.086-37.757 149.632-83.722 185.6-46.464 36.358-102.736 51.581-140.278 54.326-9.971-0.73-21.264-2.339-33.341-4.989zM825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["microphone-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":59,"id":128,"name":"microphone-disabled","prevSize":32,"code":59787},"setIdx":0,"setId":4,"iconIdx":132},{"icon":{"paths":["M608 288c0-53.019-42.979-96-96-96s-96 42.981-96 96v128c0 53.021 42.979 96 96 96s96-42.979 96-96v-128zM352 288c0-88.365 71.635-160 160-160s160 71.635 160 160v128c0 88.365-71.635 160-160 160s-160-71.635-160-160v-128zM256 384c17.673 0 32 14.326 32 32 0 92.086 37.757 149.632 83.722 185.6 46.464 36.358 102.736 51.581 140.278 54.326 37.542-2.746 93.814-17.968 140.278-54.326 45.962-35.968 83.722-93.514 83.722-185.6 0-17.674 14.326-32 32-32s32 14.326 32 32c0 112.714-47.574 188.499-108.278 236-47.904 37.485-103.082 56.762-147.722 64.381v115.619h160c17.674 0 32 14.326 32 32s-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32s14.327-32 32-32h160v-115.619c-44.64-7.619-99.818-26.896-147.722-64.381-60.703-47.501-108.278-123.286-108.278-236 0-17.674 14.327-32 32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["microphone"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":60,"id":129,"name":"microphone","prevSize":32,"code":59788},"setIdx":0,"setId":4,"iconIdx":133},{"icon":{"paths":["M234.666 170.661c0-47.128 38.205-85.333 85.333-85.333h384.001c47.126 0 85.331 38.205 85.331 85.333v682.667c0 47.13-38.205 85.334-85.331 85.334h-384.001c-47.128 0-85.333-38.205-85.333-85.334v-682.667zM298.666 170.661v682.667c0 11.782 9.551 21.334 21.333 21.334h384.001c11.782 0 21.331-9.552 21.331-21.334v-682.667c0-11.782-9.549-21.333-21.331-21.333h-96.291c-2.653 24.002-23.002 42.672-47.709 42.672h-96c-24.707 0-45.056-18.67-47.709-42.672h-96.292c-11.782 0-21.333 9.551-21.333 21.333z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["mobile"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":61,"id":130,"name":"mobile","prevSize":32,"code":59789},"setIdx":0,"setId":4,"iconIdx":134},{"icon":{"paths":["M319.247 231.566c-62.882 49.504-135.086 136.549-141.94 266.127-5.762 108.922 37.404 187.184 89.915 241.51 53.258 55.098 115.702 84.925 144.25 94.438 41.859 13.955 114.269 29.536 234.643-15.603 34.858-13.072 73.165-42.096 108.304-78.426 14.272-14.755 27.616-30.294 39.6-45.773-28.778 9.293-61.699 17.754-96.589 23.594-56.192 9.405-119.29 12.32-179.411-0.237-2.49-0.518-4.96-1.030-7.408-1.536-22.195-4.576-42.733-8.816-62.589-17.648-23.091-10.275-43.805-25.891-69.299-51.386-42.096-42.096-89.142-107.222-89.371-213.843-1.569-34.080 4.622-81.878 13.764-129.216 4.624-23.946 10.142-48.465 16.132-72.003zM345.562 138.217c32.8-17.15 63.709 15.843 53.875 45.907-12.234 37.414-24.586 85.511-33.482 131.58-9.024 46.732-13.949 88.633-12.643 114.7l0.038 0.797v0.8c0 84.915 36.173 134.918 70.627 169.373 22.509 22.509 36.835 32.278 50.064 38.166 13.229 5.885 26.832 8.717 51.085 13.763 1.923 0.4 3.917 0.816 5.978 1.248 49.914 10.426 104.534 8.336 155.76-0.237 65.434-10.954 122.384-31.981 152.374-47.386 17.562-9.021 34.992-2.47 44.477 5.965 9.661 8.589 19.376 27.152 8.886 46.954-20.637 38.95-53.645 84.419-92.182 124.259-38.211 39.51-84.317 76.038-131.834 93.859-135.626 50.858-223.216 34.438-277.354 16.394-36.515-12.173-108.392-46.912-170.026-110.675-62.381-64.534-114.684-159.427-107.81-289.373 10.79-203.979 157.583-317.098 232.165-356.093z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["moon"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":62,"id":131,"name":"moon","prevSize":32,"code":59790},"setIdx":0,"setId":4,"iconIdx":135},{"icon":{"paths":["M144 160c-17.673 0-32 14.327-32 32s14.327 32 32 32h192c17.674 0 32-14.327 32-32s-14.326-32-32-32h-192zM700.4 346.646c11.795-13.165 32.026-14.272 45.187-2.48 13.162 11.795 14.272 32.026 2.477 45.187l-81.222 90.646h216.358c17.674 0 32 14.326 32 32s-14.326 32-32 32h-216.358l81.222 90.646c11.795 13.162 10.685 33.392-2.477 45.187-13.162 11.792-33.392 10.685-45.187-2.48l-129.030-144c-10.893-12.154-10.893-30.554 0-42.707l129.030-144zM112 512c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 640c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192zM112 352c0-17.674 14.327-32 32-32h192c17.674 0 32 14.326 32 32s-14.326 32-32 32h-192c-17.673 0-32-14.326-32-32zM144 800c-17.673 0-32 14.326-32 32s14.327 32 32 32h192c17.674 0 32-14.326 32-32s-14.326-32-32-32h-192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["move-to-the-queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":63,"id":132,"name":"move-to-the-queue","prevSize":32,"code":59791},"setIdx":0,"setId":4,"iconIdx":136},{"icon":{"paths":["M809.002 166.758c7.782 6.063 12.333 15.377 12.333 25.242v448h-0.112c0.074 1.734 0.112 3.478 0.112 5.229 0 69.053-57.309 125.030-128 125.030-70.694 0-128-55.978-128-125.030s57.306-125.030 128-125.030c23.312 0 45.171 6.090 64 16.73v-303.86l-384 96.798v409.136c0 69.053-57.309 125.037-128.001 125.037s-128-55.978-128-125.030c0-69.050 57.308-125.027 128-125.027 23.314 0 45.173 6.086 64 16.726v-325.777c0-14.66 9.962-27.446 24.177-31.029l448-112.93c9.568-2.411 19.709-0.276 27.491 5.788z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["musical-note"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":64,"id":133,"name":"musical-note","prevSize":32,"code":59792},"setIdx":0,"setId":4,"iconIdx":137},{"icon":{"paths":["M208 176c-35.346 0-64 28.654-64 64v576c0 35.347 28.654 64 64 64h576c35.347 0 64-28.653 64-64v-576c0-35.346-28.653-64-64-64h-576zM208 240h576v576h-576v-576zM698.627 558.15c-0.189 17.674-14.669 31.846-32.339 31.658-17.674-0.189-31.846-14.669-31.658-32.339l1.318-123.594-309.341 308.774c-12.51 12.483-32.771 12.464-45.256-0.042-12.485-12.509-12.467-32.771 0.042-45.258l309.195-308.624-123.382 1.315c-17.674 0.189-32.154-13.984-32.339-31.654-0.189-17.674 13.984-32.15 31.654-32.339l201.92-2.157c8.605-0.093 16.886 3.286 22.97 9.37 6.086 6.086 9.462 14.365 9.373 22.97l-2.157 201.92z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["new-window"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":65,"id":134,"name":"new-window","prevSize":32,"code":59793},"setIdx":0,"setId":4,"iconIdx":138},{"icon":{"paths":["M781.837 402.634c0-5.245-0.154-10.454-0.461-15.622l-63.539 63.539v265.363h-265.363l-66.979 66.979h425.363c12.944 0 24.611-7.795 29.565-19.754 4.954-11.955 2.214-25.722-6.938-34.874l-51.648-51.648v-273.984zM704.765 217.373l-45.254 45.255c-35.638-35.351-84.704-57.189-138.867-57.189-108.909 0-197.194 88.287-197.194 197.195v196.054l-64.001 64v-260.054c0-144.254 116.941-261.195 261.194-261.195 71.837 0 136.899 29.001 184.122 75.934zM433.578 808.934c0 48.086 38.982 87.066 87.066 87.066s87.066-38.979 87.066-87.066h-174.131zM854.275 190.982c-11.334-11.334-29.709-11.334-41.043 0l-612.732 612.733c-11.333 11.331-11.333 29.709 0 41.040 11.334 11.334 29.709 11.334 41.043 0l612.732-612.731c11.334-11.333 11.334-29.709 0-41.043z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["notification-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":66,"id":135,"name":"notification-disabled","prevSize":32,"code":59794},"setIdx":0,"setId":4,"iconIdx":139},{"icon":{"paths":["M601.331 808.928h-174.154c0.003 48.090 38.989 87.072 87.078 87.072s87.075-38.982 87.075-87.072zM815.597 731.677c7.274 9.696 8.442 22.669 3.021 33.51s-16.499 17.69-28.621 17.69h-565.996c-12.943 0-24.611-7.798-29.564-19.757-4.953-11.955-2.215-25.718 6.937-34.87l51.653-51.654v-274.032c0-144.272 116.957-261.228 261.229-261.228s261.229 116.956 261.229 261.228v275.629l40.112 53.485zM711.485 715.894v-313.331c0-108.926-88.304-197.228-197.229-197.228-108.928 0-197.229 88.302-197.229 197.228v313.331h394.458z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["notification"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":67,"id":136,"name":"notification","prevSize":32,"code":59795},"setIdx":0,"setId":4,"iconIdx":140},{"icon":{"paths":["M712.051 512.675v54.89c-0.195 76.736-43.741 143.283-107.44 176.445-5.53-25.67-28.362-44.906-55.683-44.906h-72.502c-31.459 0-56.963 25.501-56.963 56.963v41.427c0 31.462 25.504 56.963 56.963 56.963h72.502c28.509 0 52.128-20.944 56.307-48.288 69.261-26.829 123.962-82.883 148.966-153.030 4.723 1.27 9.69 1.946 14.813 1.946h28.483c31.459 0 56.963-25.504 56.963-56.963v-85.446c0-31.459-25.504-56.963-56.963-56.963h-28.483v-28.483c0-141.572-114.765-256.338-256.336-256.338s-256.339 114.766-256.339 256.338v23.302h-28.483c-31.46 0-56.964 25.504-56.964 56.966v103.571c0 31.459 25.504 56.963 56.964 56.963h28.482c31.46 0 56.964-25.504 56.964-56.963v-36.253h0.149c-0.099-2.576-0.148-5.165-0.148-7.766v-139.821c0-110.111 89.263-199.374 199.375-199.374s199.373 89.263 199.373 199.374v85.446z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["omnichannel"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":123,"id":137,"name":"omnichannel","prevSize":32,"code":59796},"setIdx":0,"setId":4,"iconIdx":141},{"icon":{"paths":["M705.578 633.158c9.507-9.235 24.701-9.018 33.939 0.486 9.238 9.507 9.021 24.701-0.486 33.939l-208.275 202.387c-9.312 9.050-24.138 9.050-33.45 0l-208.276-202.387c-9.506-9.238-9.724-24.432-0.487-33.939 9.237-9.504 24.432-9.722 33.937-0.486l191.549 186.134 191.549-186.134zM705.578 411.584c9.507 9.238 24.701 9.021 33.939-0.486s9.021-24.701-0.486-33.939l-208.275-202.385c-9.312-9.051-24.138-9.051-33.45 0l-208.276 202.385c-9.506 9.238-9.724 24.432-0.487 33.939 9.237 9.504 24.432 9.725 33.937 0.486l191.549-186.134 191.549 186.134z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["order"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":124,"id":138,"name":"order","prevSize":32,"code":59797},"setIdx":0,"setId":4,"iconIdx":142},{"icon":{"paths":["M742.317 652.566c12.666-12.323 12.944-32.582 0.618-45.248-12.323-12.669-32.582-12.944-45.251-0.621l44.634 45.869zM512 832.019l-22.317 22.934c12.422 12.086 32.211 12.086 44.634 0l-22.317-22.934zM326.317 606.698c-12.667-12.323-32.927-12.048-45.252 0.621-12.324 12.666-12.047 32.925 0.619 45.248l44.632-45.869zM697.683 606.698l-208 202.387 44.634 45.869 208-202.387-44.634-45.869zM534.317 809.085l-208-202.387-44.632 45.869 207.999 202.387 44.634-45.869z","M742.317 371.456c12.666 12.323 12.944 32.582 0.618 45.251-12.323 12.666-32.582 12.944-45.251 0.618l44.634-45.869zM512 192.004l-22.317-22.935c12.422-12.087 32.211-12.087 44.634 0l-22.317 22.935zM326.317 417.325c-12.668 12.326-32.927 12.048-45.252-0.618-12.325-12.669-12.048-32.928 0.619-45.251l44.633 45.869zM697.683 417.325l-208-202.386 44.634-45.87 208 202.387-44.634 45.869zM534.317 214.939l-208 202.386-44.633-45.869 207.999-202.387 44.634 45.87z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]},"tags":["ordering-ascending"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":125,"id":139,"name":"ordering-ascending","prevSize":32,"code":59798,"codes":[59798,59799]},"setIdx":0,"setId":4,"iconIdx":143},{"icon":{"paths":["M281.684 371.434c-12.667 12.323-12.944 32.582-0.619 45.248 12.324 12.669 32.584 12.944 45.252 0.621l-44.633-45.869zM512 191.981l22.317-22.935c-12.422-12.087-32.211-12.087-44.634 0l22.317 22.935zM697.683 417.302c12.669 12.323 32.928 12.048 45.251-0.621 12.326-12.666 12.048-32.925-0.618-45.248l-44.634 45.869zM326.317 417.302l208-202.387-44.634-45.869-207.999 202.387 44.633 45.869zM489.683 214.916l208 202.387 44.634-45.869-208-202.387-44.634 45.869z","M281.684 652.544c-12.667-12.323-12.944-32.582-0.619-45.251 12.324-12.666 32.584-12.944 45.252-0.618l-44.633 45.869zM512 831.997l22.317 22.934c-12.422 12.086-32.211 12.086-44.634 0l22.317-22.934zM697.683 606.675c12.669-12.326 32.928-12.048 45.251 0.618 12.326 12.669 12.048 32.928-0.618 45.251l-44.634-45.869zM326.317 606.675l208 202.384-44.634 45.872-207.999-202.387 44.633-45.869zM489.683 809.059l208-202.384 44.634 45.869-208 202.387-44.634-45.872z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"isMulticolor":true,"isMulticolor2":true,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":7}]},"tags":["ordering-descending"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(158, 162, 168)","opacity":0.7}],"properties":{"order":126,"id":140,"name":"ordering-descending","prevSize":32,"code":59800,"codes":[59800,59801]},"setIdx":0,"setId":4,"iconIdx":144},{"icon":{"paths":["M512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416c-229.752 0-416.001 186.25-416.001 416s186.25 416 416.001 416zM399.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256zM559.997 383.994c0-17.67 14.326-32 32-32s32 14.33 32 32v256c0 17.674-14.326 32-32 32s-32-14.326-32-32v-256z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pause-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":128,"id":141,"name":"pause-filled","prevSize":32,"code":59802},"setIdx":0,"setId":4,"iconIdx":145},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352-194.405 0-352.001 157.596-352.001 352s157.596 352 352.001 352c194.403 0 352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416-229.752 0-416.001-186.25-416.001-416s186.25-416 416.001-416c229.75 0 416 186.25 416 416zM399.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32zM559.997 383.994v256c0 17.674 14.326 32 32 32s32-14.326 32-32v-256c0-17.67-14.326-32-32-32s-32 14.33-32 32z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pause"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":129,"id":142,"name":"pause","prevSize":32,"code":59803},"setIdx":0,"setId":4,"iconIdx":146},{"icon":{"paths":["M825.373 153.372c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-672 672c-12.497 12.496-32.758 12.496-45.255 0s-12.497-32.758 0-45.254l672-672zM575.613 569.069l-44.707 44.707c7.846 5.904 15.846 11.453 23.533 16.016 9.2 5.459 22.838 12.579 36.973 13.222 16.224 0.736 31.446-5.302 42.47-10.976 11.741-6.042 22.79-13.824 31.744-20.944 1.053-0.838 2.134-1.232 2.883-1.341 0.403-0.061 0.611-0.032 0.688-0.013l121.094 59.075c-5.578 29.331-20.381 66.771-42.39 92.621-11.229 13.187-23.197 22.038-35.389 26.32-11.597 4.074-25.402 4.762-42.653-1.677-48.422-18.070-103.405-53.152-151.69-89.261-14.026-10.49-27.299-20.922-39.469-30.842l-44.387 44.39c14.186 11.683 29.84 24.061 46.445 36.48 49.808 37.248 110.448 76.56 167.261 97.76 30.275 11.299 59.149 11.238 85.197 2.086 25.45-8.938 46.090-25.786 62.246-44.755 31.866-37.424 50.634-88.144 57.059-126.246 4.72-27.987-11.776-51.77-33.136-62.192l-122.81-59.91c-24.41-11.907-51.462-6-69.834 8.611-7.008 5.571-14.544 10.739-21.443 14.291-5.574 2.867-8.931 3.741-10.314 4.003l-0.093-0.038c-0.992-0.4-3.731-1.514-8.57-4.387-3.277-1.942-6.87-4.301-10.71-7.002zM313.636 589.683l44.389-44.387c-9.92-12.17-20.349-25.44-30.838-39.466-36.109-48.285-71.192-103.267-89.263-151.69-6.437-17.251-5.748-31.056-1.675-42.652 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.291-36.814 92.622-42.392l59.075 121.095c0.019 0.077 0.048 0.285-0.013 0.688-0.109 0.752-0.502 1.83-1.341 2.883-7.12 8.954-14.902 20.003-20.944 31.744-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.134 7.763 27.773 13.222 36.973 4.563 7.686 10.109 15.683 16.013 23.53l44.707-44.707c-2.701-3.837-5.056-7.434-7.002-10.707-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.739 4.006-10.314 3.552-6.899 8.72-14.435 14.291-21.443 14.611-18.371 20.518-45.424 8.611-69.834l-59.91-122.809c-10.422-21.362-34.205-37.856-62.192-33.137-38.103 6.425-88.824 25.194-126.246 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.921 2.087 85.196 21.202 56.813 60.513 117.453 97.761 167.261 12.417 16.605 24.795 32.256 36.478 46.442z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":130,"id":143,"name":"phone-disabled","prevSize":32,"code":59804},"setIdx":0,"setId":4,"iconIdx":147},{"icon":{"paths":["M801.123 657.59c22.474 7.734 50.954 2.582 67.408-20.544 22.4-31.488 44.992-80.624 48.922-129.619 1.99-24.838-0.691-51.344-12.368-75.661-11.949-24.89-32.32-45.35-61.718-58.768-55.165-25.181-125.84-40.262-187.398-49.146-61.946-8.936-117.494-11.98-143.965-11.98v62.469c23.2 0 75.757 2.787 135.043 11.341 59.677 8.611 123.36 22.682 170.381 44.144 16.749 7.645 26.022 17.894 31.344 28.973 5.59 11.651 7.795 26.371 6.413 43.635-2.717 33.843-18.723 70.784-35.52 95.469l-127.398-43.853c-0.067-0.042-0.237-0.17-0.48-0.496-0.451-0.608-0.934-1.651-1.088-2.989-1.296-11.363-3.606-24.678-7.635-37.254-3.786-11.808-10.278-26.842-22.272-37.792-10.451-9.539-25.126-14.15-35.494-16.794-11.914-3.040-25.568-5.181-38.944-6.717-26.858-3.088-55.773-4.093-74.352-4.093v62.47c16.902 0 43.338 0.938 67.219 3.683 11.99 1.379 22.554 3.123 30.64 5.187 5.45 1.389 8.173 2.541 9.162 2.957l0.093 0.038c0.79 1.165 2.544 4.154 4.458 10.125 2.368 7.392 4.045 16.374 5.059 25.267 2.659 23.325 17.61 46.63 43.29 55.469l129.203 44.477zM222.875 657.584c-22.474 7.738-50.954 2.586-67.407-20.544-22.4-31.485-44.993-80.621-48.922-129.616-1.992-24.838 0.691-51.344 12.366-75.664 11.949-24.886 32.321-45.347 61.719-58.765 55.165-25.181 125.841-40.262 187.4-49.146 61.946-8.937 117.494-11.98 143.965-11.98v62.47c-23.2 0-75.757 2.787-135.046 11.341-59.674 8.608-123.358 22.682-170.378 44.144-16.748 7.645-26.024 17.894-31.343 28.973-5.593 11.651-7.797 26.371-6.412 43.635 2.714 33.843 18.721 70.784 35.518 95.469l127.4-43.856c0.067-0.038 0.234-0.166 0.477-0.493 0.454-0.611 0.938-1.651 1.091-2.989 1.296-11.363 3.606-24.682 7.635-37.254 3.786-11.808 10.275-26.842 22.272-37.792 10.448-9.542 25.126-14.15 35.491-16.794 11.917-3.040 25.568-5.181 38.947-6.717 26.858-3.088 55.77-4.093 74.349-4.093v62.47c-16.899 0-43.338 0.938-67.216 3.683-11.99 1.376-22.554 3.123-30.64 5.187-5.453 1.389-8.176 2.541-9.162 2.957l-0.093 0.038c-0.79 1.162-2.547 4.154-4.458 10.125-2.371 7.389-4.045 16.371-5.059 25.267-2.659 23.322-17.61 46.627-43.293 55.469l-129.202 44.474z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone-end"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":131,"id":144,"name":"phone-end","prevSize":32,"code":59805},"setIdx":0,"setId":4,"iconIdx":148},{"icon":{"paths":["M410.502 204.616c-10.419-21.362-34.202-37.856-62.189-33.137-38.104 6.425-88.825 25.194-126.247 57.060-18.972 16.155-35.817 36.795-44.757 62.246-9.15 26.048-9.211 54.919 2.087 85.195 21.202 56.816 60.513 117.456 97.761 167.264 37.482 50.122 74.609 91.552 93.329 110.269l44.173-44.173c-16.406-16.403-51.6-55.536-87.472-103.51-36.11-48.285-71.192-103.264-89.264-151.69-6.437-17.248-5.748-31.056-1.675-42.651 4.283-12.192 13.134-24.16 26.319-35.388 25.849-22.012 63.292-36.814 92.623-42.392l59.075 121.097c0.019 0.074 0.045 0.285-0.013 0.688-0.112 0.749-0.502 1.827-1.344 2.883-7.117 8.95-14.899 20-20.941 31.741-5.674 11.024-11.715 26.246-10.976 42.47 0.643 14.138 7.76 27.773 13.222 36.973 6.275 10.576 14.416 21.741 22.79 32.291 16.806 21.171 36.541 42.326 49.68 55.466l44.173-44.173c-11.952-11.952-29.981-31.309-44.928-50.134-7.504-9.453-13.738-18.157-17.997-25.334-2.87-4.838-3.984-7.578-4.387-8.57l-0.038-0.093c0.266-1.382 1.139-4.736 4.006-10.31 3.552-6.902 8.717-14.438 14.291-21.443 14.611-18.374 20.518-45.424 8.611-69.837l-59.914-122.808zM819.386 613.504c21.36 10.419 37.856 34.202 33.136 62.189-6.426 38.106-25.194 88.826-57.059 126.246-16.157 18.973-36.797 35.818-62.246 44.758-26.048 9.149-54.922 9.21-85.197-2.086-56.813-21.203-117.453-60.515-167.261-97.763-50.122-37.482-91.555-74.608-110.272-93.328l44.173-44.173c16.403 16.406 55.539 51.6 103.51 87.472 48.285 36.109 103.267 71.194 151.69 89.264 17.248 6.435 31.056 5.747 42.653 1.674 12.192-4.282 24.16-13.133 35.386-26.317 22.013-25.85 36.816-63.293 42.394-92.624l-121.094-59.075c-0.077-0.019-0.288-0.048-0.688 0.013-0.752 0.112-1.83 0.502-2.886 1.344-8.95 7.117-20 14.899-31.741 20.941-11.024 5.674-26.246 11.715-42.47 10.976-14.134-0.643-27.773-7.76-36.973-13.222-10.576-6.275-21.741-14.416-32.288-22.79-21.174-16.806-42.33-36.541-55.469-49.68l44.173-44.173c11.952 11.952 31.309 29.981 50.134 44.928 9.453 7.504 18.16 13.738 25.334 17.997 4.838 2.87 7.578 3.984 8.57 4.387l0.093 0.038c1.382-0.266 4.739-1.139 10.314-4.006 6.899-3.552 14.435-8.717 21.44-14.291 18.374-14.611 45.427-20.518 69.837-8.611l122.81 59.914z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["phone"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":68,"id":145,"name":"phone","prevSize":32,"code":59806},"setIdx":0,"setId":4,"iconIdx":149},{"icon":{"paths":["M512.608 128.019c-72.378-1.376-144.906 25.78-199.307 80.524-54.654 54.999-89.301 136.056-89.301 239.464 0 80.234 44.5 174.87 97.546 252.806 53.066 77.965 120.829 148.157 176.141 175.821l15.194 7.6 14.81-8.326c217.158-122.154 272.31-333.882 272.31-427.898 0-101.731-27.923-181.776-80.179-236.932-52.346-55.248-125.296-81.503-207.213-83.060zM288 448.006c0-88.589 29.353-152.745 70.698-194.351 41.6-41.862 97.072-62.705 152.694-61.648 68.992 1.311 124.038 23.054 161.968 63.088 38.019 40.126 62.64 102.649 62.64 192.914 0 74.55-44.691 253.677-224.176 363.030-39.683-25.61-92.186-79.853-137.37-146.237-50.954-74.864-86.454-156.221-86.454-216.797zM544 416c0-17.674-14.326-32-32-32s-32 14.326-32 32c0 17.674 14.326 32 32 32s32-14.326 32-32zM608 416c0 53.021-42.979 96-96 96s-96-42.979-96-96c0-53.021 42.979-96 96-96s96 42.979 96 96z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pin-map"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":69,"id":146,"name":"pin-map","prevSize":32,"code":59807},"setIdx":0,"setId":4,"iconIdx":150},{"icon":{"paths":["M428.346 199.399c17.542-17.543 45.984-17.543 63.53 0 17.542 17.543 17.542 45.986 0 63.53l-43.661 43.659 177.83 177.828 60.339-60.339c24.992-24.995 65.517-24.995 90.509 0l45.254 45.254-331.869 331.869-45.254-45.254c-24.992-24.995-24.992-65.517 0-90.509l60.339-60.339-177.827-177.83-43.661 43.661c-17.543 17.542-45.987 17.542-63.53 0s-17.543-45.987 0-63.53l208.001-207.999zM175.090 362.144c-42.537 42.538-42.537 111.501 0 154.038 42.001 42.003 109.771 42.531 152.42 1.587l87.334 87.334-15.075 15.075c-49.987 49.987-49.987 131.034 0 181.021l67.882 67.882c12.496 12.496 32.758 12.496 45.254 0l167.936-167.933 88.013 92.003c12.218 12.771 32.474 13.219 45.245 1.002 12.771-12.214 13.219-32.47 1.002-45.242l-88.995-93.030 163.923-163.923c12.499-12.496 12.499-32.758 0-45.254l-67.882-67.882c-49.987-49.987-131.030-49.987-181.018 0l-15.907 15.907-87.325-87.323c41.766-42.596 41.51-110.983-0.768-153.262-42.538-42.537-111.504-42.537-154.042 0l-207.998 208z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["pin"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":70,"id":147,"name":"pin","prevSize":32,"code":59808},"setIdx":0,"setId":4,"iconIdx":151},{"icon":{"paths":["M513.354 160c17.674 0 32 13.133 32 29.333v645.332c0 16.202-14.326 29.334-32 29.334s-32-13.133-32-29.334v-645.332c0-16.2 14.326-29.333 32-29.333z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["Pipe"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":71,"id":148,"name":"Pipe","prevSize":32,"code":59809},"setIdx":0,"setId":4,"iconIdx":152},{"icon":{"paths":["M512 928.003c229.75 0 416-186.25 416-416s-186.25-415.999-416-415.999c-229.75 0-416 186.25-416 415.999s186.25 416 416 416zM451.846 357.19l195.258 136.768c14.205 9.952 18.496 30.874 9.578 46.73-2.429 4.323-5.706 7.978-9.578 10.691l-195.258 136.768c-14.205 9.952-32.95 5.165-41.866-10.691-3.037-5.398-4.646-11.645-4.646-18.019v-273.536c0-18.72 13.597-33.894 30.368-33.894 5.712 0 11.309 1.795 16.144 5.184z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["play-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":72,"id":149,"name":"play-filled","prevSize":32,"code":59810},"setIdx":0,"setId":4,"iconIdx":153},{"icon":{"paths":["M864 512c0-194.404-157.597-352-352-352s-352 157.596-352 352c0 194.403 157.596 352 352 352s352-157.597 352-352zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416c0-229.75 186.25-416 416-416s416 186.25 416 416zM451.85 357.187l195.254 136.768c14.208 9.949 18.496 30.87 9.581 46.726-2.432 4.326-5.706 7.981-9.581 10.694l-195.254 136.768c-14.208 9.952-32.954 5.165-41.869-10.694-3.037-5.398-4.646-11.642-4.646-18.016v-273.536c0-18.723 13.597-33.898 30.371-33.898 5.709 0 11.306 1.798 16.144 5.187z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["play"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":73,"id":150,"name":"play","prevSize":32,"code":59811},"setIdx":0,"setId":4,"iconIdx":154},{"icon":{"paths":["M325.686 430.88l224.49 224.49-126.118 126.118-224.491-224.49 126.12-126.118zM370.941 385.626l192.115-192.117 224.49 224.491-192.115 192.115-224.49-224.49zM585.683 125.627c-12.496-12.497-32.758-12.497-45.254 0l-408.745 408.745c-12.497 12.496-12.497 32.758 0 45.254l269.746 269.747c5.229 5.229 11.818 8.269 18.63 9.123v0.067h0.57c2.278 0.243 4.576 0.243 6.851 0h440.579c17.674 0 32-14.33 32-32 0-17.674-14.326-32.003-32-32.003h-366.566l353.936-353.933c12.496-12.496 12.496-32.758 0-45.254l-269.747-269.746z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["prune"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":77,"id":154,"name":"prune","prevSize":32,"code":59817},"setIdx":0,"setId":4,"iconIdx":155},{"icon":{"paths":["M230.486 636.688c-14.92-9.472-34.694-5.056-44.167 9.862-9.473 14.922-5.057 34.694 9.862 44.166l298.666 189.632c10.47 6.646 23.837 6.646 34.304 0l298.669-189.632c14.918-9.472 19.334-29.245 9.862-44.166-9.475-14.918-29.248-19.334-44.166-9.862l-281.517 178.739-281.514-178.739zM186.319 494.848c9.473-14.922 29.247-19.334 44.167-9.862l281.514 178.739 281.517-178.739c14.918-9.472 34.691-5.059 44.166 9.862 9.472 14.918 5.056 34.694-9.862 44.166l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-14.92-9.472-19.335-29.248-9.862-44.166zM529.152 143.657l298.669 189.629c9.245 5.872 14.848 16.064 14.848 27.014 0 10.954-5.603 21.146-14.848 27.014l-298.669 189.632c-10.467 6.646-23.834 6.646-34.304 0l-298.666-189.632c-9.246-5.869-14.848-16.061-14.848-27.014 0-10.95 5.602-21.142 14.848-27.014l298.666-189.629c10.47-6.647 23.837-6.647 34.304 0zM273.035 360.301l238.965 151.725 238.966-151.725-238.966-151.724-238.965 151.724z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["queue"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":78,"id":155,"name":"queue","prevSize":32,"code":59818},"setIdx":0,"setId":4,"iconIdx":156},{"icon":{"paths":["M161.352 800c-11.706 0-22.477-6.39-28.087-16.666s-5.161-22.79 1.169-32.64l112.304-174.694h-69.387c-17.673 0-32-14.326-32-32v-288c0-17.673 14.327-32 32-32h255.999c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-143.999 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM332.269 561.306l-112.304 174.694h51.916l129.469-201.398v-246.602h-191.999v224h96c11.706 0 22.479 6.39 28.085 16.666 5.61 10.275 5.162 22.79-1.168 32.64zM577.35 800c-11.706 0-22.477-6.39-28.086-16.666s-5.162-22.79 1.171-32.64l112.304-174.694h-69.389c-17.67 0-32-14.326-32-32v-288c0-17.673 14.33-32 32-32h256c17.674 0 32 14.327 32 32v288c0 6.138-1.763 12.144-5.082 17.306l-144 224c-5.888 9.158-16.029 14.694-26.918 14.694h-128zM748.269 561.306l-112.304 174.694h51.917l129.469-201.398v-246.602h-192v224h96c11.706 0 22.48 6.39 28.086 16.666 5.61 10.275 5.162 22.79-1.168 32.64z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["quote"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":79,"id":156,"name":"quote","prevSize":32,"code":59819},"setIdx":0,"setId":4,"iconIdx":157},{"icon":{"paths":["M800 560c0 176.73-143.27 320-320 320-176.731 0-320-143.27-320-320s143.269-320 320-320v-64c-212.077 0-384 171.923-384 384s171.923 384 384 384c212.077 0 384-171.923 384-384 0-10.778-0.445-21.45-1.315-32h-64.266c1.046 10.525 1.581 21.2 1.581 32zM800 128c0-17.673-14.326-32-32-32s-32 14.327-32 32v112h-112c-17.674 0-32 14.327-32 32s14.326 32 32 32h112v112c0 17.674 14.326 32 32 32s32-14.326 32-32v-112h112c17.674 0 32-14.327 32-32s-14.326-32-32-32h-112v-112zM384 528c35.347 0 64-28.653 64-64s-28.653-64-64-64c-35.347 0-64 28.653-64 64s28.653 64 64 64zM640 464c0 35.347-28.653 64-64 64s-64-28.653-64-64c0-35.347 28.653-64 64-64s64 28.653 64 64zM329.805 605.075c-10.451-14.25-30.477-17.331-44.728-6.88s-17.333 30.477-6.882 44.73c37.658 51.35 77.754 84.624 119.178 102.662 41.741 18.179 82.797 19.99 120.362 11.651 73.469-16.307 132.211-70.87 164.070-114.314 10.451-14.253 7.37-34.278-6.88-44.73-14.253-10.451-34.278-7.37-44.73 6.88-26.81 36.557-73.664 77.994-126.33 89.686-25.501 5.661-52.643 4.474-80.938-7.85-28.608-12.461-60.381-37.187-93.123-81.837z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["reaction-add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":132,"id":157,"name":"reaction-add","prevSize":32,"code":59820},"setIdx":0,"setId":4,"iconIdx":158},{"icon":{"paths":["M832 512c0-176.73-143.27-320-320-320s-320 143.27-320 320c0 176.73 143.27 320 320 320s320-143.27 320-320zM896 512c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384s384 171.923 384 384zM512 704c-106.038 0-192-85.962-192-192s85.962-192 192-192c106.038 0 192 85.962 192 192s-85.962 192-192 192z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["record"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":133,"id":158,"name":"record","prevSize":32,"code":59821},"setIdx":0,"setId":4,"iconIdx":159},{"icon":{"paths":["M896 512h-63.984c0-175.414-145.754-320-328.518-320-115.27 0-215.818 57.513-274.362 144h110.768c17.674 0 32 14.326 32 32s-14.326 32-32 32h-179.904c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v102.32c71.751-91.401 184.589-150.32 311.498-150.32 216.781 0 392.502 171.923 392.502 384 0 1.114 0.010 2.227 0 3.338v-3.338z","M127.997 512h63.986c0 175.414 145.751 320 328.519 320 115.27 0 215.818-57.514 274.358-144h-110.768c-17.67 0-32-14.326-32-32s14.33-32 32-32h179.907c17.67 0 32 14.326 32 32v192c0 17.674-14.33 32-32 32-17.674 0-32-14.326-32-32v-102.32c-71.754 91.402-184.592 150.32-311.498 150.32-216.782 0-392.505-171.923-392.505-384 0-1.082-0.009-2.166 0-3.245v3.245z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["refresh"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":134,"id":159,"name":"refresh","prevSize":32,"code":59822},"setIdx":0,"setId":4,"iconIdx":160},{"icon":{"paths":["M713.718 450.362c0-142.689-115.824-258.362-258.701-258.362-142.878 0-258.704 115.673-258.704 258.362 0 142.691 115.826 258.365 258.704 258.365 142.877 0 258.701-115.674 258.701-258.365zM659.302 699.965c-55.645 45.475-126.774 72.762-204.285 72.762-178.271 0-322.788-144.326-322.788-322.365 0-178.035 144.517-322.362 322.788-322.362 178.269 0 322.787 144.327 322.787 322.362 0 77.408-27.318 148.442-72.854 204.013l186.838 186.592c12.608 12.589 12.608 33.002 0 45.59-12.605 12.589-33.043 12.589-45.648 0l-186.838-186.592z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["search"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":136,"id":160,"name":"search","prevSize":32,"code":59823},"setIdx":0,"setId":4,"iconIdx":161},{"icon":{"paths":["M891.494 238.96l-297.475 637.446c-16.854 36.115-69.622 31.459-79.891-7.050l-66-247.498 151.248-189.059-219.994 109.997-226.833-113.418c-35.43-17.715-29.696-69.949 8.733-79.555l681.197-170.3c34.842-8.71 64.202 26.892 49.014 59.436z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["send-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":137,"id":161,"name":"send-filled","prevSize":32,"code":59824},"setIdx":0,"setId":4,"iconIdx":162},{"icon":{"paths":["M878.022 192.974c7.85 9.521 9.526 22.708 4.31 33.891l-298.669 640.002c-5.69 12.195-18.403 19.526-31.811 18.342-13.405-1.184-24.637-10.627-28.106-23.632l-81.619-306.070-285.772-142.886c-11.978-5.987-18.959-18.8-17.498-32.112s11.056-24.307 24.048-27.552l682.665-170.668c11.974-2.993 24.598 1.165 32.451 10.686zM505.821 545.968l57.082 214.051 233.027-499.35-533.58 133.395 203.606 101.802 69.51-52.131c14.141-10.605 34.198-7.741 44.8 6.4 10.605 14.138 7.741 34.195-6.4 44.8l-68.045 51.034z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["send"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":138,"id":162,"name":"send","prevSize":32,"code":59825},"setIdx":0,"setId":4,"iconIdx":163},{"icon":{"paths":["M421.334 256c0-44.183-35.818-80-80-80s-80 35.817-80 80c0 44.183 35.817 80 80 80s80-35.817 80-80zM465.302 288c-14.211 55.206-64.326 96-123.968 96-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.327-32-32s14.327-32 32-32h89.367c14.209-55.207 64.324-96 123.968-96 59.642 0 109.757 40.793 123.968 96h430.698c17.674 0 32 14.327 32 32s-14.326 32-32 32h-430.698zM96 768c0-17.674 14.327-32 32-32h89.367c14.209-55.206 64.324-96 123.968-96 60.781 0 111.67 42.365 124.742 99.181 4.208-2.038 8.934-3.181 13.923-3.181h416c17.674 0 32 14.326 32 32s-14.326 32-32 32h-416c-4.989 0-9.715-1.142-13.923-3.181-13.072 56.816-63.962 99.181-124.742 99.181-59.643 0-109.758-40.794-123.968-96h-89.367c-17.673 0-32-14.326-32-32zM341.334 848c44.182 0 80-35.818 80-80s-35.818-80-80-80c-44.183 0-80 35.818-80 80s35.817 80 80 80zM796.029 543.757c-14.122 55.331-64.298 96.243-124.029 96.243s-109.904-40.912-124.029-96.243c-1.302 0.16-2.627 0.243-3.971 0.243h-416c-17.673 0-32-14.326-32-32s14.327-32 32-32h416c1.344 0 2.669 0.083 3.971 0.243 14.125-55.331 64.298-96.243 124.029-96.243s109.907 40.912 124.029 96.243c1.302-0.16 2.627-0.243 3.971-0.243h96c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96c-1.344 0-2.669-0.083-3.971-0.243zM752 512c0-44.182-35.818-80-80-80s-80 35.818-80 80c0 44.182 35.818 80 80 80s80-35.818 80-80z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["settings"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":139,"id":163,"name":"settings","prevSize":32,"code":59826},"setIdx":0,"setId":4,"iconIdx":164},{"icon":{"paths":["M690.176 301.708c11.645-11.977 11.645-31.396 0-43.374l-149.091-153.351c-11.645-11.977-30.525-11.977-42.17 0l-149.091 153.351c-11.645 11.977-11.645 31.397 0 43.374s30.525 11.978 42.17 0l98.189-100.993v401.343c0 16.938 13.35 30.669 29.818 30.669s29.818-13.731 29.818-30.669v-401.343l98.189 100.993c11.645 11.978 30.525 11.978 42.17 0z","M221.818 379.274h149.091v59.635h-119.272v387.635h536.728v-387.635h-119.274v-59.635h149.091c16.467 0 29.818 13.35 29.818 29.818v447.274c0 16.467-13.35 29.818-29.818 29.818h-596.364c-16.468 0-29.818-13.35-29.818-29.818v-447.274c0-16.467 13.35-29.818 29.818-29.818z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["share"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":244,"id":164,"name":"share","prevSize":32,"code":59827},"setIdx":0,"setId":4,"iconIdx":165},{"icon":{"paths":["M664.083 405.072c11.638-13.299 10.288-33.517-3.011-45.155s-33.517-10.288-45.155 3.011l-125.251 143.142-39.917-45.619c-11.638-13.299-31.853-14.646-45.155-3.011-13.299 11.638-14.646 31.856-3.008 45.155l64 73.142c6.077 6.944 14.854 10.928 24.080 10.928 9.229 0 18.006-3.984 24.083-10.928l149.334-170.666z","M541.99 143.050c-12.854-3.634-26.448-3.753-39.363-0.345l-264.724 69.849c-29.793 7.861-52.548 33.743-54.753 65.633-23.589 341.205 187.752 520.29 276.51 579.794 33.136 22.211 75.363 22.144 108.416-0.259 88.218-59.792 297.117-239.072 272.611-580.214-2.25-31.321-24.339-56.895-53.504-65.14l-245.194-69.318zM518.957 204.587c1.843-0.487 3.786-0.47 5.622 0.049l245.194 69.318c4.294 1.214 6.838 4.781 7.082 8.139 22.15 308.362-165.306 468.851-244.685 522.65-11.437 7.754-25.363 7.792-36.87 0.077-80.086-53.686-269.606-214.054-248.301-522.218 0.234-3.389 2.833-7.004 7.233-8.164l264.725-69.849z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["shield-check"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":80,"id":165,"name":"shield-check","prevSize":32,"code":59828},"setIdx":0,"setId":4,"iconIdx":166},{"icon":{"paths":["M513.302 142.705c12.915-3.408 26.509-3.289 39.36 0.345l245.197 69.318c29.165 8.245 51.254 33.818 53.504 65.14 24.506 341.142-184.397 520.422-272.611 580.214-33.053 22.403-75.28 22.47-108.416 0.259-88.762-59.504-300.101-238.589-276.511-579.794 2.205-31.89 24.96-57.772 54.753-65.633l264.725-69.849zM535.251 204.637c-1.834-0.519-3.776-0.536-5.622-0.050l-264.723 69.849c-4.4 1.161-6.999 4.775-7.234 8.164-21.305 308.164 168.216 468.532 248.299 522.218 11.507 7.715 25.434 7.677 36.874-0.077 79.379-53.798 266.832-214.288 244.682-522.65-0.24-3.358-2.784-6.925-7.078-8.139l-245.197-69.317z","M490.672 337.334c-19.76 4.672-47.245 12.31-81.149 24.554 20.81 108.771 53.219 187.014 81.149 238.832v-263.386zM492.867 271.316c33.77-6.898 61.805 19.742 61.805 51.125v360.963c0 17.024-10.333 31.747-25.642 37.52-15.67 5.91-33.779 1.331-44.861-12.675-32.656-41.267-106.323-152.95-141.19-354.563-3.242-18.746 7.066-37.695 25.328-44.726 56.186-21.63 99.094-32.442 124.56-37.644z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2}]},"tags":["shield"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":81,"id":166,"name":"shield-alt","prevSize":32,"code":59829},"setIdx":0,"setId":4,"iconIdx":167},{"icon":{"paths":["M778.64 213.336c-17.674 0-32 14.327-32 32v533.333c0 17.674 14.326 32 32 32s32-14.326 32-32v-533.333c0-17.673-14.326-32-32-32z","M600.87 341.334c-17.674 0-32 14.33-32 32v405.334c0 17.674 14.326 32 32 32s32-14.326 32-32v-405.334c0-17.67-14.326-32-32-32z","M423.104 810.669c-17.674 0-32-14.326-32-32v-277.334c0-17.67 14.326-32 32-32 17.67 0 32 14.33 32 32v277.334c0 17.674-14.33 32-32 32z","M245.333 597.334c-17.673 0-32 14.33-32 32v149.334c0 17.674 14.327 32 32 32s32-14.326 32-32v-149.334c0-17.67-14.327-32-32-32z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["signal"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":82,"id":167,"name":"signal","prevSize":32,"code":59830},"setIdx":0,"setId":4,"iconIdx":168},{"icon":{"paths":["M289.362 192c13.364 0 25.321 8.305 29.987 20.829l96.001 257.699c6.17 16.56-2.256 34.986-18.816 41.155-16.563 6.17-34.989-2.253-41.158-18.816l-20.477-54.963h-91.074l-20.476 54.963c-6.17 16.563-24.597 24.986-41.158 18.816s-24.986-24.595-18.816-41.155l96-257.699c4.666-12.524 16.622-20.829 29.987-20.829zM311.058 373.904l-21.695-58.238-21.695 58.238h43.391z","M522.131 626.435c-12.154 12.829-11.606 33.082 1.222 45.238l160 151.587c12.342 11.693 31.674 11.693 44.016 0l160-151.587c12.832-12.157 13.376-32.41 1.222-45.238s-32.41-13.376-45.238-1.222l-105.99 100.419v-501.632c0-17.673-14.326-32-32-32s-32 14.327-32 32v501.632l-105.994-100.419c-12.829-12.154-33.082-11.606-45.238 1.222z","M193.362 570.947c-17.673 0-32 14.326-32 32 0 17.67 14.327 32 32 32h116.145l-139.065 142.73c-8.979 9.216-11.565 22.915-6.564 34.771 5.001 11.853 16.617 19.562 29.484 19.562h192.001c17.674 0 32-14.326 32-32s-14.326-32-32-32h-116.146l139.064-142.733c8.979-9.216 11.565-22.915 6.563-34.768-4.998-11.856-16.614-19.562-29.482-19.562h-192.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["sort-az"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":83,"id":168,"name":"sort-az","prevSize":32,"code":59831},"setIdx":0,"setId":4,"iconIdx":169},{"icon":{"paths":["M919.258 667.229c12.605-12.253 12.877-32.394 0.605-44.982-12.269-12.589-32.435-12.858-45.040-0.605l-106.112 103.155v-500.8c0-17.568-14.259-31.81-31.853-31.81-17.59 0-31.85 14.242-31.85 31.81v500.8l-106.115-103.155c-12.605-12.253-32.768-11.984-45.040 0.605-12.269 12.589-11.997 32.73 0.608 44.982l160.179 155.718c12.368 12.019 32.070 12.019 44.435 0l160.182-155.718zM560.659 333.667c17.59 0 31.85-14.243 31.85-31.811s-14.259-31.809-31.85-31.809h-432.49c-17.591 0-31.852 14.242-31.852 31.809s14.26 31.811 31.852 31.811h432.49zM464.55 536.099c17.59 0 31.85-14.243 31.85-31.811 0-17.565-14.259-31.808-31.85-31.808h-336.381c-17.591 0-31.852 14.24-31.852 31.808s14.26 31.811 31.852 31.811h336.381zM384.458 722.96c17.594 0 31.853-14.24 31.853-31.808s-14.259-31.811-31.853-31.811h-256.289c-17.591 0-31.852 14.243-31.852 31.811s14.26 31.808 31.852 31.808h256.289z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["sort"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":84,"id":169,"name":"sort","prevSize":32,"code":59832},"setIdx":0,"setId":4,"iconIdx":170},{"icon":{"paths":["M593.939 170.244c-20.867-57.726-103.155-55.816-121.322 2.815l-58.976 190.348h-221.513c-58.947 0-86.549 72.944-42.37 111.968l157.591 139.206-53.209 216.928c-14.17 57.77 51.25 101.936 99.533 67.197l177.741-127.875 177.741 127.875c48.285 34.739 113.706-9.427 99.536-67.197l-53.386-217.651 147.888-139.968c42.032-39.779 13.878-110.483-43.99-110.483h-195.443l-69.821-193.164z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["star-filled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":85,"id":170,"name":"star-filled","prevSize":32,"code":59833},"setIdx":0,"setId":4,"iconIdx":171},{"icon":{"paths":["M472.618 173.508c18.166-58.554 100.454-60.461 121.322-2.812l69.821 192.91h195.44c57.872 0 86.026 70.611 43.994 110.336l-147.888 139.782 53.386 217.363c14.17 57.696-51.251 101.805-99.536 67.11l-177.741-127.709-177.741 127.709c-48.283 34.691-113.703-9.414-99.533-67.11l53.209-216.64-157.591-139.024c-44.179-38.973-16.577-111.818 42.37-111.818h221.513l58.976-190.098zM603.574 385.334l-69.824-192.91-58.976 190.098c-8.304 26.758-33.085 45.002-61.133 45.002h-221.513l157.59 139.021c17.837 15.731 25.456 40.048 19.789 63.13l-53.209 216.643 177.74-127.709c22.33-16.045 52.426-16.045 74.755 0l177.738 127.709-53.386-217.363c-5.478-22.317 1.456-45.856 18.166-61.648l147.888-139.782h-195.44c-26.957 0-51.024-16.87-60.186-42.189z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["star"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":86,"id":171,"name":"star","prevSize":32,"code":59834},"setIdx":0,"setId":4,"iconIdx":172},{"icon":{"paths":["M499.952 539.082c2.714 0.819 5.462 1.629 8.25 2.429 45.341 13.12 76.643 26.47 93.904 40.048 17.264 13.35 25.894 32.339 25.894 56.966s-9.322 44.074-27.965 58.346c-18.643 14.269-45.456 21.405-80.442 21.405-37.514 0-67.552-8.749-90.106-26.24-15.216-12.077-25.245-27.094-30.090-45.050-3.942-14.605-15.664-27.104-30.794-27.104h-11.843c-15.13 0-27.722 12.378-24.893 27.242 3.514 18.47 10.736 35.514 21.667 51.126 16.339 23.018 39.472 41.2 69.392 54.547 29.92 13.12 62.144 19.68 96.666 19.68 53.168 0 95.632-12.198 127.395-36.595 31.76-24.627 47.642-57.309 47.642-98.048 0-25.549-5.754-47.757-17.261-66.63-6.947-11.626-16.25-22.33-27.91-32.122h99.962c15.13 0 27.395-12.266 27.395-27.395s-12.266-27.392-27.395-27.392h-217.398c-1.709-0.493-3.437-0.986-5.178-1.472-41.658-11.738-71.235-24.627-88.726-38.669-17.261-14.269-25.894-31.645-25.894-52.131 0-25.546 9.091-45.456 27.277-59.725 18.41-14.5 43.958-21.75 76.64-21.75 35.216 0 62.49 8.746 81.824 26.24 13.139 11.731 21.814 26.496 26.022 44.288 3.485 14.723 15.242 27.174 30.371 27.174h11.84c15.13 0 27.702-12.374 24.88-27.238-3.331-17.552-9.974-34.134-19.923-49.75-14.733-23.475-35.677-41.888-62.835-55.237-26.928-13.349-57.654-20.024-92.179-20.024-50.634 0-91.834 13.004-123.594 39.012-31.533 25.779-47.299 58.46-47.299 98.047 0 34.986 12.89 64.445 38.669 88.381 1.050 0.957 2.125 1.907 3.222 2.854h-112.56c-15.13 0-27.395 12.262-27.395 27.392s12.265 27.395 27.395 27.395h225.373z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["strike"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":94,"id":172,"name":"strike","prevSize":32,"code":59846},"setIdx":0,"setId":4,"iconIdx":173},{"icon":{"paths":["M481.35 117.336c0-17.673 14.326-32 32-32s32 14.327 32 32v106.667c0 17.673-14.326 32-32 32s-32-14.327-32-32v-106.667zM771.392 214.631c12.496-12.497 32.758-12.497 45.254 0s12.496 32.758 0 45.255l-75.411 75.413c-12.499 12.496-32.758 12.496-45.254 0-12.499-12.496-12.499-32.759 0-45.255l75.411-75.412zM336.73 694.63c-12.499-12.496-32.759-12.496-45.256 0l-75.495 75.498c-12.497 12.496-12.497 32.755 0 45.254 12.497 12.496 32.758 12.496 45.255 0l75.496-75.498c12.496-12.496 12.496-32.755 0-45.254zM481.35 800.003c0-17.674 14.326-32 32-32s32 14.326 32 32v106.669c0 17.67-14.326 32-32 32s-32-14.33-32-32v-106.669zM213.352 212.001c-12.497 12.497-12.497 32.758 0 45.255l75.349 75.348c12.497 12.496 32.758 12.496 45.254 0 12.499-12.496 12.496-32.757 0-45.254l-75.348-75.349c-12.497-12.497-32.758-12.497-45.255 0zM695.978 739.885c-12.496-12.496-12.496-32.758 0-45.254 12.499-12.496 32.758-12.496 45.254 0l75.331 75.328c12.496 12.496 12.496 32.758 0 45.254-12.499 12.496-32.758 12.496-45.258 0l-75.328-75.328zM87.751 512.003c0 17.674 14.327 32 32 32h106.667c17.673 0 32-14.326 32-32s-14.327-32-32-32h-106.667c-17.673 0-32 14.326-32 32zM801.35 544.003c-17.674 0-32-14.326-32-32s14.326-32 32-32h106.669c17.67 0 32 14.326 32 32s-14.33 32-32 32h-106.669zM668.17 512c0-85.504-69.315-154.816-154.819-154.816-85.507 0-154.819 69.312-154.819 154.816 0 85.507 69.312 154.819 154.819 154.819 85.504 0 154.819-69.312 154.819-154.819zM726.682 512c0 117.821-95.51 213.334-213.331 213.334s-213.335-95.514-213.335-213.334c0-117.821 95.514-213.332 213.335-213.332s213.331 95.511 213.331 213.332z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["sun"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":95,"id":173,"name":"sun","prevSize":32,"code":59847},"setIdx":0,"setId":4,"iconIdx":174},{"icon":{"paths":["M930.704 512c0 229.75-186.25 416-416 416s-415.999-186.25-415.999-416c0-229.75 186.25-416 415.999-416s416 186.25 416 416zM570.49 859.603l-41.827-156.102c-4.611 0.33-9.264 0.499-13.958 0.499-4.57 0-9.101-0.16-13.594-0.474l-41.837 156.134c18.058 2.854 36.573 4.339 55.43 4.339 18.986 0 37.616-1.504 55.786-4.397zM438.893 688.451c-47.549-20.454-85.181-59.571-103.674-108.125l-155.029 41.539c33.968 103.485 114.617 185.805 217.045 222.058l41.658-155.472zM162.705 512c0 16.090 1.080 31.926 3.17 47.443l156.906-42.042c-0.051-1.795-0.077-3.594-0.077-5.402 0-4.909 0.186-9.776 0.547-14.595l-156.051-41.814c-2.958 18.368-4.496 37.21-4.496 56.41zM396.31 180.407c-99.16 35.408-177.786 114.033-213.196 213.19l155.535 41.677c19.357-44.352 54.982-79.978 99.334-99.331l-41.674-155.536zM514.704 160c-19.197 0-38.035 1.537-56.4 4.494l41.814 156.053c4.813-0.362 9.68-0.547 14.586-0.547 5.030 0 10.019 0.192 14.95 0.573l41.808-156.021c-18.477-2.995-37.437-4.552-56.758-4.552zM632.512 843.802c102.659-36.451 183.392-119.194 217.094-223.12l-154.973-41.526c-18.291 48.982-56.010 88.493-103.786 109.155l41.664 155.491zM863.699 558.198c1.984-15.117 3.005-30.538 3.005-46.198 0-18.771-1.469-37.197-4.298-55.171l-156.157 41.84c0.301 4.406 0.454 8.851 0.454 13.331 0 1.376-0.013 2.752-0.042 4.122l157.037 42.077zM846.714 394.774c-35.165-99.6-113.885-178.641-213.277-214.247l-41.68 155.559c44.582 19.555 80.314 55.565 99.504 100.342l155.453-41.654zM642.704 512c0-70.691-57.306-128-128-128-70.691 0-128 57.309-128 128s57.309 128 128 128c70.694 0 128-57.309 128-128z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["support"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":96,"id":174,"name":"support","prevSize":32,"code":59848},"setIdx":0,"setId":4,"iconIdx":175},{"icon":{"paths":["M368 412.982c-53.592 0-96-42.877-96-94.491 0-51.616 42.408-94.491 96-94.491 53.594 0 96 42.876 96 94.491 0 51.614-42.406 94.491-96 94.491zM368 476.982c88.365 0 160-70.96 160-158.491s-71.635-158.491-160-158.491c-88.365 0-160 70.959-160 158.491s71.635 158.491 160 158.491zM713.6 397.133c-35.92 0-64-28.685-64-62.794s28.080-62.792 64-62.792c35.92 0 64 28.684 64 62.792s-28.080 62.794-64 62.794zM713.6 461.133c70.691 0 128-56.768 128-126.794s-57.309-126.792-128-126.792c-70.691 0-128 56.767-128 126.792s57.309 126.794 128 126.794zM197.459 527.267c27.344-8.707 56.67-9.242 84.319-1.539l48.491 13.51c24.205 6.742 49.882 6.275 73.824-1.347l30.099-9.584c29.475-9.386 61.085-9.962 90.89-1.658 67.962 18.934 114.918 80.333 114.918 150.269v91.987c0 52.518-42.979 95.094-96 95.094h-352c-53.019 0-96-42.576-96-95.094v-103.766c0-62.909 40.999-118.621 101.459-137.872zM264.451 586.758c-15.545-4.333-32.034-4.032-47.407 0.864-33.993 10.822-57.044 42.147-57.044 77.517v103.766c0 17.507 14.327 31.699 32 31.699h352c17.674 0 32-14.192 32-31.699v-91.987c0-41.533-27.885-77.997-68.246-89.242-17.699-4.931-36.474-4.589-53.978 0.986l-30.099 9.584c-35.91 11.434-74.426 12.138-110.737 2.019l-48.489-13.507zM691.2 778.717h140.8c53.021 0 96-42.979 96-96v-30.611c0-56.877-38.614-106.49-93.747-120.454-21.398-5.418-43.853-5.040-65.056 1.098l-16.4 4.746c-21.843 6.323-44.973 6.714-67.018 1.13l-29.805-7.549c-19.907-5.043-40.797-4.691-60.522 1.018-1.066 0.31-2.122 0.634-3.174 0.97 10.71 4.048 20.896 9.539 30.253 16.374l2.429 1.776 15.040 13.206c9.939 8.726 18.141 19.248 24.182 31.014l2.208 4.301 3.677 0.931c33.062 8.374 67.76 7.789 100.525-1.693l16.4-4.749c10.282-2.976 21.171-3.158 31.546-0.531 26.736 6.771 45.462 30.832 45.462 58.413v30.611c0 17.674-14.326 32-32 32h-140.8v64z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["team"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":97,"id":175,"name":"team","prevSize":32,"code":59849},"setIdx":0,"setId":4,"iconIdx":176},{"icon":{"paths":["M223.311 308.609c-47.832 66.7-64.077 147.667-64.077 201.187v1.405l-0.127 1.398c-9.348 103.235 27.547 175.997 86.848 226.374 60.642 51.52 146.602 80.998 235.29 90.893 88.611 9.885 186.221 1.398 263.341-14.973 38.56-8.189 70.928-18.125 93.888-28.128 8.906-3.882 15.837-7.536 20.941-10.765-2.374-1.514-5.245-3.197-8.672-5.030-8.886-4.749-19.059-9.261-29.613-13.894l-1.843-0.81c-9.315-4.083-19.725-8.65-27.613-13.078-14.291-8.026-28.317-17.155-38.544-26.867-5.034-4.781-10.762-11.194-14.595-19.184-4.054-8.454-6.96-21.078-1.261-34.435 30.816-72.186 45.459-111.725 52.554-137.834 6.621-24.378 6.621-36.653 6.621-56.17v-0.179c0-15.51-8.979-86.595-53.776-152.876-43.376-64.174-121.398-125.729-264.832-125.729-129.725 0-207.83 53.576-254.529 118.696zM173.267 272.433c58.132-81.063 154.749-144.433 304.573-144.433 164.896 0 261.594 72.589 315.859 152.878 52.838 78.181 64.416 161.881 64.416 187.641 0 21.654-0.022 40.336-8.797 72.64-7.834 28.835-22.627 68.614-50.048 133.424 5.069 4.032 12.592 9.005 22.506 14.57 5.12 2.877 12.995 6.339 24.054 11.194 10.266 4.506 22.582 9.93 33.891 15.978 10.848 5.798 23.526 13.571 32.954 23.738 9.859 10.63 20.208 28.87 12.816 51.139-4.87 14.672-16.182 25.091-25.61 32.016-10.24 7.52-22.947 14.278-36.858 20.342-27.949 12.176-64.582 23.181-105.68 31.907-82.198 17.453-186.522 26.688-282.909 15.936-96.31-10.746-195.346-43.178-268.313-105.165-74.031-62.893-119.295-154.778-108.551-277.856 0.276-63.411 19.117-157.053 75.696-235.948zM333.952 422.051c0-17.648 14.25-31.955 31.83-31.955h183.008c17.578 0 31.827 14.307 31.827 31.955s-14.25 31.955-31.827 31.955h-183.008c-17.581 0-31.83-14.307-31.83-31.955zM365.782 539.709c-17.581 0-31.83 14.307-31.83 31.955s14.25 31.955 31.83 31.955h224.118c17.578 0 31.827-14.307 31.827-31.955s-14.25-31.955-31.827-31.955h-224.118z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["threads"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":98,"id":176,"name":"threads","prevSize":32,"code":59850},"setIdx":0,"setId":4,"iconIdx":177},{"icon":{"paths":["M353.354 320c0-17.673 14.326-32 32-32h256c17.674 0 32 14.327 32 32s-14.326 32-32 32h-256c-17.674 0-32-14.326-32-32z","M385.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 448c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 416c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M353.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M513.354 544c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M609.354 576c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M385.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M481.354 704c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.674-14.326 32-32 32s-32-14.326-32-32z","M641.354 672c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.674 0 32-14.326 32-32s-14.326-32-32-32z","M289.353 160h448.001c35.344 0 64 28.654 64 64v576c0 35.347-28.656 64-64 64h-448.001c-35.346 0-64-28.653-64-64v-576c0-35.346 28.654-64 64-64zM289.353 224v576h448.001v-576h-448.001z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["total"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":99,"id":177,"name":"total","prevSize":32,"code":59851},"setIdx":0,"setId":4,"iconIdx":178},{"icon":{"paths":["M713.613 91.356c13.162-11.794 33.392-10.685 45.187 2.477l129.034 144c10.89 12.154 10.89 30.556 0 42.71l-129.034 144.001c-11.795 13.162-32.026 14.269-45.187 2.477-13.162-11.795-14.272-32.026-2.477-45.187l81.222-90.646h-216.358c-17.674 0-32-14.327-32-32s14.326-32 32-32h216.358l-81.222-90.645c-11.795-13.162-10.685-33.393 2.477-45.187zM340.026 464.461c8.586-15.45 28.067-21.018 43.514-12.432l128.461 71.366 128.461-71.366c15.446-8.586 34.928-3.018 43.514 12.432 8.582 15.45 3.014 34.931-12.435 43.514l-159.539 88.634-159.539-88.634c-15.45-8.582-21.018-28.064-12.435-43.514zM192 288v448h640v-192c0-17.674 14.326-32 32-32s32 14.326 32 32v224c0 17.674-14.326 32-32 32h-704c-17.673 0-32-14.326-32-32v-512c0-17.673 14.327-32 32-32h272c17.674 0 32 14.327 32 32s-14.326 32-32 32h-240z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["transcript"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":100,"id":178,"name":"transcript","prevSize":32,"code":59852},"setIdx":0,"setId":4,"iconIdx":179},{"icon":{"paths":["M384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 106.038 85.962 192 192 192s192-85.962 192-192v-256c0-17.673-14.326-32-32-32s-32 14.327-32 32v256c0 70.691-57.309 128-128 128s-128-57.309-128-128v-256zM352 856c-13.254 0-24 10.746-24 24s10.746 24 24 24h320c13.254 0 24-10.746 24-24s-10.746-24-24-24h-320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["underline"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":101,"id":179,"name":"underline","prevSize":32,"code":59853},"setIdx":0,"setId":4,"iconIdx":180},{"icon":{"paths":["M512 832c176.73 0 320-143.27 320-320s-143.27-320-320-320c-111.712 0-210.056 57.244-267.295 144h107.295c17.674 0 32 14.326 32 32s-14.326 32-32 32h-176c-17.673 0-32-14.326-32-32v-192c0-17.673 14.327-32 32-32s32 14.327 32 32v101.364c70.228-90.856 180.282-149.364 304-149.364 212.077 0 384 171.923 384 384s-171.923 384-384 384c-212.077 0-384-171.923-384-384h64c0 176.73 143.27 320 320 320z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["undo"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":102,"id":180,"name":"undo","prevSize":32,"code":59854},"setIdx":0,"setId":4,"iconIdx":181},{"icon":{"paths":["M467.808 512c0-63.322-61.053-128-153.903-128s-153.905 64.678-153.905 128c0 63.322 61.054 128 153.905 128s153.903-64.678 153.903-128zM512 592.099c34.454 66.042 110.195 111.901 198.096 111.901 120.346 0 217.904-85.962 217.904-192s-97.558-192-217.904-192c-87.901 0-163.642 45.859-198.096 111.901-34.451-66.042-110.195-111.901-198.095-111.901-120.345 0-217.905 85.962-217.905 192s97.559 192 217.905 192c87.9 0 163.644-45.859 198.095-111.901zM864 512c0 63.322-61.053 128-153.904 128s-153.904-64.678-153.904-128c0-63.322 61.053-128 153.904-128s153.904 64.678 153.904 128z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["Unlimited"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":103,"id":181,"name":"Unlimited","prevSize":32,"code":59855},"setIdx":0,"setId":4,"iconIdx":182},{"icon":{"paths":["M829.168 153.372c12.515-12.497 32.803-12.497 45.315 0 12.515 12.497 12.515 32.758 0 45.255l-672.887 672c-12.513 12.496-32.801 12.496-45.315 0s-12.513-32.758 0-45.254l672.887-672zM110.155 480.051c101.936-153.699 303.797-327.676 542.114-225.436l-49.578 49.512c-56.528-19.209-108.077-19.504-153.526-9.726-114.906 24.721-215.653 118.392-280.79 213.871 38.633 48 75.969 86.822 111.862 117.885l-45.363 45.302c-39.684-34.736-80.189-77.437-121.317-129.181-14.248-17.923-16.056-43.146-3.402-62.227zM797.981 350.454l-45.328 45.27c35.546 31.427 72.336 70.947 110.186 120.080-61.546 95.187-158.656 188.682-272.125 213.626-46.752 10.278-100.624 9.734-160.592-11.603l-49.331 49.267c244.662 107.334 443.389-69.158 540.778-224.253 11.674-18.589 9.894-42.656-3.395-60.128-40.493-53.235-80.64-96.931-120.192-132.259zM514.982 347.43c13.709 0 27.037 1.571 39.802 4.541l-203.738 203.469c-3.901-13.837-5.981-28.403-5.981-43.44 0-90.89 76.074-164.57 169.917-164.57zM679.091 469.184l-203.264 202.998c12.57 2.87 25.68 4.39 39.155 4.39 93.843 0 169.917-73.68 169.917-164.573 0-14.81-2.019-29.162-5.808-42.816z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["unread-on-top-disabled"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":104,"id":182,"name":"unread-on-top-disabled","prevSize":32,"code":59856},"setIdx":0,"setId":4,"iconIdx":183},{"icon":{"paths":["M589.36 729.43c-107.366 23.603-252.288-9.875-422.339-221.158 65.137-95.478 165.885-189.15 280.79-213.871 108.314-23.302 251.286 10.604 413.674 221.404-61.546 95.187-158.653 188.682-272.125 213.626zM916.819 482.714c-347.59-456.963-669.742-211.156-808.018-2.662-12.655 19.082-10.846 44.304 3.402 62.227 362.786 456.419 677.038 209.142 808.011 0.563 11.674-18.589 9.894-42.656-3.395-60.128zM619.462 512c0-53.709-45.517-100.57-105.834-100.57s-105.834 46.861-105.834 100.57c0 53.709 45.517 100.573 105.834 100.573s105.834-46.864 105.834-100.573zM683.546 512c0 90.893-76.074 164.573-169.917 164.573s-169.917-73.68-169.917-164.573c0-90.89 76.074-164.57 169.917-164.57s169.917 73.68 169.917 164.57z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["unread-on-top"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":105,"id":183,"name":"unread-on-top","prevSize":32,"code":59857},"setIdx":0,"setId":4,"iconIdx":184},{"icon":{"paths":["M273.128 356.678c-6.62 27.766-2.384 63.757 25.498 105.581l33.166 49.75h-59.792c-44.011 0-70.484 14.874-86.279 33.619-16.496 19.578-24.573 47.264-23.734 77.491 0.841 30.262 10.601 59.968 25.818 81.312 15.127 21.216 33.404 31.578 52.195 31.578h143.999v64h-144c-45.209 0-80.932-25.642-104.306-58.426-23.283-32.656-36.522-74.95-37.682-116.688-1.16-41.773 9.763-86.083 38.766-120.506 20.726-24.598 49.155-42.32 84.825-50.784-16.1-39.011-19.009-77.050-10.731-111.77 11.253-47.2 42.305-84.492 80.791-107.342 38.4-22.798 85.677-32.139 131.303-21.965 35.584 7.935 68.909 27.48 95.251 59.554 53.75-35.147 127.584-30.892 182.483-2.495 34.438 17.812 64.794 46.382 81.437 85.010 12.294 28.531 16.438 61.011 10.608 96.205 46.112 6.682 81.507 25.155 105.616 53.456 30.346 35.626 38.102 81.35 33.443 123.283-4.659 41.917-21.946 83.485-46.544 115.114-24.061 30.934-59.354 57.354-101.261 57.354h-144v-64h144c14.093 0 32.8-9.581 50.742-32.646 17.398-22.371 30.112-52.806 33.453-82.89 3.341-30.067-2.902-56.339-18.554-74.714-15.222-17.869-44.035-33.75-97.642-33.75h-45.686l15.613-42.938c13.546-37.251 11.091-66.742 1.437-89.149-9.856-22.87-28.502-41.302-52.064-53.488-49.587-25.649-107.475-18.625-134.717 14.064l-30.134 36.16-22.541-41.325c-19.757-36.219-47.232-54.175-74.87-60.339-28.378-6.327-59.098-0.669-84.701 14.53-25.512 15.148-44.461 38.855-51.208 67.152zM630.979 588.778l-96-99.050c-6.029-6.218-14.32-9.728-22.979-9.728s-16.95 3.51-22.979 9.728l-96 99.050c-12.298 12.691-11.981 32.95 0.707 45.251 12.691 12.298 32.95 11.981 45.251-0.707l41.021-42.326v273.005c0 17.674 14.326 32 32 32s32-14.326 32-32v-273.005l41.021 42.326c12.301 12.688 32.56 13.005 45.251 0.707 12.691-12.301 13.005-32.56 0.707-45.251z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["upload"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":106,"id":184,"name":"upload","prevSize":32,"code":59858},"setIdx":0,"setId":4,"iconIdx":185},{"icon":{"paths":["M553.411 326.282c0 91.578-75.846 165.818-169.411 165.818-93.564 0-169.412-74.24-169.412-165.818 0-91.581 75.848-165.821 169.412-165.821 93.565 0 169.411 74.24 169.411 165.821zM485.648 326.282c0-54.949-45.51-99.493-101.648-99.493s-101.647 44.544-101.647 99.493c0 54.947 45.509 99.491 101.647 99.491s101.648-44.544 101.648-99.491z","M203.427 511.232c28.952-9.11 60.004-9.67 89.279-1.61l51.342 14.131c25.632 7.056 52.819 6.566 78.166-1.408l31.872-10.026c31.206-9.821 64.678-10.422 96.234-1.738 71.962 19.811 121.68 84.051 121.68 157.219v96.24c0 54.947-45.51 99.491-101.648 99.491h-372.705c-56.138 0-101.647-44.544-101.647-99.491v-108.566c0-65.814 43.411-124.106 107.427-144.243zM274.359 573.472c-16.46-4.531-33.918-4.218-50.196 0.906-35.992 11.322-60.399 44.093-60.399 81.098v108.566c0 18.317 15.17 33.165 33.882 33.165h372.705c18.714 0 33.882-14.848 33.882-33.165v-96.24c0-43.453-29.523-81.603-72.259-93.366-18.739-5.158-38.618-4.8-57.152 1.030l-31.872 10.026c-38.022 11.962-78.803 12.698-117.248 2.115l-51.343-14.134z","M797.091 189.321c0-15.913-13.024-28.812-29.091-28.812s-29.091 12.9-29.091 28.812v100.844h-101.818c-16.067 0-29.091 12.9-29.091 28.812s13.024 28.812 29.091 28.812h101.818v100.845c0 15.914 13.024 28.813 29.091 28.813s29.091-12.899 29.091-28.813v-100.845h101.818c16.067 0 29.091-12.899 29.091-28.812s-13.024-28.812-29.091-28.812h-101.818v-100.844z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["user-add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":107,"id":185,"name":"user-add","prevSize":32,"code":59859},"setIdx":0,"setId":4,"iconIdx":186},{"icon":{"paths":["M464 318.747c0-51.548-42.406-94.366-96-94.366-53.592 0-96 42.819-96 94.366s42.408 94.367 96 94.367c53.594 0 96-42.819 96-94.367zM528 318.747c0 87.416-71.635 158.284-160 158.284s-160-70.867-160-158.284c0-87.417 71.635-158.282 160-158.282s160 70.865 160 158.282zM281.778 525.712c-27.649-7.693-56.976-7.158-84.319 1.536-60.46 19.226-101.459 74.864-101.459 137.69v103.629c0 52.451 42.981 94.97 96 94.97h352c3.606 0 7.165-0.195 10.666-0.579v-64.534c-3.334 1.168-6.925 1.802-10.666 1.802h-352c-17.673 0-32-14.173-32-31.658v-103.629c0-35.325 23.051-66.605 57.044-77.414 15.373-4.89 31.862-5.187 47.407-0.864l48.489 13.491c36.311 10.102 74.827 9.402 110.737-2.016l30.099-9.571c17.504-5.568 36.278-5.91 53.978-0.986 18.899 5.261 35.066 16.042 46.912 30.282v-79.712c-9.309-4.749-19.203-8.627-29.584-11.517-29.805-8.291-61.414-7.715-90.89 1.654l-30.099 9.574c-23.942 7.61-49.619 8.080-73.824 1.344l-48.491-13.491zM763.366 489.709c-12.326-12.646-32.586-12.918-45.248-0.608-12.666 12.31-12.938 32.544-0.611 45.19l102.842 105.51h-324.349c-17.674 0-32 14.307-32 31.958 0 17.648 14.326 31.958 32 31.958h324.349l-102.842 105.507c-12.326 12.65-12.054 32.88 0.611 45.194 12.662 12.31 32.922 12.038 45.248-0.611l155.718-159.757c12.093-12.406 12.093-32.176 0-44.582l-155.718-159.76z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["user-forward"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":108,"id":186,"name":"user-forward","prevSize":32,"code":59860},"setIdx":0,"setId":4,"iconIdx":187},{"icon":{"paths":["M609.354 336c0-53.019-42.979-96-96-96s-96 42.981-96 96c0 53.021 42.979 96 96 96s96-42.979 96-96zM673.354 336c0 88.365-71.635 160-160 160s-160-71.635-160-160c0-88.365 71.635-160 160-160s160 71.635 160 160zM413.805 551.802c-24.621-5.77-50.285-5.366-74.714 1.178-67.086 17.968-113.738 78.762-113.738 148.211v66.81c0 53.021 42.98 96 96 96h384c53.021 0 96-42.979 96-96v-58.531c0-74.301-51.149-138.826-123.488-155.779l-6.458-1.514c-25.674-6.016-52.435-5.594-77.907 1.229l-49.626 13.293c-20.378 5.456-41.789 5.795-62.326 0.979l-67.744-15.875zM355.651 614.8c14.237-3.814 29.197-4.051 43.549-0.688l67.744 15.878c30.806 7.219 62.925 6.714 93.488-1.472l49.629-13.293c15.283-4.096 31.341-4.349 46.742-0.736l6.458 1.51c43.402 10.173 74.093 48.89 74.093 93.469v58.531c0 17.674-14.326 32-32 32h-384c-17.673 0-32-14.326-32-32v-66.81c0-40.483 27.193-75.917 66.298-86.39z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["user"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":109,"id":187,"name":"user","prevSize":32,"code":59861},"setIdx":0,"setId":4,"iconIdx":188},{"icon":{"paths":["M201.583 672c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 576c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 480c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 384c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M201.583 288c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M329.584 192c-17.674 0-32.001 14.327-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M201.583 864c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M329.584 768c-17.674 0-32.001 14.326-32.001 32s14.327 32 32.001 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["view-condensed"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":110,"id":188,"name":"view-condensed","prevSize":32,"code":59862},"setIdx":0,"setId":4,"iconIdx":189},{"icon":{"paths":["M288 192c0-17.673 14.327-32 32-32h544c17.674 0 32 14.327 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32h448c17.674 0 32 14.327 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.327-32-32zM192 304c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M288 464c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 560c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M288 736c0-17.674 14.327-32 32-32h544c17.674 0 32 14.326 32 32s-14.326 32-32 32h-544c-17.673 0-32-14.326-32-32zM288 832c0-17.674 14.327-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32h-448c-17.673 0-32-14.326-32-32zM192 848c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["view-extended"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":111,"id":189,"name":"view-extended","prevSize":32,"code":59863},"setIdx":0,"setId":4,"iconIdx":190},{"icon":{"paths":["M192 320c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z","M320 224c-17.673 0-32 14.327-32 32s14.327 32 32 32h544c17.674 0 32-14.327 32-32s-14.326-32-32-32h-544z","M192 576c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 480c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z","M192 832c35.346 0 64-28.653 64-64s-28.654-64-64-64c-35.346 0-64 28.653-64 64s28.654 64 64 64z","M320 736c-17.673 0-32 14.326-32 32s14.327 32 32 32h544c17.674 0 32-14.326 32-32s-14.326-32-32-32h-544z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["view-medium"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":112,"id":190,"name":"view-medium","prevSize":32,"code":59864},"setIdx":0,"setId":4,"iconIdx":191},{"icon":{"paths":["M640.854 256c26.512 0 48-21.49 48-48s-21.488-48-48-48c-26.509 0-48 21.49-48 48s21.491 48 48 48zM640.854 320c61.856 0 112-50.144 112-112s-50.144-112-112-112c-61.856 0-112 50.144-112 112s50.144 112 112 112zM592.854 416v256h-160v128h32v-96h224v-288h-96zM528.854 768h160c35.347 0 64-28.653 64-64v-288c0-35.347-28.653-64-64-64h-96c-35.344 0-64 28.653-64 64v192h-96c-35.344 0-64 28.653-64 64v128c0 35.347 28.656 64 64 64h32c35.347 0 64-28.653 64-64v-32zM784.854 448c0-17.674 14.326-32 32-32s32 14.326 32 32v384c0 17.674-14.326 32-32 32h-224c-17.674 0-32-14.326-32-32s14.326-32 32-32h192v-352zM368.403 401.52c9.677-9.059 10.176-24.246 1.117-33.923l-48.272-51.558v-47.925c0-13.255-10.746-24-24-24s-24 10.745-24 24v57.406c0 6.093 2.316 11.955 6.48 16.403l54.752 58.48c9.059 9.677 24.246 10.176 33.923 1.117zM170.974 414.278c53.308 74.218 156.687 91.171 230.908 37.862 10.765-7.731 25.76-5.274 33.494 5.491 7.731 10.768 5.274 25.763-5.494 33.494-95.75 68.771-229.121 46.902-297.894-48.848s-46.902-229.123 48.848-297.895c75.545-54.26 174.453-52.073 246.597-1.796 10.874 7.578 13.546 22.538 5.968 33.412s-22.538 13.547-33.411 5.968c-55.971-39.005-132.65-40.618-191.153 1.402-74.219 53.308-91.171 156.688-37.864 230.909z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["waiting-on-me"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":113,"id":191,"name":"waiting-on-me","prevSize":32,"code":59865},"setIdx":0,"setId":4,"iconIdx":192},{"icon":{"paths":["M512 352.003c17.674 0 32 14.33 32 32v224c0 17.674-14.326 32-32 32s-32-14.326-32-32v-224c0-17.67 14.326-32 32-32z","M512 672.003c17.674 0 32 14.33 32 32 0 17.674-14.326 32-32 32s-32-14.326-32-32c0-17.67 14.326-32 32-32z","M567.101 158.348c-24.774-41.922-85.427-41.922-110.202 0l-359.92 609.099c-25.21 42.662 5.544 96.557 55.099 96.557h719.845c49.555 0 80.307-53.894 55.098-96.557l-359.92-609.099zM512 190.906l359.923 609.097h-719.845l359.922-609.097z"],"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2}]},"tags":["warning"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":114,"id":192,"name":"warning","prevSize":32,"code":59866},"setIdx":0,"setId":4,"iconIdx":193},{"icon":{"paths":["M784.131 240.143c-35.43-35.658-77.581-63.931-124.016-83.181s-96.227-29.094-146.493-28.961c-210.863 0-382.322 171.532-382.414 382.376-0.085 67.104 17.523 133.043 51.047 191.171l-54.256 198.154 202.72-53.174c56.064 30.531 118.883 46.531 182.717 46.538h0.166c210.752 0 382.32-171.552 382.394-382.394 0.16-50.25-9.645-100.029-28.848-146.464-19.2-46.436-47.418-88.604-83.018-124.065zM513.622 828.486h-0.186c-56.922 0.006-112.797-15.293-161.776-44.298l-11.606-6.896-120.302 31.555 32.124-117.347-7.573-12.029c-31.783-50.64-48.608-109.232-48.535-169.021 0-175.235 142.653-317.816 317.981-317.816 84.301 0.049 165.13 33.58 224.707 93.218 59.581 59.638 93.034 140.499 92.998 224.8-0.074 175.254-142.653 317.834-317.834 317.834zM687.958 590.451c-9.552-4.787-56.528-27.907-65.293-31.171s-15.126-4.768-21.491 4.784c-6.362 9.555-24.678 31.171-30.253 37.462-5.574 6.288-11.149 7.187-20.701 2.4-9.555-4.784-40.339-14.87-76.845-47.434-28.403-25.322-47.584-56.621-53.174-66.192-5.594-9.571-0.589-14.669 4.198-19.491 4.291-4.291 9.552-11.168 14.32-16.742s6.381-9.571 9.552-15.933c3.174-6.362 1.597-11.955-0.787-16.739-2.384-4.787-21.491-51.818-29.466-70.96-7.757-18.63-15.622-16.099-21.491-16.394-5.501-0.275-11.955-0.349-18.336-0.349-4.842 0.131-9.606 1.264-13.994 3.325-4.387 2.058-8.298 5.005-11.491 8.65-8.749 9.552-33.428 32.675-33.428 79.706s34.234 92.467 39.002 98.848c4.765 6.381 67.382 102.883 163.187 144.266 17.792 7.68 35.974 14.413 54.477 20.17 22.902 7.334 43.731 6.237 60.179 3.779 18.336-2.733 56.547-23.104 64.506-45.418 7.955-22.317 7.955-41.459 5.501-45.456-2.458-3.997-8.618-6.326-18.173-11.11z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["whatsapp-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":237,"id":193,"name":"whatsapp-monochromatic","prevSize":32,"code":59868},"setIdx":0,"setId":4,"iconIdx":194},{"icon":{"paths":["M354.006 399.123l14.029 0.627-0.541-16.726-152.878 1.578c49.916-116.491 165.64-198.133 300.366-198.133 99.645 0 188.893 44.659 248.81 115.065-3.712 0.171-7.491 0.492-11.526 1.068 0 0-63.76 14.898-13.302 118.708 0 0 31.085 84.541-19.306 198.774l-28.403 73.306-99.101-264.723c0 0-5.984-28.154 23.61-28.154l23.76-1.472 0.339-16.035h-228.368v14.458c0 0 39.83-0.288 56.15 27.149l40.762 103.779-73.014 174.403-108.608-272.4c0 0-3.389-31.779 27.222-31.27z","M841.603 513.168c0-33.862-5.235-66.643-14.726-97.357l-145.949 378.755c96.134-56.88 160.675-161.571 160.675-281.398z","M411.478 823.011c32.49 10.912 67.267 16.778 103.488 16.778 37.85 0 74.102-6.406 107.898-18.256l-99.709-258.502-111.677 259.981z","M188.279 513.149c0-32.083 4.712-63.066 13.339-92.336l1 2.051 152.656 375.229c-99.606-55.882-166.994-162.538-166.994-284.944z","M130.705 512.093c0-211.775 172.316-384.093 384.076-384.093 211.725 0 383.923 172.318 383.923 384.093 0 211.776-172.198 384.010-383.923 384.010-211.757 0-384.076-172.234-384.076-384.010zM514.781 879.254c202.384 0 367.11-164.742 367.11-367.178 0-202.486-164.726-367.145-367.11-367.161-202.489 0-367.213 164.673-367.213 367.161 0 202.435 164.724 367.178 367.213 367.178z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["wordpress-monochromatic"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":241,"id":194,"name":"wordpress-monochromatic","prevSize":32,"code":59656},"setIdx":0,"setId":4,"iconIdx":195},{"icon":{"paths":["M193.353 405.334h213.332v-213.334h-213.332v213.334zM129.353 170.667c0-23.564 19.102-42.667 42.667-42.667h256c23.565 0 42.666 19.102 42.666 42.667v255.999c0 23.565-19.101 42.669-42.666 42.669h-256c-23.564 0-42.667-19.104-42.667-42.669v-255.999zM620.019 405.334h213.334v-213.334h-213.334v213.334zM556.019 170.667c0-23.564 19.104-42.667 42.666-42.667h256c23.565 0 42.669 19.102 42.669 42.667v255.999c0 23.565-19.104 42.669-42.669 42.669h-256c-23.562 0-42.666-19.104-42.666-42.669v-255.999zM620.019 618.666h213.334v213.334h-213.334v-213.334zM598.685 554.666c-23.562 0-42.666 19.104-42.666 42.669v256c0 23.562 19.104 42.666 42.666 42.666h256c23.565 0 42.669-19.104 42.669-42.666v-256c0-23.565-19.104-42.669-42.669-42.669h-256zM193.353 832h213.332v-213.334h-213.332v213.334zM129.353 597.334c0-23.565 19.102-42.669 42.667-42.669h256c23.565 0 42.666 19.104 42.666 42.669v256c0 23.562-19.101 42.666-42.666 42.666h-256c-23.564 0-42.667-19.104-42.667-42.666v-256z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["workspaces"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":119,"id":195,"name":"workspaces","prevSize":32,"code":59870},"setIdx":0,"setId":4,"iconIdx":196},{"icon":{"paths":["M384.509 149.333c0-11.782 9.562-21.333 21.36-21.333h85.446c11.798 0 21.363 9.551 21.363 21.333v106.667h-106.81c-11.798 0-21.36-9.551-21.36-21.333v-85.333z","M512.678 256h106.806c11.798 0 21.36 9.551 21.36 21.333v85.332c0 11.782-9.562 21.334-21.36 21.334h-106.806v-128z","M384.509 405.334c0-11.782 9.562-21.334 21.36-21.334h106.81v128h-106.81c-11.798 0-21.36-9.552-21.36-21.334v-85.331z","M512.678 512h106.806c11.798 0 21.36 9.552 21.36 21.334v106.666h-128.166v-128z","M427.232 640c-23.597 0-42.723 19.104-42.723 42.666v170.669c0 23.562 19.126 42.666 42.723 42.666h170.89c23.597 0 42.723-19.104 42.723-42.666v-213.334h-213.613zM491.315 725.334c-11.798 0-21.36 9.549-21.36 21.331v42.669c0 11.782 9.562 21.331 21.36 21.331h42.723c11.798 0 21.36-9.549 21.36-21.331v-42.669c0-11.782-9.562-21.331-21.36-21.331h-42.723z"],"width":1056,"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2},{"f":2},{"f":2},{"f":2},{"f":2}]},"tags":["zip"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"},{"fill":"rgb(108, 114, 122)"}],"properties":{"order":120,"id":196,"name":"zip","prevSize":32,"code":59871},"setIdx":0,"setId":4,"iconIdx":197},{"icon":{"paths":["M544 208c0-17.673-14.326-32-32-32s-32 14.327-32 32v271.997h-271.998c-17.673 0-32 14.326-32 32s14.327 32 32 32h271.998v272.003c0 17.674 14.326 32 32 32s32-14.326 32-32v-272.003l272-0.003c17.674 0 32-14.326 32-32s-14.326-32-32-32l-272 0.003v-271.997z"],"attrs":[{"fill":"rgb(108, 114, 122)"}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"1081141221158162168120320620912282312341243190812456992125519219212552552551291162451452241651699010019902101":[{"f":2}]},"tags":["add"],"grid":0},"attrs":[{"fill":"rgb(108, 114, 122)"}],"properties":{"order":240,"id":197,"name":"add","prevSize":32,"code":59872},"setIdx":0,"setId":4,"iconIdx":198}],"height":1024,"metadata":{"name":"custom"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"custom","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/app/presentation/RoomItem/RoomItem.js b/app/presentation/RoomItem/RoomItem.js index 13b2fdd27ab..27cf9f37a3f 100644 --- a/app/presentation/RoomItem/RoomItem.js +++ b/app/presentation/RoomItem/RoomItem.js @@ -78,7 +78,6 @@ const RoomItem = ({ prid={prid} status={status} isGroupChat={isGroupChat} - theme={theme} /> <Title name={name} diff --git a/app/presentation/RoomItem/TypeIcon.js b/app/presentation/RoomItem/TypeIcon.js index d42e31a2672..2eeded24777 100644 --- a/app/presentation/RoomItem/TypeIcon.js +++ b/app/presentation/RoomItem/TypeIcon.js @@ -1,21 +1,13 @@ import React from 'react'; import PropTypes from 'prop-types'; -import Status from '../../containers/Status/Status'; import RoomTypeIcon from '../../containers/RoomTypeIcon'; -import styles from './styles'; const TypeIcon = React.memo(({ - theme, type, prid, status, isGroupChat -}) => { - if (type === 'd' && !isGroupChat) { - return <Status style={styles.status} size={10} status={status} />; - } - return <RoomTypeIcon theme={theme} type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} />; -}); + type, prid, status, isGroupChat +}) => <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} />); TypeIcon.propTypes = { - theme: PropTypes.string, type: PropTypes.string, status: PropTypes.string, prid: PropTypes.string, diff --git a/app/presentation/RoomItem/index.js b/app/presentation/RoomItem/index.js index e9c6f7ec8f3..1f5bb9e70c0 100644 --- a/app/presentation/RoomItem/index.js +++ b/app/presentation/RoomItem/index.js @@ -194,11 +194,11 @@ class RoomItemContainer extends React.Component { } const mapStateToProps = (state, ownProps) => { - let status = 'offline'; + let status = 'loading'; const { id, type, visitor = {} } = ownProps; if (state.meteor.connected) { if (type === 'd') { - status = state.activeUsers[id]?.status || 'offline'; + status = state.activeUsers[id]?.status || 'loading'; } else if (type === 'l' && visitor?.status) { ({ status } = visitor); } diff --git a/app/presentation/RoomItem/styles.js b/app/presentation/RoomItem/styles.js index 95c917fcc8f..80bf0c90b3f 100644 --- a/app/presentation/RoomItem/styles.js +++ b/app/presentation/RoomItem/styles.js @@ -52,9 +52,7 @@ export default StyleSheet.create({ ...sharedStyles.textSemibold }, status: { - marginLeft: 4, - marginRight: 7, - marginTop: 3 + marginRight: 2 }, markdownText: { flex: 1, diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 7f5ba713a0f..2686b60ef93 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -448,14 +448,20 @@ class RoomActionsView extends React.Component { type={t} rid={rid} > - {t === 'd' && member._id ? <Status style={sharedStyles.status} id={member._id} /> : null } + {t === 'd' && member._id + ? ( + <View style={[sharedStyles.status, { backgroundColor: themes[theme].backgroundColor }]}> + <Status size={16} id={member._id} /> + </View> + ) : null + } </Avatar> <View style={styles.roomTitleContainer}> {room.t === 'd' ? <Text style={[styles.roomTitle, { color: themes[theme].titleText }]} numberOfLines={1}>{room.fname}</Text> : ( <View style={styles.roomTitleRow}> - <RoomTypeIcon type={room.prid ? 'discussion' : room.t} status={room.visitor?.status} theme={theme} /> + <RoomTypeIcon type={room.prid ? 'discussion' : room.t} status={room.visitor?.status} /> <Text style={[styles.roomTitle, { color: themes[theme].titleText }]} numberOfLines={1}>{RocketChat.getRoomTitle(room)}</Text> </View> ) diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index a18476d3402..30187fdb351 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -41,7 +41,7 @@ const getRoomTitle = (room, type, name, username, statusText, theme) => (type == ) : ( <View style={styles.roomTitleRow}> - <RoomTypeIcon type={room.prid ? 'discussion' : room.t} key='room-info-type' status={room.visitor?.status} theme={theme} /> + <RoomTypeIcon type={room.prid ? 'discussion' : room.t} key='room-info-type' status={room.visitor?.status} /> <Text testID='room-info-view-name' style={[styles.roomTitle, { color: themes[theme].titleText }]} key='room-info-name'>{RocketChat.getRoomTitle(room)}</Text> </View> ) @@ -290,7 +290,13 @@ class RoomInfoView extends React.Component { size={100} rid={room?.rid} > - {this.t === 'd' && roomUser._id ? <Status style={[sharedStyles.status, styles.status]} theme={theme} size={24} id={roomUser._id} /> : null} + {this.t === 'd' && roomUser._id + ? ( + <View style={[sharedStyles.status, { backgroundColor: themes[theme].auxiliaryBackground }]}> + <Status size={20} id={roomUser._id} /> + </View> + ) + : null} </Avatar> ); } diff --git a/app/views/RoomInfoView/styles.js b/app/views/RoomInfoView/styles.js index ed6b1d9788d..5ba307b6537 100644 --- a/app/views/RoomInfoView/styles.js +++ b/app/views/RoomInfoView/styles.js @@ -48,11 +48,6 @@ export default StyleSheet.create({ flexDirection: 'row', alignItems: 'center' }, - status: { - borderWidth: 4, - bottom: -4, - right: -4 - }, itemLabel: { marginBottom: 10, fontSize: 14, diff --git a/app/views/RoomView/Header/Header.js b/app/views/RoomView/Header/Header.js index 410ca1bf5ab..4cdccca8fbf 100644 --- a/app/views/RoomView/Header/Header.js +++ b/app/views/RoomView/Header/Header.js @@ -6,9 +6,9 @@ import { import I18n from '../../../i18n'; import sharedStyles from '../../Styles'; -import Icon from './Icon'; import { themes } from '../../../constants/colors'; import Markdown from '../../../containers/markdown'; +import RoomTypeIcon from '../../../containers/RoomTypeIcon'; const HIT_SLOP = { top: 5, right: 5, bottom: 5, left: 5 @@ -119,7 +119,7 @@ HeaderTitle.propTypes = { }; const Header = React.memo(({ - title, subtitle, parentTitle, type, status, usersTyping, width, height, prid, tmid, connecting, goRoomActionsView, roomUserId, theme + title, subtitle, parentTitle, type, status, usersTyping, width, height, prid, tmid, connecting, goRoomActionsView, theme, isGroupChat }) => { const portrait = height > width; let scale = 1; @@ -136,13 +136,7 @@ const Header = React.memo(({ if (tmid) { renderFunc = () => ( <View style={styles.titleContainer}> - <Icon - type={prid ? 'discussion' : type} - tmid={tmid} - status={status} - roomUserId={roomUserId} - theme={theme} - /> + <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} /> <Text style={[styles.subtitle, { color: themes[theme].auxiliaryText }]} numberOfLines={1}>{parentTitle}</Text> </View> ); @@ -158,7 +152,7 @@ const Header = React.memo(({ hitSlop={HIT_SLOP} > <View style={styles.titleContainer}> - {tmid ? null : <Icon type={prid ? 'discussion' : type} status={status} roomUserId={roomUserId} theme={theme} />} + {tmid ? null : <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} />} <HeaderTitle title={title} tmid={tmid} @@ -185,7 +179,7 @@ Header.propTypes = { theme: PropTypes.string, usersTyping: PropTypes.array, connecting: PropTypes.bool, - roomUserId: PropTypes.string, + isGroupChat: PropTypes.bool, parentTitle: PropTypes.string, goRoomActionsView: PropTypes.func }; diff --git a/app/views/RoomView/Header/Icon.js b/app/views/RoomView/Header/Icon.js deleted file mode 100644 index 0a5c6277b03..00000000000 --- a/app/views/RoomView/Header/Icon.js +++ /dev/null @@ -1,72 +0,0 @@ -import React from 'react'; -import { StyleSheet } from 'react-native'; -import PropTypes from 'prop-types'; - -import { STATUS_COLORS, themes } from '../../../constants/colors'; -import { CustomIcon } from '../../../lib/Icons'; -import Status from '../../../containers/Status/Status'; - -const ICON_SIZE = 15; - -const styles = StyleSheet.create({ - type: { - width: ICON_SIZE, - height: ICON_SIZE, - marginRight: 4, - marginLeft: -4 - }, - status: { - marginRight: 8 - } -}); - -const Icon = React.memo(({ - roomUserId, type, status, theme, tmid -}) => { - if ((type === 'd' || tmid) && roomUserId) { - return <Status size={10} style={styles.status} status={status} />; - } - - let colorStyle = {}; - if (type === 'l') { - colorStyle = { color: STATUS_COLORS[status] }; - } else { - colorStyle = { color: themes[theme].auxiliaryText }; - } - - let icon; - if (type === 'discussion') { - icon = 'discussions'; - } else if (type === 'c') { - icon = 'channel-public'; - } else if (type === 'l') { - icon = 'omnichannel'; - } else if (type === 'd') { - icon = 'team'; - } else { - icon = 'channel-private'; - } - return ( - <CustomIcon - name={icon} - size={ICON_SIZE * 1} - style={[ - styles.type, - { - width: ICON_SIZE * 1, - height: ICON_SIZE * 1 - }, - colorStyle - ]} - /> - ); -}); - -Icon.propTypes = { - roomUserId: PropTypes.string, - type: PropTypes.string, - status: PropTypes.string, - theme: PropTypes.string, - tmid: PropTypes.string -}; -export default Icon; diff --git a/app/views/RoomView/Header/index.js b/app/views/RoomView/Header/index.js index 05a5f2e12c6..a66f21a4ae2 100644 --- a/app/views/RoomView/Header/index.js +++ b/app/views/RoomView/Header/index.js @@ -28,7 +28,8 @@ class RoomHeaderView extends Component { goRoomActionsView: PropTypes.func, width: PropTypes.number, height: PropTypes.number, - parentTitle: PropTypes.string + parentTitle: PropTypes.string, + isGroupChat: PropTypes.bool }; shouldComponentUpdate(nextProps) { @@ -76,7 +77,24 @@ class RoomHeaderView extends Component { render() { const { - title, subtitle: subtitleProp, type, prid, tmid, widthOffset, status = 'offline', statusText, connecting, connected, usersTyping, goRoomActionsView, roomUserId, theme, width, height, parentTitle + title, + subtitle: subtitleProp, + type, + prid, + tmid, + widthOffset, + status = 'offline', + statusText, + connecting, + connected, + usersTyping, + goRoomActionsView, + roomUserId, + theme, + width, + height, + parentTitle, + isGroupChat } = this.props; let subtitle; @@ -105,6 +123,7 @@ class RoomHeaderView extends Component { goRoomActionsView={goRoomActionsView} connecting={connecting} parentTitle={parentTitle} + isGroupChat={isGroupChat} /> ); } diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 2ee84ae252f..405e386e90d 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -306,6 +306,7 @@ class RoomView extends React.Component { } = this.props; const { rid, tmid } = this; const prid = room?.prid; + const isGroupChat = RocketChat.isGroupChat(room); let title = route.params?.name; let parentTitle; if ((room.id || room.rid) && !tmid) { @@ -356,6 +357,7 @@ class RoomView extends React.Component { type={t} roomUserId={roomUserId} visitor={visitor} + isGroupChat={isGroupChat} goRoomActionsView={this.goRoomActionsView} /> ), diff --git a/app/views/SidebarView/index.js b/app/views/SidebarView/index.js index a14b178cdb3..fd9d9bcc964 100644 --- a/app/views/SidebarView/index.js +++ b/app/views/SidebarView/index.js @@ -196,7 +196,7 @@ class Sidebar extends Component { return ( <SidebarItem text={user.statusText || I18n.t('Edit_Status')} - left={<Status style={styles.status} size={12} status={user && user.status} />} + left={<Status size={24} status={user?.status} />} right={<CustomIcon name='edit' size={20} color={themes[theme].titleText} />} onPress={() => this.sidebarNavigate('StatusView')} testID='sidebar-custom-status' diff --git a/app/views/SidebarView/styles.js b/app/views/SidebarView/styles.js index 0075c098cdd..1d9ff2cbe98 100644 --- a/app/views/SidebarView/styles.js +++ b/app/views/SidebarView/styles.js @@ -51,9 +51,6 @@ export default StyleSheet.create({ avatar: { marginHorizontal: 10 }, - status: { - marginRight: 5 - }, currentServerText: { fontSize: 14, ...sharedStyles.textSemibold diff --git a/app/views/StatusView.js b/app/views/StatusView.js index 8783da13e4f..cd71ff379e7 100644 --- a/app/views/StatusView.js +++ b/app/views/StatusView.js @@ -41,11 +41,11 @@ const styles = StyleSheet.create({ }, inputLeft: { position: 'absolute', - top: 18, - left: 14 + top: 12, + left: 12 }, inputStyle: { - paddingLeft: 40 + paddingLeft: 48 } }); @@ -140,7 +140,7 @@ class StatusView extends React.Component { testID={`status-view-current-${ user.status }`} style={styles.inputLeft} status={user.status} - size={12} + size={24} /> )} inputStyle={styles.inputStyle} @@ -174,7 +174,7 @@ class StatusView extends React.Component { } }} testID={`status-view-${ id }`} - left={() => <Status size={12} status={item.id} />} + left={() => <Status size={24} status={item.id} />} /> ); } diff --git a/app/views/Styles.js b/app/views/Styles.js index 9cad931798d..f457a8ed372 100644 --- a/app/views/Styles.js +++ b/app/views/Styles.js @@ -26,9 +26,9 @@ export default StyleSheet.create({ }, status: { position: 'absolute', - bottom: -3, - right: -3, - borderWidth: 3 + bottom: -2, + right: -2, + borderRadius: 10 }, textAlignCenter: { textAlign: 'center' diff --git a/ios/custom.ttf b/ios/custom.ttf index 5e5e19a16d275ee349ad64d8fd1917cdb465060d..dfcdfa13bea2f73891794a4fa4c50b5cb6418b23 100644 GIT binary patch delta 1930 zcmZ`(drVVT7(eIUJ^<U>+Q+@O?{_N?Tly}wEl)ua3UdO22;vi+k8ZL=nOf%9qJ}L< z7qhs{k%cX|IpbEh5a%W;A&XfeGtNH@aVCpK%wh~-%R;p59O?rfJIOicJKy*FzVF`i z{myr%hdj|k_UhxuspD4wfNB6h&!)DWF|>=(c@XUxo3`%WSbeMiTXa4Jz)v5xZ)jVu zmR9Zs;9ME9``VF${{`nHI`2VebNjZAUCyFT<bSRo0MfH{$GSHAz17I~!c`RGlWlFg zV&FQY02qlOyncJzHpPbDQ-N=gq89-=V>@<s01}zNsNnF>J5r2d(f5!b13;jkXrFj1 zQ3X}Z-iiGa$0tT7#wTvfJe-*UaOO{j!@xu*v?V`-8BDw%6p_tj5okqGjXXZ2pj<{X zTIhE9{Ltq@64sfFR+}AqJxCWpCJd0v5IO*z&lr&dEqg9V1o>fa6LC;#5v49ON+rXF z4TcB<omp{ZRwm3!UDnq*>~#jc$)txaCS)*#8AhRCQkN;SOlGF=fXYl&W>#kEHWv>8 zpD*A-rw9$oA|rvAN{uQCO{PKxt5mWun3ajpsZpcZY&0}D91R8-#0EBOG(_0cD23ca zD6~aOK|>mQgDcG7Q?tQgP-K<MZ6ZpX{8%v_n%9Nys0-bZ3gjhn8nsf=V>KCh8pzN- zzt8G`UIHY#K4QvLI-1s<o}WhvIg*|tt#)(y;@aB9<(su=Je7$xv`$A)_aYF2#zp}F zo+ik~3B;t4hpON<xP0j9OzG(HG3*8bUjH{X{2qS-o|qaLPXbeb1{PokVNee0Kntq1 zEnOCWx{xH_4sA%bp&k7iA6apgxeNud?B`Q3j(OovlfWiLSO)trNWfG<K+F*f24g33 z_db#!$bBS-Lk71{W_g9)`-eiH5DL*Eu}Y;@N$O^W+)Qned-VetmBv5D%BP+MLw)=) z8ov3w>5--T#gy`?bgsu9b8@}}44x^49{`IH@z!Sbdi)WX2sGv?2~gm6Rnc-eUFC8Y z%#|?#O1^$kpT@j4mjH8RREZ}=QlUfQ{(wqNcFl#%mEkbXlgw^v=CE$`98r-pxKbJ@ z<CzRbYZ!WbiBDU85VPUj+%PMYN`*53t?wt+wH^`&a>L==fK)h)^=L^xY`sgwFM`A5 za$+3#!43eVd>*ZXw672a@;hf)fFHUE5x@cMun;|e9dyxdxpS5{xaKCC6?Fo?&*Okr zqX;#Nf^@^c-NK75P6xFRs~yl|^_rZs48r7c;^#9%HL0PxPhG2~Amj-6LMe|6DSLPR z;e2SP?C(03L8RwMg}f{dtk%@136@f6`qVWT&lT_}36G0meGbAg3nw7SMd*2)sJb>W z7;8)3T6;&3%zQl_Rqr`=W>Kps^f#Et!LI|1ADnHVvwLFT+>fw7xn`Jz3%ii{Wiy8K zHy=$b$2fX$G0}6rIQiT8w_#jB2?m6e@Caq5x<zWyF40wSWIjEAQnF8SRw|PY%Yt%& zyk35V&Zi$RBg{Qk!baG&?0f8>!l>Ay7*|S^S5<kc+iH*cv_`Ahry14u=?>{*hR+R? zMwfBgRA#zs?y#_yUo0u>M(bIdz!tT2FL;n0%-)_oofFsQbmk1_61hin@8{|B`WKEY z{Kp=0MDzDJmCk_kjC0zx-!<;ecYo!vdk%PpyaDf!cha}Ocgg=jpr@d|U@|xuOf6cu z=tzhSMMM9Fha<5<qVSEvQ$^9DYsGAFd+}IFPRY@d>!p&?%F?dVp)x_)fyEu=^%bFt z@0RGBmjss_T1qS}UpiFjs+?NZyzH;4XjQE0bakxy=V(!Mtj1XLWi3@3s_lKnwOqXX z_NzlHdg@lxjnotM+v|UASl@7M<*~*<<5*K!)A*{cRri`tHczd-&=P1l+Hxs*V&p9R E4^@G-#{d8T delta 2090 zcmZ`(YfKbZ6ux(6cV^j{oqazBme(%qu&gZXdxc$=hawhOQC@{2h%YwQ$EG%f+Jv=A z`@`54S<?P#tg$iCh7#kN##E{(#*n5YjV+|1)EaG2tThcy8)9_no#kaioXoxV+;h+O zoij7voWYa$qmy`FMr5+0e*gfe2LSYTb{r0)RfhIw&?@TO|IXecJAb>1_U8fk_UF)^ zj@>CwPnrR^eiWU%L&!m%6AYpK6|~O^9eBIjR`TwTXg>`A?%aQ9SBD+!paB@=IX^ql z(H#a;kOAP<Ad1g8*l~c}GZFWGg&g0bfFt2Uhu;P`Is&&VPhB}K4<So~>cIg4Ajp{Q zj0Rzf^4RQ!+1s<zvv(I>EGz)H@IWhw9)(=&0wlDNQSd45#p0j_@fE{#n1+UiAaMqA zR_IX{!+dCkM$SNxkb!D#8Z3f#w@1ktS0j)|vkbC8gDD@H+#U$;OD)>Ii~=%EC}y6E zQp93h^jwI;bWA4h6EVX0zXE{>MwE1jln5V)H_jv_iz!U>Fe#bYsLK+FF;UV3hEs>K zJpvM=Xeh>hQ79mVnbVJJEb{mmqC=$6OE6@wn4t(FeoaUd)wG-tLTN?(3F1PGP)*V4 zx(X(liqFXu_N;1UwiK2DAOuIjcKkg&Ho@NUQ4^pS_hEkkJ;;j|H>E|4N~g(aAX1@L z<Mz1G1G%uI60f(8)#=zeueT(yY6o&zxq|Iuj1(nc!o7*}z}i^&P|mXQvBQ)=f<jw9 zM;{6Ut7$C&WE;>6=S(iAr#M>GB##(z1EE%F_}A@nnk?|u6?7_CRxzHKUY);<Rqz!k zSU|7jl>jwJ19`v=0w4&QKsz`Hx<CXefpbRqtS(O)RI3P%M3o_PdDZd;dOsvr3>|ij zmeewkw>_%{(uzu>^;n_H>Gp711lIB-%ZAot*EsBM2Lc)mCeFiyk-fZ<`1(jag!K@^ zG(kctDyP-WPMT#hl}1^VBBi8=5m90ly2Yn68J2QNjmn;Kk(3CMYTA!bumPg0LA?Yf zJDgMkeVjr_gy)geBA9l{jBhSu;m6DDkp%s~68lPkf039^v4&jQzgW^T1z#G^zEYZP z>6uobD-ZQQIivtD0MU{reY7N$8o`pR<{Y0wE?4++%+@?}j$e*0e~vltWfi`xxT(eC zwXnulsS~9~{bC$^h&!;qK?>TaNc2ewqk)S)JEw5q4xNtIJ)cE~u2mb3to0?%V}CZc z3UvHGq|!Jt?QTEhMT|6+_^+ZJZC}eIN~Ht>e%ARd7Jn$pwV#kFB_q5CO<s%NZ}G-% zv_HmT4|mPb5e(b}r|_-VH1L2!04Pa<Z#(V)>RT>HLWxMLqzzTh_blF>4hu9ktt}y9 zUS~GWg!)+Gk2V>kP(>JR2>~LJ2C&8MCq-?JhjZ)Eg#5g|ZG0Pe(JIkHeZRgog+bC1 z&;+9(gpBq5{Qi6_pI@smC=e(m1SJUSYxS6pSq#^sZ~;w9l&CK)hC^#2oM++V#lo7@ zEz#ax9kKCnB&Z*4{?*?u_5A}V0smRRbk`S?%WE`r{VE)dWsTs_Jb{j19^+_#6pb(% z_m&24hokj3O7RSEGd6JJ7>rQQ=sx<H<QOAk!cviRw{%37E63z_75fzDl|VVDGO6a( zW$J4hz2=ejqIOCf*X8Phy0>%#EW<XkV{ANmBt@5UN1vfTlPXT#mwG9!C%r49HS?p) zyM{EwjIqEtnYANZkbOD(v1yy>ylI{*<ia_R%qDY-c_ud^&fS|kl>3+En{|qHW$SL{ z%~*BTw)}9x>4ITfv8~5W*mu}3JFJdNPTJ{n4!eA=F4v$t=uvnsdWY6`7pe-sE6ON3 zQgp>v=nMOk{r8Le16hHAz@3tC$$V*H>50<0vg)$ovghT_^8Mv!%cnM2H+;GAlZx(5 zZJU0oENiW7tsLB(wK=qT>b3eRO;t}dQys4Eub!;wuelf88Jyd)Var%;L2X;@rLFbb z>~*5LsrsRYu7;V$tj4~^r%fL;&A&d<+|oSPvbQDv#@SX`>kr#C+kbCsX&Y{P5)0oN GhW`Obn8q>y diff --git a/storybook/stories/Avatar.js b/storybook/stories/Avatar.js index 262896f0530..fb642728baa 100644 --- a/storybook/stories/Avatar.js +++ b/storybook/stories/Avatar.js @@ -1,5 +1,5 @@ import React from 'react'; -import { ScrollView, StyleSheet } from 'react-native'; +import { ScrollView, StyleSheet, View } from 'react-native'; import PropTypes from 'prop-types'; import { themes } from '../../app/constants/colors'; @@ -9,11 +9,6 @@ import StoriesSeparator from './StoriesSeparator'; import sharedStyles from '../../app/views/Styles'; const styles = StyleSheet.create({ - status: { - borderWidth: 4, - bottom: -4, - right: -4 - }, custom: { padding: 16 } @@ -117,11 +112,12 @@ const AvatarStories = ({ theme }) => ( server={server} size={56} > - <Status - size={24} - style={[sharedStyles.status, styles.status]} - theme={theme} - /> + <View style={[sharedStyles.status, { backgroundColor: themes[theme].backgroundColor }]}> + <Status + size={20} + status='online' + /> + </View> </Avatar> <Separator title='Wrong server' theme={theme} /> <Avatar diff --git a/storybook/stories/RoomItem.js b/storybook/stories/RoomItem.js index 2a5d0991763..819a149b2fb 100644 --- a/storybook/stories/RoomItem.js +++ b/storybook/stories/RoomItem.js @@ -65,6 +65,7 @@ export default ({ theme }) => { <RoomItem status='away' /> <RoomItem status='busy' /> <RoomItem status='offline' /> + <RoomItem status='loading' /> <RoomItem status='wrong' /> <Separator title='Alerts' /> From c5bf13c22d4bcb332e133091334fcf00d006e601 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 31 Mar 2021 17:01:20 -0400 Subject: [PATCH 079/177] [REGRESSION] Auth via deep linking not working (#3015) * Update rocketchat and add e2e test for deep linking * Update rocketchat and add e2e test for deep linking * Update deeplinking e2e * fix deep linking auth * Test deep linking auth * Fix deeplink to rid and add tests * Small refactor * Add non existing server test Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/sagas/deepLinking.js | 19 +++- e2e/data/data.docker.js | 2 +- e2e/helpers/app.js | 24 ++-- e2e/helpers/data_setup.js | 12 +- e2e/tests/assorted/07-changeserver.spec.js | 10 +- e2e/tests/assorted/10-deleteserver.spec.js | 10 +- e2e/tests/assorted/11-deeplinking.spec.js | 123 +++++++++++++++++++++ 7 files changed, 167 insertions(+), 33 deletions(-) create mode 100644 e2e/tests/assorted/11-deeplinking.spec.js diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index 21e0695fb29..184a4d96e2d 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -15,6 +15,7 @@ import { } from '../actions/app'; import { localAuthenticate } from '../utils/localAuthentication'; import { goRoom } from '../utils/goRoom'; +import { loginRequest } from '../actions/login'; const roomTypes = { channel: 'c', direct: 'd', group: 'p', channels: 'l' @@ -41,9 +42,13 @@ const popToRoot = function popToRoot({ isMasterDetail }) { const navigate = function* navigate({ params }) { yield put(appStart({ root: ROOT_INSIDE })); - if (params.path) { - const [type, name] = params.path.split('/'); - if (type !== 'invite') { + if (params.path || params.rid) { + let type; + let name; + if (params.path) { + [type, name] = params.path.split('/'); + } + if (type !== 'invite' || params.rid) { const room = yield RocketChat.canOpenRoom(params); if (room) { const item = { @@ -110,7 +115,11 @@ const handleOpen = function* handleOpen({ params }) { // If there's host, continue if (!/^(http|https)/.test(host)) { - host = `https://${ host }`; + if (/^localhost(:\d+)?/.test(host)) { + host = `http://${ host }`; + } else { + host = `https://${ host }`; + } } else { // Notification should always come from https host = host.replace('http://', 'https://'); @@ -163,7 +172,7 @@ const handleOpen = function* handleOpen({ params }) { if (params.token) { yield take(types.SERVER.SELECT_SUCCESS); - yield RocketChat.connect({ server: host, user: { token: params.token } }); + yield put(loginRequest({ resume: params.token }, true)); yield take(types.LOGIN.SUCCESS); yield navigate({ params }); } else { diff --git a/e2e/data/data.docker.js b/e2e/data/data.docker.js index e0bb530e184..a5d56af56ed 100644 --- a/e2e/data/data.docker.js +++ b/e2e/data/data.docker.js @@ -1,7 +1,7 @@ const random = require('./helpers/random'); const value = random(20); const data = { - server: 'http://127.0.0.1:3000', + server: 'http://localhost:3000', adminUser: 'admin', adminPassword: 'password', alternateServer: 'https://stable.rocket.chat', diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index 993f2eb9183..8a07cb45c2a 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -3,30 +3,29 @@ const { } = require('detox'); const data = require('../data'); -async function navigateToWorkspace() { +async function navigateToWorkspace(server = data.server) { await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000); await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).replaceText(data.server); + await element(by.id('new-server-view-input')).replaceText(server); await element(by.id('new-server-view-button')).tap(); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); await expect(element(by.id('workspace-view'))).toBeVisible(); } -async function navigateToLogin() { +async function navigateToLogin(server) { await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); - await navigateToWorkspace(); + await navigateToWorkspace(server); await element(by.id('workspace-view-login')).tap(); await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); await expect(element(by.id('login-view'))).toBeVisible(); } -async function navigateToRegister() { +async function navigateToRegister(server) { await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); - await navigateToWorkspace(); + await navigateToWorkspace(server); await element(by.id('workspace-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); - await expect(element(by.id('register-view'))).toBeVisible(); } async function login(username, password) { @@ -120,6 +119,14 @@ async function tryTapping(theElement, timeout, longtap = false){ } } +const checkServer = async(server) => { + const label = `Connected to ${ server }`; + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.label(label))).toBeVisible().withTimeout(10000); + await element(by.id('sidebar-close-drawer')).tap(); +} + module.exports = { navigateToWorkspace, navigateToLogin, @@ -133,5 +140,6 @@ module.exports = { tapBack, sleep, searchRoom, - tryTapping + tryTapping, + checkServer }; \ No newline at end of file diff --git a/e2e/helpers/data_setup.js b/e2e/helpers/data_setup.js index 8f95f0b780b..66c6ea086a3 100644 --- a/e2e/helpers/data_setup.js +++ b/e2e/helpers/data_setup.js @@ -135,6 +135,16 @@ const setup = async () => { return } +const get = (endpoint) => { + console.log(`GET /${ endpoint }`) + return rocketchat.get(endpoint); +} + +const post = (endpoint, body) => { + console.log(`POST /${ endpoint } ${ JSON.stringify(body) }`) + return rocketchat.post(endpoint, body); +} + module.exports = { - setup, sendMessage + setup, sendMessage, get, post } \ No newline at end of file diff --git a/e2e/tests/assorted/07-changeserver.spec.js b/e2e/tests/assorted/07-changeserver.spec.js index e91acfbb218..63506f8935c 100644 --- a/e2e/tests/assorted/07-changeserver.spec.js +++ b/e2e/tests/assorted/07-changeserver.spec.js @@ -2,15 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { sleep, navigateToLogin, login } = require('../../helpers/app'); - -const checkServer = async(server) => { - const label = `Connected to ${ server }`; - await element(by.id('rooms-list-view-sidebar')).tap(); - await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); - await waitFor(element(by.label(label))).toBeVisible().withTimeout(60000); - await element(by.id('sidebar-close-drawer')).tap(); -} +const { navigateToLogin, login, checkServer } = require('../../helpers/app'); const reopenAndCheckServer = async(server) => { await device.launchApp({ permissions: { notifications: 'YES' } }); diff --git a/e2e/tests/assorted/10-deleteserver.spec.js b/e2e/tests/assorted/10-deleteserver.spec.js index 7d5d53e740c..474ebd26025 100644 --- a/e2e/tests/assorted/10-deleteserver.spec.js +++ b/e2e/tests/assorted/10-deleteserver.spec.js @@ -2,15 +2,7 @@ const { device, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { sleep, navigateToLogin, login } = require('../../helpers/app'); - -const checkServer = async(server) => { - const label = `Connected to ${ server }`; - await element(by.id('rooms-list-view-sidebar')).tap(); - await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); - await waitFor(element(by.label(label))).toBeVisible().withTimeout(10000); - await element(by.id('sidebar-close-drawer')).tap(); -} +const { sleep, navigateToLogin, login, checkServer } = require('../../helpers/app'); describe('Delete server', () => { before(async() => { diff --git a/e2e/tests/assorted/11-deeplinking.spec.js b/e2e/tests/assorted/11-deeplinking.spec.js new file mode 100644 index 00000000000..cdde0323a82 --- /dev/null +++ b/e2e/tests/assorted/11-deeplinking.spec.js @@ -0,0 +1,123 @@ +const { + device, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { tapBack, checkServer, navigateToRegister, login } = require('../../helpers/app'); +const { post, get } = require('../../helpers/data_setup'); + +const DEEPLINK_METHODS = { AUTH: 'auth', ROOM: 'room' }; +const getDeepLink = (method, server, params) => { + const deeplink = `rocketchat://${ method }?host=${ server.replace(/^(http:\/\/|https:\/\/)/, '') }&${params}`; + console.log(`Deeplinking to: ${ deeplink }`); + return deeplink; +}; + +describe('Deep linking', () => { + let userId; + let token; + before(async() => { + const loginResult = await post('login', { + user: data.users.regular.username, + password: data.users.regular.password + }) + userId = loginResult.data.data.userId + token = loginResult.data.data.authToken + }); + + describe('Authentication', () => { + it('should run a deep link to an invalid account and raise error', async() => { + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true, + url: getDeepLink(DEEPLINK_METHODS.AUTH, data.server, 'userId=123&token=abc'), + sourceApp: 'com.apple.mobilesafari' + }); + await waitFor(element(by.text('You\'ve been logged out by the server. Please log in again.'))).toExist().withTimeout(5000); // TODO: we need to improve this message + }); + + const authAndNavigate = async() => { + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true, + url: getDeepLink(DEEPLINK_METHODS.AUTH, data.server, `userId=${ userId }&token=${ token }&path=group/${ data.groups.private.name }`), + sourceApp: 'com.apple.mobilesafari' + }); + await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(10000); + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await checkServer(data.server); + await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toBeVisible().withTimeout(2000); + } + + it('should authenticate and navigate', async() => { + await authAndNavigate(); + }); + + it('should authenticate while logged in another server', async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToRegister(data.alternateServer); + await element(by.id('register-view-name')).replaceText(data.registeringUser.username); + await element(by.id('register-view-username')).replaceText(data.registeringUser.username); + await element(by.id('register-view-email')).replaceText(data.registeringUser.email); + await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await authAndNavigate(); + }); + }); + + describe('Room', () => { + describe('While logged in', async() => { + it('should navigate to the room using path', async() => { + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true, + url: getDeepLink(DEEPLINK_METHODS.ROOM, data.server, `path=group/${ data.groups.private.name }`), + sourceApp: 'com.apple.mobilesafari' + }); + await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(10000); + }); + + it('should navigate to the room using rid', async() => { + const roomResult = await get(`groups.info?roomName=${ data.groups.private.name }`) + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true, + url: getDeepLink(DEEPLINK_METHODS.ROOM, data.server, `rid=${ roomResult.data.group._id }`), + sourceApp: 'com.apple.mobilesafari' + }); + await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(10000); + await tapBack(); + }); + }); + + describe('Others', async() => { + it('should change server', async() => { + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await element(by.id(`rooms-list-header-server-${ data.alternateServer }`)).tap(); + await checkServer(data.alternateServer); + + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true, + url: getDeepLink(DEEPLINK_METHODS.ROOM, data.server, `path=group/${ data.groups.private.name }`), + sourceApp: 'com.apple.mobilesafari' + }); + await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(10000); + }); + + it('should add a not existing server and fallback to the previous one', async() => { + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true, + url: getDeepLink(DEEPLINK_METHODS.ROOM, 'https://google.com'), + sourceApp: 'com.apple.mobilesafari' + }); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await checkServer(data.server); + }); + }); + }); +}); From 4e0dc784c1b2a6aaf747586dc4eb6cba25b75fae Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 1 Apr 2021 09:24:28 -0300 Subject: [PATCH 080/177] [FIX] Create discussion request being sent with null value on encryption param (#3033) --- app/views/CreateDiscussionView/index.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/app/views/CreateDiscussionView/index.js b/app/views/CreateDiscussionView/index.js index 5a19dc5ed4e..46b2d6cde3b 100644 --- a/app/views/CreateDiscussionView/index.js +++ b/app/views/CreateDiscussionView/index.js @@ -116,10 +116,14 @@ class CreateChannelView extends React.Component { } = this.state; const { create } = this.props; - // create discussion - create({ - prid: prid || rid, pmid, t_name, reply, users, encrypted - }); + const params = { + prid: prid || rid, pmid, t_name, reply, users + }; + if (this.isEncryptionEnabled) { + params.encrypted = encrypted ?? false; + } + + create(params); }; valid = () => { @@ -145,6 +149,12 @@ class CreateChannelView extends React.Component { this.setState({ users: value }); } + get isEncryptionEnabled() { + const { channel } = this.state; + const { encryptionEnabled } = this.props; + return encryptionEnabled && E2E_ROOM_TYPES[channel?.t]; + } + onEncryptedChange = (value) => { logEvent(events.CD_TOGGLE_ENCRY); this.setState({ encrypted: value }); @@ -152,10 +162,10 @@ class CreateChannelView extends React.Component { render() { const { - name, users, encrypted, channel + name, users, encrypted } = this.state; const { - server, user, loading, blockUnauthenticatedAccess, theme, serverVersion, encryptionEnabled + server, user, loading, blockUnauthenticatedAccess, theme, serverVersion } = this.props; return ( <KeyboardView @@ -196,7 +206,7 @@ class CreateChannelView extends React.Component { serverVersion={serverVersion} theme={theme} /> - {encryptionEnabled && E2E_ROOM_TYPES[channel?.t] + {this.isEncryptionEnabled ? ( <> <Text style={[styles.label, { color: themes[theme].titleText }]}>{I18n.t('Encrypted')}</Text> From 98b2b0af4a3202e1a6317850dc769cea2ec891de Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 1 Apr 2021 09:28:39 -0300 Subject: [PATCH 081/177] [CHORE] Use JSON files for i18n (#3011) --- app/i18n/index.js | 28 +- app/i18n/locales/ar.js | 661 --------------------------------- app/i18n/locales/ar.json | 661 +++++++++++++++++++++++++++++++++ app/i18n/locales/de.js | 708 ----------------------------------- app/i18n/locales/de.json | 708 +++++++++++++++++++++++++++++++++++ app/i18n/locales/en.js | 710 ------------------------------------ app/i18n/locales/en.json | 710 ++++++++++++++++++++++++++++++++++++ app/i18n/locales/es-ES.js | 456 ----------------------- app/i18n/locales/es-ES.json | 456 +++++++++++++++++++++++ app/i18n/locales/fr.js | 623 ------------------------------- app/i18n/locales/fr.json | 623 +++++++++++++++++++++++++++++++ app/i18n/locales/it.js | 708 ----------------------------------- app/i18n/locales/it.json | 708 +++++++++++++++++++++++++++++++++++ app/i18n/locales/ja.js | 534 --------------------------- app/i18n/locales/ja.json | 492 +++++++++++++++++++++++++ app/i18n/locales/nl.js | 483 ------------------------ app/i18n/locales/nl.json | 483 ++++++++++++++++++++++++ app/i18n/locales/pt-BR.js | 657 --------------------------------- app/i18n/locales/pt-BR.json | 657 +++++++++++++++++++++++++++++++++ app/i18n/locales/pt-PT.js | 352 ------------------ app/i18n/locales/pt-PT.json | 352 ++++++++++++++++++ app/i18n/locales/ru.js | 708 ----------------------------------- app/i18n/locales/ru.json | 708 +++++++++++++++++++++++++++++++++++ app/i18n/locales/tr.js | 710 ------------------------------------ app/i18n/locales/tr.json | 710 ++++++++++++++++++++++++++++++++++++ app/i18n/locales/zh-CN.js | 682 ---------------------------------- app/i18n/locales/zh-CN.json | 682 ++++++++++++++++++++++++++++++++++ app/i18n/locales/zh-TW.js | 682 ---------------------------------- app/i18n/locales/zh-TW.json | 682 ++++++++++++++++++++++++++++++++++ 29 files changed, 8646 insertions(+), 8688 deletions(-) delete mode 100644 app/i18n/locales/ar.js create mode 100644 app/i18n/locales/ar.json delete mode 100644 app/i18n/locales/de.js create mode 100644 app/i18n/locales/de.json delete mode 100644 app/i18n/locales/en.js create mode 100644 app/i18n/locales/en.json delete mode 100644 app/i18n/locales/es-ES.js create mode 100644 app/i18n/locales/es-ES.json delete mode 100644 app/i18n/locales/fr.js create mode 100644 app/i18n/locales/fr.json delete mode 100644 app/i18n/locales/it.js create mode 100644 app/i18n/locales/it.json delete mode 100644 app/i18n/locales/ja.js create mode 100644 app/i18n/locales/ja.json delete mode 100644 app/i18n/locales/nl.js create mode 100644 app/i18n/locales/nl.json delete mode 100644 app/i18n/locales/pt-BR.js create mode 100644 app/i18n/locales/pt-BR.json delete mode 100644 app/i18n/locales/pt-PT.js create mode 100644 app/i18n/locales/pt-PT.json delete mode 100644 app/i18n/locales/ru.js create mode 100644 app/i18n/locales/ru.json delete mode 100644 app/i18n/locales/tr.js create mode 100644 app/i18n/locales/tr.json delete mode 100644 app/i18n/locales/zh-CN.js create mode 100644 app/i18n/locales/zh-CN.json delete mode 100644 app/i18n/locales/zh-TW.js create mode 100644 app/i18n/locales/zh-TW.json diff --git a/app/i18n/index.js b/app/i18n/index.js index b7436640be9..ae4846ee6f3 100644 --- a/app/i18n/index.js +++ b/app/i18n/index.js @@ -8,59 +8,59 @@ export const LANGUAGES = [ { label: 'English', value: 'en', - file: require('./locales/en').default + file: require('./locales/en.json') }, { label: '简体中文', value: 'zh-CN', - file: require('./locales/zh-CN').default + file: require('./locales/zh-CN.json') }, { label: '繁體中文', value: 'zh-TW', - file: require('./locales/zh-TW').default + file: require('./locales/zh-TW.json') }, { label: 'Deutsch', value: 'de', - file: require('./locales/de').default + file: require('./locales/de.json') }, { label: 'Español (ES)', value: 'es-ES', - file: require('./locales/es-ES').default + file: require('./locales/es-ES.json') }, { label: 'Français', value: 'fr', - file: require('./locales/fr').default + file: require('./locales/fr.json') }, { label: 'Português (BR)', value: 'pt-BR', - file: require('./locales/pt-BR').default + file: require('./locales/pt-BR.json') }, { label: 'Português (PT)', value: 'pt-PT', - file: require('./locales/pt-PT').default + file: require('./locales/pt-PT.json') }, { label: 'Russian', value: 'ru', - file: require('./locales/ru').default + file: require('./locales/ru.json') }, { label: 'Nederlands', value: 'nl', - file: require('./locales/nl').default + file: require('./locales/nl.json') }, { label: 'Italiano', value: 'it', - file: require('./locales/it').default + file: require('./locales/it.json') }, { label: '日本語', value: 'ja', - file: require('./locales/ja').default + file: require('./locales/ja.json') }, { label: 'العربية', value: 'ar', - file: require('./locales/ar').default + file: require('./locales/ar.json') }, { label: 'Türkçe', value: 'tr', - file: require('./locales/tr').default + file: require('./locales/tr.json') } ]; diff --git a/app/i18n/locales/ar.js b/app/i18n/locales/ar.js deleted file mode 100644 index a80b52485dd..00000000000 --- a/app/i18n/locales/ar.js +++ /dev/null @@ -1,661 +0,0 @@ -export default { - '1_person_reacted': 'تفاعل شخص 1', - '1_user': 'مستخدم 1', - 'error-action-not-allowed': '{{action}} غير مسموح', - 'error-application-not-found': 'لم يتم العثور على البرنامج', - 'error-archived-duplicate-name': 'هناك قناة مؤرشفة باسم {{room_name}}', - 'error-avatar-invalid-url': 'عنوان الصورة الرمزية غير صحيح: {{url}}', - 'error-avatar-url-handling': 'خطأ في معالجة الصورة الرمزية ({{url}}) للمستخدم {{username}}', - 'error-cant-invite-for-direct-room': 'لا يمكن دعوة المستخدم في الغرفة المباشرة', - 'error-could-not-change-email': 'تعذر تغيير البريد الإلكتروني', - 'error-could-not-change-name': 'تعذر تغيير الاسم', - 'error-could-not-change-username': 'تعذر تغيير اسم المستخدم', - 'error-could-not-change-status': 'تعذر تغيير الحالة', - 'error-delete-protected-role': 'لا يمكن حذف دور محمي', - 'error-department-not-found': 'القسم غير موجود', - 'error-direct-message-file-upload-not-allowed': 'مشاركة الملفات غير مسموح في الرسالة المباشرة', - 'error-duplicate-channel-name': 'القناة {{channel_name}} موجودة مسبقاً', - 'error-email-domain-blacklisted': 'عنوان اﻹيميل محظور', - 'error-email-send-failed': 'خطأ في إرسال البريد اﻹلكتروني: {{message}}', - 'error-save-image': 'خطأ عند حفظ الصورة', - 'error-save-video': 'خطأ عند حفظ الفيديو', - 'error-field-unavailable': '{{field}} مستخدم بالفعل :(', - 'error-file-too-large': 'حجم الملف كبير جداً', - 'error-importer-not-defined': 'المستورِد معرف بطريقة غير صحيحة، يجب تحديد نوع الإستيراد', - 'error-input-is-not-a-valid-field': '{{input}} غير صالح {{field}}', - 'error-invalid-actionlink': 'رابط الإجراء غير صالح', - 'error-invalid-arguments': 'وسائط غير صحيحة', - 'error-invalid-asset': 'ممتلكات غير صحيحة', - 'error-invalid-channel': 'قناة غير صحيحة', - 'error-invalid-channel-start-with-chars': 'قناة غير صحيحة. تبدأ القناة بحرف @ أو #', - 'error-invalid-custom-field': 'حقل مخصص غير صالح', - 'error-invalid-custom-field-name': 'اسم الحقل المخصص غير صالح. استخدم الحروف والأرقام والواصلات والشرطات السفلية فقط', - 'error-invalid-date': 'التاريخ غير صالح', - 'error-invalid-description': 'الوصف غير صالح', - 'error-invalid-domain': 'عنوان الموقع غير صالح', - 'error-invalid-email': 'عنوان البريد اﻹلكتروني غير صالح {{emai}}', - 'error-invalid-email-address': 'عنوان البريد اﻹلكتروني غير صالح', - 'error-invalid-file-height': 'ارتفاع الملف غير صالح', - 'error-invalid-file-type': 'نوع الملف غير صالح', - 'error-invalid-file-width': 'عرض الملف غير صالح', - 'error-invalid-from-address': 'عنوان غير صالح في خانة (من)', - 'error-invalid-integration': 'تكامل غير صالح', - 'error-invalid-message': 'رسالة غير صالحة', - 'error-invalid-method': 'طريقة غير صالحة', - 'error-invalid-name': 'اسم غير صالح', - 'error-invalid-password': 'كلمة مرور خاطئة', - 'error-invalid-redirectUri': 'رابط إعادة توجيه غير صحيح', - 'error-invalid-role': 'دور غير صالح', - 'error-invalid-room': 'غرفة غير صالحة', - 'error-invalid-room-name': '{{room_name}} اسم الغرفة غير صالح', - 'error-invalid-room-type': '{{type}} نوع الغرفة غير صالح', - 'error-invalid-settings': 'الإعدادات المعطاة غير صالحة', - 'error-invalid-subscription': 'اشتراك غير صالح', - 'error-invalid-token': 'الرمز غير صالح', - 'error-invalid-triggerWords': 'كلمات محفزة غير صالحة', - 'error-invalid-urls': 'عناوين غير صالحة', - 'error-invalid-user': 'مستخدم غير صالح', - 'error-invalid-username': 'اسم المستخدم غير صالح', - 'error-invalid-webhook-response': 'الرد التلقائي من العنوان استجاب برمز مغاير عن 200', - 'error-message-deleting-blocked': 'حذف الرسالة محظور', - 'error-message-editing-blocked': 'تعديل الرسالة محظور', - 'error-message-size-exceeded': 'حجم الرسالة تجاوز الحد المسموح به (Message_MaxAllowedSize)', - 'error-missing-unsubscribe-link': 'يجب عليك تقديم رابط [unsubscribe]', - 'error-no-tokens-for-this-user': 'لا توجد رموز لهذا المستخدم', - 'error-not-allowed': 'غير مسموح', - 'error-not-authorized': 'غير مصرح', - 'error-push-disabled': 'إرسال الإشعارات معطل', - 'error-remove-last-owner': 'هذا هو المالك الأخير. يرجى تعيين مالك جديد قبل إزالة هذا المالك', - 'error-role-in-use': 'لا يمكن حذف الدور لأنه قيد الاستخدام', - 'error-role-name-required': 'اسم الدور مطلوب', - 'error-the-field-is-required': 'هذا الحقل {{field}} مطلوب', - 'error-too-many-requests': 'خطأ، تلقينا الكثير من الطلبات. من فضلك خفف السرعة، يجب الانتظار لمدة {{seconds}} ثانية قبل المحاولة مرة أخرى', - 'error-user-is-not-activated': 'المستخدم غير منشط', - 'error-user-has-no-roles': 'ليس للمستخدم أدوار', - 'error-user-limit-exceeded': 'يتجاوز عدد المستخدمين الذين تحاول دعوتهم إلى #channel_name الحد الذي حدده المشرف', - 'error-user-not-in-room': 'المستخدم ليس في هذه الغرفة', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'التسجيل معطل', - 'error-user-registration-secret': 'التسجيل مسموح به عبر عنوان الويب السري فقط', - 'error-you-are-last-owner': 'أنت المالك الأخير. يرجى تعيين مالك جديد قبل مغادرة الغرفة', - Actions: 'الإجراءات', - activity: 'نشاط', - Activity: 'النشاط', - Add_Reaction: 'إضافة تفاعل', - Add_Server: 'إضافة خادم', - Add_users: 'إضافة مستخدمين', - Admin_Panel: 'لوحة الإدارة', - Agent: 'المندوب', - Alert: 'إنذار', - alert: 'إنذار', - alerts: 'الإنذارات', - All_users_in_the_channel_can_write_new_messages: 'يمكن لجميع المستخدمين في القناة كتابة رسائل جديدة', - A_meaningful_name_for_the_discussion_room: 'اسم معبر لغرفة النقاش', - All: 'الكل', - All_Messages: 'كل الرسائل', - Allow_Reactions: 'السماح للتفاعلات', - Alphabetical: 'أبجدي', - and_more: 'وأكثر', - and: 'و', - announcement: 'إعلان', - Announcement: 'إعلان', - Apply_Your_Certificate: 'طبق شهادتك', - Applying_a_theme_will_change_how_the_app_looks: 'سيؤدي تطبيق السمة إلى تغيير شكل التطبيق', - ARCHIVE: 'أرشفة', - archive: 'أرشفة', - are_typing: 'يكتب', - Are_you_sure_question_mark: 'هل أنت متأكد؟', - Are_you_sure_you_want_to_leave_the_room: 'متأكد من مغادرة الغرفة {{room}}؟', - Audio: 'صوت', - Authenticating: 'تتم المصادقة', - Automatic: 'تلقائي', - Auto_Translate: 'ترجمة تلقائية', - Avatar_changed_successfully: 'تم تغيير الصورة الرمزية بنجاح!', - Avatar_Url: 'عنوان ويب الصورة الرمزية', - Away: 'غير متواجد', - Back: 'عودة', - Black: 'أسود', - Block_user: 'حظر المستخدم', - Browser: 'المتصفح', - Broadcast_channel_Description: 'يمكن فقط للمستخدمين المصرح لهم كتابة رسائل جديدة، ولكن سيتمكن المستخدمون الآخرون من الرد', - Broadcast_Channel: 'قناة البث', - Busy: 'مشغول', - By_proceeding_you_are_agreeing: 'من خلال المتابعة، أنت توافق على', - Cancel_editing: 'إلغاء التعديل', - Cancel_recording: 'إلغاء التسجيل الصوتي', - Cancel: 'إلغاء', - changing_avatar: 'تغيير الصورة الرمزية', - creating_channel: 'إنشاء قناة', - creating_invite: 'إنشاء دعوة', - Channel_Name: 'اسم القناة', - Channels: 'قنوات', - Chats: 'الرسائل', - Call_already_ended: 'تم انهاء المكالمة بالفعل !', - Clear_cookies_alert: 'هل تريد حذف جميع ملفات تعريف الإرتباط؟', - Clear_cookies_desc: 'هذا الإجراء سيحذف ملفات تعريف الإرتباط الخاصة بتسجيل الدخول مما يسمح بتسجيل الدخول لحسابات أخرى', - Clear_cookies_yes: 'نعم، مسح ملفات الإرتباط', - Clear_cookies_no: 'لا، احتفظ بملفات تعريف الإرتباط', - Click_to_join: 'انقر للانضمام!', - Close: 'إغلاق', - Close_emoji_selector: 'إغلاق محدد الرموز التعبيرية', - Closing_chat: 'إغلاق المحادثة', - Change_language_loading: 'تغيير اللغة', - Chat_closed_by_agent: 'المندوب أغلق المحادثة', - Choose: 'اختر', - Choose_from_library: 'اختر من المكتبة', - Choose_file: 'اختر ملف', - Choose_where_you_want_links_be_opened: 'اختر المكان الذي تريد فتح الروابط فيه', - Code: 'الرمز', - Code_or_password_invalid: 'الرمز أو كلمة المرور خاطئة', - Collaborative: 'تعاونية', - Confirm: 'تأكيد', - Connect: 'اتصال', - Connected: 'متصل', - connecting_server: 'يتم الاتصال بالخادم', - Connecting: 'جار الاتصال...', - Contact_us: 'تواصل معنا', - Contact_your_server_admin: 'اتصل بمسؤول الخادم', - Continue_with: 'متابعة بـ', - Copied_to_clipboard: 'تم النسخ للحافظة!', - Copy: 'نسخ', - Conversation: 'محادثة', - Permalink: 'رابط ثابت', - Certificate_password: 'الرقم السري للشهادة', - Clear_cache: 'امسح ذاكرة التخزين المؤقتة للخادم', - Clear_cache_loading: 'يتم مسح ذاكرة التخزين', - Whats_the_password_for_your_certificate: 'ماهي كلمة المرور للشهادة؟', - Create_account: 'إنشاء حساب', - Create_Channel: 'إنشاء قناة', - Create_Direct_Messages: 'إنشاء رسالة مباشرة', - Create_Discussion: 'إنشاء نقاش', - Created_snippet: 'إنشاء مقتطف', - Create_a_new_workspace: 'إنشاء مساحة عمل جديدة', - Create: 'إنشاء', - Custom_Status: 'حالة مخصصة', - Dark: 'داكن', - Dark_level: 'مستوى السمة الداكنة', - Default: 'افتراضي', - Default_browser: 'المتصفح الأساسي', - Delete_Room_Warning: 'سيؤدي حذف الغرفة إلى حذف جميع الرسائل المنشورة. لا يمكن التراجع بعد الحذف', - Department: 'القسم', - delete: 'حذف', - Delete: 'حذف', - DELETE: 'حذف', - deleting_room: 'حذف الغرفة', - description: 'وصف', - Description: 'وصف', - DESKTOP_OPTIONS: 'خيارات سطح المكتب', - DESKTOP_NOTIFICATIONS: 'إشعارات سطح المكتب', - Desktop_Alert_info: 'هذه الإشعارات ترسل لسطح المكتب', - Directory: 'مجلد', - Direct_Messages: 'رسالة مباشرة', - Disable_notifications: 'أوقف الإشعارات', - Discussions: 'مناقشات', - Discussion_Desc: 'ساهم بإعطاء نظرة عامة لما يجري. عند إنشاء مناقشة يتم إنشاء قناة فرعية وربطها بالقناة المحددة', - Discussion_name: 'اسم النقاش', - Done: 'تم', - Dont_Have_An_Account: 'ليس لديك حساب؟', - Do_you_have_an_account: 'هل لديك حساب؟', - Do_you_have_a_certificate: 'هل لديك شهادة؟', - Do_you_really_want_to_key_this_room_question_mark: 'هل تريد حقاً {{key}} هذه الغرفة؟', - E2E_How_It_Works_info1: 'يمكنك الآن إنشاء مجموعات خاصة ورسائل مباشرة مشفرة. بإمكانك أيضاً تشفير المجموعات الخاصة والرسائل المباشرة الموجودة مسبقاً', - E2E_How_It_Works_info2: 'التشفير يتم بين الطرفيات بمعنى أن المفتاح سيستخدم لتشفير وفك تشفير رسائلك ولن يتم حفظه في الخادم. لذلك يترتب عليك حفظ كلمة المرور هذه في مكان آمن', - E2E_How_It_Works_info3: 'حين الاستمرار سيتم إنشاء كلمة المرور بين الطرفيات', - E2E_How_It_Works_info4: 'بإمكانك أيضاً إنشاء كلمة مرور جديدة لمفتاح التشفير في أي وقت عند دخولك بكلمة المرور الحالية لمفتاح التشفير', - edit: 'تعديل', - edited: 'معدل', - Edit: 'تعديل', - Edit_Status: 'تعديل الحالة', - Edit_Invite: 'تعديل الدعوة', - End_to_end_encrypted_room: 'غرفة مشفرة بين الطرفيات', - end_to_end_encryption: 'تشفير بين الطرفيات', - Email_Notification_Mode_All: 'لكل إشارة أو رسالة مباشرة', - Email_Notification_Mode_Disabled: 'معطل', - Email_or_password_field_is_empty: 'حقل البريد الإلكتروني أو كلمة المرور فارغ', - Email: 'البريد الإلكتروني', - EMAIL: 'البريد الإلكتروني', - email: 'البريد الإلكتروني', - Empty_title: 'عنوان فارغ', - Enable_Auto_Translate: 'تمكين الترجمة التلقائية', - Enable_notifications: 'تفعيل الإشعارات', - Encrypted: 'مشفر', - Encrypted_message: 'رسالة مشفرة', - Enter_Your_E2E_Password: 'أدخل كلمة المرور بين الطرفيات', - Enter_Your_Encryption_Password_desc1: 'سيمكنك هذا من الوصول لرسائلك المباشرة والمجموعات الخاصة', - Enter_Your_Encryption_Password_desc2: 'يجب إدخال كلمة المرور لتشفير وفك تشفير الرسائل المرسلة', - Encryption_error_title: 'كلمة المرور المشفرة خاطئة', - Encryption_error_desc: 'تعذر قراءة مفتاح التشفير أثناء الاستيراد', - Everyone_can_access_this_channel: 'يمكن للجميع الوصول إلى هذه القناة', - Error_uploading: 'خطأ في الرفع', - Expiration_Days: 'انتهاء (أيام)', - Favorite: 'مفضل', - Favorites: 'مفضلات', - Files: 'ملفات', - File_description: 'وصف الملف', - File_name: 'اسم الملف', - Finish_recording: 'إنهاء التسجيل', - Following_thread: 'متابعة الموضوع', - For_your_security_you_must_enter_your_current_password_to_continue: 'من أجل حمايتك، يجب عليك إدخال كلمة المرور الحالية للمتابعة', - Forgot_password_If_this_email_is_registered: 'إن كان البريد الإلكتروني مسجلاً، فسنرسل تعليمات إعادة تعيين كلمة المرور الخاصة بك. إذا لم تتلق بريداً إلكترونياً قريباً، فيرجى العودة والمحاولة مرة أخرى', - Forgot_password: 'هل نسيت كلمة المرور؟', - Forgot_Password: 'نسيت كلمة المرور', - Forward: 'إعادة توجيه', - Forward_Chat: 'إعادة توجيه المحادثة', - Forward_to_department: 'إعادة توجيه للقسم', - Forward_to_user: 'إعادة توجيه لمستخدم', - Full_table: 'انقر لرؤية الجدول كاملاً', - Generate_New_Link: 'إنشاء رابط جديد', - Group_by_favorites: 'جمع حسب المفضلة', - Group_by_type: 'جمع حسب النوع', - Hide: 'إخفاء', - Has_joined_the_channel: 'انضم إلى القناة', - Has_joined_the_conversation: 'انضم إلى المحادثة', - Has_left_the_channel: 'غادر القناة', - Hide_System_Messages: 'إخفاء رسائل النظام', - Hide_type_messages: 'إخفاء رسائل "{{type}}"', - How_It_Works: 'طريقة العمل', - Message_HideType_uj: 'مستخدم انضم', - Message_HideType_ul: 'مستخدم غادر', - Message_HideType_ru: 'مستخدم حُذف', - Message_HideType_au: 'مستخدم أضيف', - Message_HideType_mute_unmute: 'صوت المستخدم كتم / فتح', - Message_HideType_r: 'اسم الغرفة تغير', - Message_HideType_ut: 'مستخدم انضم للمحادثة', - Message_HideType_wm: 'ترحيب', - Message_HideType_rm: 'رسالة حُذفت', - Message_HideType_subscription_role_added: 'تعيين دور جديد', - Message_HideType_subscription_role_removed: 'دور أصبح غير معرف', - Message_HideType_room_archived: 'غرفة أرشفت', - Message_HideType_room_unarchived: 'غرفة ألغيت أرشفتها', - I_Saved_My_E2E_Password: 'قمت بحفظ كلمة المرور الطرفية', - IP: ' عنوان بروتوكول الإنترنت (الآيبي)', - In_app: 'في التطبيق', - IN_APP_AND_DESKTOP: 'داخل التطبيق وسطح المكتب', - In_App_and_Desktop_Alert_info: 'يعرض شعاراً أعلى الشاشة عندما يكون التطبيق مفتوحًا، ويعرض إشعاراً على سطح المكتب', - Invisible: 'غير مرئي', - Invite: 'دعوة', - is_a_valid_RocketChat_instance: 'خادم Rocket.Chat صالح', - is_not_a_valid_RocketChat_instance: 'خادم Rocket.Chat غير صالح', - is_typing: 'يكتب', - Invalid_or_expired_invite_token: 'رمز الدعوة غير صالح أو منتهي الصلاحية', - Invalid_server_version: 'الخادم الذي تحاول الاتصال به يستخدم إصدارا لم يعد مدعوماً: {{currentVersion}}.\n\n النسخ المدعومة تبدأ من {{minVersion}}', - Invite_Link: 'رابط الدعوة', - Invite_users: 'دعوة المستخدمين', - Join: 'انضم', - Join_our_open_workspace: 'انضم لمساحة عملنا المفتوحة', - Join_your_workspace: 'انضم لمساحة عملك', - Just_invited_people_can_access_this_channel: 'يمكن للأشخاص المدعوين فقط الوصول إلى هذه القناة', - Language: 'اللغة', - last_message: 'الرسالة الأخيرة', - Leave_channel: 'مغادرة القناة', - leaving_room: 'مغادرة الغرفة', - leave: 'مغادرة', - Legal: 'قانوني', - Light: 'ساطع', - License: 'رخصة', - Livechat: 'محادثة مباشرة', - Livechat_edit: 'تعديل المحادثة المباشرة', - Login: 'تسجيل الدخول', - Login_error: 'تم رفض تسجيل الدخول الرجاء المحاولة مرة أخرى', - Login_with: 'تسجيل الدخول بـ', - Logging_out: 'تسجيل الخروج', - Logout: 'تسجيل الخروج', - Max_number_of_uses: 'أقصى عدد للاستخدام', - Max_number_of_users_allowed_is_number: 'أقصى عدد للمستخدمين {{maxUsers}}', - members: 'أفراد', - Members: 'أفراد', - Mentioned_Messages: 'الرسائل المذكورة', - mentioned: 'مشار', - Mentions: 'الإشارات', - Message_accessibility: 'الرسالة من {{user}} في {{time}}: {{message}}', - Message_actions: 'إجراءات الرسالة', - Message_pinned: 'الرسالة مثبتة', - Message_removed: 'الرسالة حذفت', - Message_starred: 'الرسالة مميزة', - Message_unstarred: 'الرسالة غير مميزة', - message: 'رسالة', - messages: 'رسائل', - Message: 'الرسالة', - Messages: 'الرسائل', - Message_Reported: 'تم التبليغ على الرسالة', - Microphone_Permission_Message: 'يحتاج Rocket.Chat للوصول إلى الميكروفون الخاص بك حتى تتمكن من إرسال رسالة صوتية', - Microphone_Permission: 'إذن الميكروفون', - Mute: 'كتم', - muted: 'مكتوم', - My_servers: 'الخوادم', - N_people_reacted: '{{n}} تفاعل الناس', - N_users: '{{n}} مستخدمين', - name: 'اسم', - Name: 'اسم', - Navigation_history: 'تاريخ التصفح', - Never: 'أبداً', - New_Message: 'رسالة جديدة', - New_Password: 'كلمة مرور جديدة', - New_Server: 'خادم جديد', - Next: 'التالي', - No_files: 'لا ملفات', - No_limit: 'لا حدود', - No_mentioned_messages: 'لا رسائل مشارة', - No_pinned_messages: 'لا رسائل مثبتة', - No_results_found: 'لا نتائج', - No_starred_messages: 'لا رسائل مميزة', - No_thread_messages: 'لا رسائل للموضوع', - No_label_provided: 'لا {{label}} معطى', - No_Message: 'لا رسائل', - No_messages_yet: 'لا رسائل حتى اﻵن', - No_Reactions: 'لا تفاعل', - No_Read_Receipts: 'لا إيصالات قراءة', - Not_logged: 'غير مسجل الدخول', - Not_RC_Server: 'هذا ليس بخادم Rocket.Chat.\n{{contact}}', - Nothing: 'لا شيء', - Nothing_to_save: 'لا شيء للحفظ!', - Notify_active_in_this_room: 'أبلغ المستخدمين النشطين في هذه الغرفة', - Notify_all_in_this_room: 'أبلغ الجميع في الغرفة', - Notifications: 'الإشعارات', - Notification_Duration: 'زمن الإشعار', - Notification_Preferences: 'تفضيلات الإشعار', - No_available_agents_to_transfer: 'المندوبين غير متوفرين حالياً', - Offline: 'غير متصل', - Oops: 'عفوًا!', - Omnichannel: 'القنوات الموحدة', - Open_Livechats: 'محادثات مباشرة جارية', - Omnichannel_enable_alert: 'أنت غير متاح ', - Onboarding_description: 'مساحة عمل هي مساحة لفريقك ومنظمتك للتعاون. اطلب من المشرف العنوان للانضمام أو أنشئ لفريقك', - Onboarding_join_workspace: 'انضم لمساحة عمل', - Onboarding_subtitle: 'ما بعد بيئة فريق تعاونية', - Onboarding_title: 'مرحبا بك في Rocket.Chat', - Onboarding_join_open_description: 'انضم لمساحة عملنا للتواصل مع فريق Rocket.Chat ومع المجتمع', - Onboarding_agree_terms: 'بالمواصلة أنت توافق على Rocket.Chat', - Onboarding_less_options: 'خيارات أقل', - Onboarding_more_options: 'خيارات أكثر', - Online: 'متصل', - Only_authorized_users_can_write_new_messages: 'يمكن للمستخدمين المصرح لهم فقط كتابة رسائل جديدة', - Open_emoji_selector: 'افتح محدد الرموز التعبيرية', - Open_Source_Communication: 'تواصل مفتوح المصدر', - Open_your_authentication_app_and_enter_the_code: 'افتح تطبيق المصادقة الخاص بك وأدخل الرمز', - OR: 'أو', - OS: 'نظام التشغيل', - Overwrites_the_server_configuration_and_use_room_config: 'يمكن للمستخدمين المصرح لهم فقط كتابة رسائل جديدة', - Password: 'كلمة المرور', - Parent_channel_or_group: 'القناة أو المجموعة الأب', - Permalink_copied_to_clipboard: 'تم نسخ الرابط الثابت إلى الحافظة!', - Phone: 'الهاتف', - Pin: 'ثبت', - Pinned_Messages: 'رسائل مثبتة', - pinned: 'مثبت', - Pinned: 'مثبت', - Please_add_a_comment: 'الرجاء إضافة تعليق', - Please_enter_your_password: 'الرجاء إدخال كلمة المرور', - Please_wait: 'الرجاء الإنتظار', - Preferences: 'التفضيلات', - Preferences_saved: 'تم حفظ التفضيلات', - Privacy_Policy: 'سياسة الخصوصية', - Private_Channel: 'قناة خاصة', - Private_Groups: 'مجموعات خاصة', - Private: 'خاص', - Processing: 'جار معالجة...', - Profile_saved_successfully: 'تم حفظ الملف الشخصي بنجاح!', - Profile: 'الملف الشخصي', - Public_Channel: 'قناة عامة', - Public: 'عام', - PUSH_NOTIFICATIONS: 'الإشعارات', - Push_Notifications_Alert_Info: 'يتم إرسال هذه الإشعارات إليك عندما لا يكون التطبيق مفتوحاً', - Quote: 'اقتباس', - Reactions_are_disabled: 'التفاعل معطل', - Reactions_are_enabled: 'التفاعل مفعل', - Reactions: 'التفاعلات', - Read: 'قراءة', - Read_External_Permission_Message: 'يحتاج Rocket.chat للوصول إلى الصور والملفات الموجودة على الجهاز', - Read_External_Permission: 'صلاحية قراءة الوسائط', - Read_Only_Channel: 'قناة للقراءة فقط', - Read_Only: 'قراءة فقط', - Read_Receipt: 'قراءة المستلم', - Receive_Group_Mentions: 'تلقي إشارات المجموعة', - Receive_Group_Mentions_Info: 'تلقي @all و @here للإشعارات', - Register: 'تسجيل', - Repeat_Password: 'أعد كلمة المرور', - Replied_on: 'تم الرد على:', - replies: 'ردود', - reply: 'رد', - Reply: 'رد', - Report: 'بلاغ', - Receive_Notification: 'استلام الإشعار', - Receive_notifications_from: 'استلام الإشعارات من {{name}}', - Resend: 'أعد الإرسال', - Reset_password: 'إعادة تعيين كلمة المرور', - resetting_password: 'إعادة تعيين كلمة المرور', - RESET: 'إعادة', - Return: 'العودة', - Review_app_title: 'هل أنت مستمتع بهذا التطبيق؟', - Review_app_desc: 'قم بإعطائنا 5 نجوم {{store}}', - Review_app_yes: 'أكيد!', - Review_app_no: 'لا', - Review_app_later: 'ربما لاحقاً', - Review_app_unable_store: 'لم يتمكن من فتح {{store}}', - Review_this_app: 'تقييم هذا التطبيق', - Remove: 'حذف', - Roles: 'أدوار', - Room_actions: 'إجراءات الغرفة', - Room_changed_announcement: 'تم تغيير إعلان الغرفة إلى: {{announcement}} من قبل {{userBy}}', - Room_changed_description: 'تم تغيير وصف الغرفة إلى: {{description}} من قبل {{userBy}}', - Room_changed_privacy: 'تم تغيير نوع الغرفة إلى: {{type}} من قبل {{userBy}}', - Room_changed_topic: 'تم تغيير موضوع الغرفة إلى: {{topic}} من قبل {{userBy}}', - Room_Files: 'ملفات الغرفة', - Room_Info_Edit: 'تعديل معلومات الغرفة', - Room_Info: 'معلومات الغرفة', - Room_Members: 'أعضاء الغرفة', - Room_name_changed: 'تم تغيير اسم الغرفة إلى: {{name}} من قبل {{userBy}}', - SAVE: 'حفظ', - Saved: 'تم الحفظ', - Save_Changes: 'حفظ التغيرات', - Save: 'حفظ', - saving_preferences: 'حفظ التفضيلات', - saving_profile: 'حفظ الملف الشخصي', - saving_settings: 'حفظ الإعدادات', - saved_to_gallery: 'تم الحفظ في المعرض', - Save_Your_E2E_Password: 'حفظ كلمة المرور بين الطرفين', - Save_Your_Encryption_Password: 'حفظ كلمة المرور المشفرة', - Save_Your_Encryption_Password_warning: 'لا نقوم بتخزين كلمة المرور، الرجاء حفظها لديك في مكان آخر', - Save_Your_Encryption_Password_info: 'لا يمكن إستعادة كلمة المرور في حال فقدانها ولن تستطيع الوصول لرسائلك', - Search_Messages: 'بحث الرسائل', - Search: 'بحث', - Search_by: 'بحث حسب', - Search_global_users: 'بحث عام عن المستخدمين', - Search_global_users_description: 'إذا قمت بالتفعيل، فسيمكنك البحث عن أي مستخدم في شركات أو خوادم أخرى', - Seconds: '{{second}} ثواني', - Select_Avatar: 'حدد الصورة الرمزية', - Select_Server: 'حدد خادم', - Select_Users: 'حدد مستخدمين', - Select_a_Channel: 'حدد قناة', - Select_a_Department: 'حدد قسم', - Select_an_option: 'حدد خيار', - Select_a_User: 'حدد مستخدم', - Send: 'إرسال', - Send_audio_message: 'إرسال رسالة صوتية', - Send_crash_report: 'إرسال تقرير الأعطال', - Send_message: 'إرسال الرسالة', - Send_me_the_code_again: 'أرسل الرمز مرة أخرى', - Send_to: 'إرسال إلى...', - Sending_to: 'يتم الإرسال إلى', - Sent_an_attachment: 'تم إرسال المرفق', - Server: 'سرفر', - Servers: 'سرفرات', - Server_version: 'نسخة الخادم: {{version}}', - Set_username_subtitle: 'يتم استخدام اسم المستخدم للسماح للآخرين بذكرك في الرسائل', - Set_custom_status: 'حدد حالة خاصة', - Set_status: 'حدد حالة', - Status_saved_successfully: 'تم حفظ الحالة بنجاح!', - Settings: 'الإعدادات', - Settings_succesfully_changed: 'تم تعديل الإعدادات بنجاح!', - Share: 'مشاركة', - Share_Link: 'مشاركة رابط', - Share_this_app: 'مشاركة هذا البرنامج', - Show_more: 'إظهار أكثر..', - Show_Unread_Counter: 'عرض عدد الرسائل غير المقروءة', - Show_Unread_Counter_Info: 'يتم عرض العدد غير المقروء كشارة على يمين القناة في القائمة', - Sign_in_your_server: 'تسجيل الدخول إلى الخادم الخاص بك', - Sign_Up: 'تسجيل جديد', - Some_field_is_invalid_or_empty: 'بعض الحقول غير صالحة أو فارغة', - Sorting_by: 'فرز حسب {{key}}', - Sound: 'الصوت', - Star_room: 'تمييز الغرفة', - Star: 'تمييز', - Starred_Messages: 'رسائل مميزة', - starred: 'مميزة', - Starred: 'مميزة', - Start_of_conversation: 'بداية المحادثة', - Start_a_Discussion: 'ابدأ نقاش', - Started_discussion: 'بدأ النقاش', - Started_call: 'أجرى الاتصال {{userBy}}', - Submit: 'إرسال', - Table: 'جدول', - Tags: 'العلامات', - Take_a_photo: 'التقاط صورة', - Take_a_video: 'التقاط فيديو', - Take_it: 'التقط!', - tap_to_change_status: 'انقر لتغيير الحالة', - Tap_to_view_servers_list: 'انقر لعرض قائمة الخوادم', - Terms_of_Service: ' شروط الخدمة ', - Theme: 'سمة', - The_user_wont_be_able_to_type_in_roomName: 'المستخدم لن يتمكن من الكتابة في {{roomName}}', - The_user_will_be_able_to_type_in_roomName: 'المستخدم سيتمكن من الكتابة في {{roomName}}', - There_was_an_error_while_action: 'حدث خطأ أثناء {{action}}!', - This_room_is_blocked: 'هذه الغرفة محظورة', - This_room_is_read_only: 'هذه الغرفة للقراءة فقط', - Thread: 'موضوع', - Threads: 'مواضيع', - Timezone: 'المنطقة الزمنية', - To: 'إلى', - topic: 'عنوان', - Topic: 'عنوان', - Translate: 'ترجمة', - Try_again: 'حاول مجدداً', - Two_Factor_Authentication: 'المصادقة الثنائية', - Type_the_channel_name_here: 'اكتب اسم القناة هنا', - unarchive: 'إلغاء الأرشفة', - UNARCHIVE: 'إلغاء الأرشفة', - Unblock_user: 'إلغاء حظر عن مستخدم', - Unfavorite: 'إزالة من المفضلة', - Unfollowed_thread: 'موضوع غير متابع', - Unmute: 'إلغاء كتم', - unmuted: 'إلغاء كتم', - Unpin: 'إلغاء التثبيت', - unread_messages: 'رسائل غير مقروءة', - Unread: 'غير مقروء', - Unread_on_top: 'غير مقروء في الأعلى', - Unstar: 'إلغاء التمييز', - Updating: 'جار التحديث...', - Uploading: 'جار الرفع', - Upload_file_question_mark: 'رفع الملف؟', - User: 'مستخدم', - Users: 'مستخدمين', - User_added_by: 'مستخدم {{userAdded}} أضيف من قبل {{userBy}}', - User_Info: 'معلومات المستخدم', - User_has_been_key: 'تمت {{key}} المستخدم!', - User_is_no_longer_role_by_: 'تم إزالة الدور {{role}} عن المستخدم {{user}} من قبل {{userBy}}', - User_muted_by: 'المستخدم {{userMuted}} كتم من قبل {{userBy}}', - User_removed_by: 'المستخدم {{userRemoved}} حذف من قبل {{userBy}}', - User_sent_an_attachment: '{{user}} أرسل مرفقًا', - User_unmuted_by: 'ألغى {{userBy}} الكتم عن {{userUnmuted}}', - User_was_set_role_by_: 'أضيف دور {{role}} للمستخدم {{user}} من قبل {{userBy}}', - Username_is_empty: 'اسم المستخدم فارغ', - Username: 'اسم المستخدم', - Username_or_email: 'اسم المستخدم أو البريد الالكتروني', - Uses_server_configuration: 'يستخدم إعداد الخادم', - Validating: 'يتم التحقق', - Registration_Succeeded: 'تم التسجيل بنجاح', - Verify: 'تحقق', - Verify_email_title: 'تم التسجيل!', - Verify_email_desc: 'لقد أرسلنا إليك بريداً إلكترونياً لتأكيد تسجيلك. إذا لم تتلق البريد الإلكتروني قريباً، فيرجى العودة والمحاولة مرة أخرى', - Verify_your_email_for_the_code_we_sent: 'يرجى تأكيد البريد الإلكتروني عبر الرمز المرسل', - Video_call: 'مكالمة فيديو', - View_Original: 'عرض المحتوى الأصلي', - Voice_call: 'مكالمة صوتية', - Waiting_for_network: 'بانتظار توفر شبكة...', - Websocket_disabled: 'تم تعطيل Websocket لهذا الخادم.\n{{contact}}', - Welcome: 'مرحبا', - What_are_you_doing_right_now: 'ما الذي تفعله حالياً؟', - Whats_your_2fa: 'ما هو رمز التحقق الثنائي؟', - Without_Servers: 'بدون خوادم', - Workspaces: 'مساحات العمل', - Would_you_like_to_return_the_inquiry: 'هل ترغب بالرد على السؤال؟', - Write_External_Permission_Message: 'يحتاج Rocket.Chat للوصول إلى معرض الصور الخاص بك حتى تتمكن من حفظ الصور', - Write_External_Permission: 'إذن معرض', - Yes: 'نعم', - Yes_action_it: 'نعم، {{action}}!', - Yesterday: 'أمس', - You_are_in_preview_mode: 'أنت في وضع المعاينة', - You_are_offline: 'أنت غير متصل', - You_can_search_using_RegExp_eg: 'يمكنك استخدام RegExp. مثال: `/^text$/i`', - You_colon: 'أنت: ', - you_were_mentioned: 'تمت الإشارة إليك', - You_were_removed_from_channel: 'تمت إزالتك من {{channel}}', - you: 'أنت', - You: 'أنت', - Logged_out_by_server: 'لقد تم تسجيل خروجك من قبل الخادم. الرجاد الدخول من جديد', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'تحتاج إلى الوصول إلى خادم Rocket.Chat واحد على الأقل لمشاركة شيء ما', - You_need_to_verifiy_your_email_address_to_get_notications: 'يجب تأكيد البريد الإلكتروني حتى تصلك الإشعارات', - Your_certificate: 'شهادتك', - Your_invite_link_will_expire_after__usesLeft__uses: 'سوف تنتهي صلاحية رابط الدعوة الخاص بك بعد {{usesLeft}} استخدامات', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}} أو بعد {{usesLeft}} استخدامات', - Your_invite_link_will_expire_on__date__: 'ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}}', - Your_invite_link_will_never_expire: 'لن تنتهي صلاحية رابط الدعوة الخاص بك', - Your_workspace: 'مساحة عملك', - Your_password_is: 'كلمة المرور الخاصة بك هي', - Version_no: 'النسخة: {{version}}', - You_will_not_be_able_to_recover_this_message: 'لن تتمكن من استعادة هذه الرسالة!', - You_will_unset_a_certificate_for_this_server: 'ستلغي شهادة هذا الخادم', - Change_Language: 'تغيير اللغة', - Crash_report_disclaimer: 'نحن لا نتتبع محتوى محادثاتك أبداً. يحتوي تقرير الأعطال فقط على المعلومات ذات الصلة لنا من أجل تحديد المشاكل وإصلاحها', - Type_message: 'اكتب رسالة', - Room_search: 'البحث عن الغرف', - Room_selection: 'اختيار الغرفة 1...9', - Next_room: 'الغرفة المجاورة', - Previous_room: 'الغرفة السابقة', - New_room: 'غرفة جديدة', - Upload_room: 'تحميل إلى الغرفة', - Search_messages: 'رسائل البحث', - Scroll_messages: 'تمرير الرسائل', - Reply_latest: 'الرد على الأحدث', - Reply_in_Thread: 'الرد في موضوع', - Server_selection: 'اختيار الخادم', - Server_selection_numbers: 'اختيار الخادم 1...9', - Add_server: 'إضافة خادم', - New_line: 'سطر جديد', - You_will_be_logged_out_of_this_application: 'سيتم تسجيل خروجك من هذا التطبيق.', - Clear: 'مسح', - This_will_clear_all_your_offline_data: 'سيؤدي هذا إلى محو جميع بياناتك في وضع عدم الاتصال.', - This_will_remove_all_data_from_this_server: 'هذا الإجراء يحذف جميع البيانات من هذا السيرفر', - Mark_unread: 'علامة غير مقروء', - Wait_activation_warning: 'يحب تفعيل حسابك من المشرف قبل تسجيل الدخول', - Screen_lock: 'قفل الشاشة', - Local_authentication_biometry_title: 'صادق', - Local_authentication_biometry_fallback: 'استخدم كلمة المرور', - Local_authentication_unlock_option: 'افتح القفل بكلمة المرور', - Local_authentication_change_passcode: 'تغيير كلمة المرور', - Local_authentication_info: 'تنويه: يجب حذف التطبيق عند نسيان كلمة المرور', - Local_authentication_facial_recognition: 'التعرف على الوجه', - Local_authentication_fingerprint: 'البصمة', - Local_authentication_unlock_with_label: 'فتح القفل بـ {{label}}', - Local_authentication_auto_lock_60: 'بعد دقيقة', - Local_authentication_auto_lock_300: 'بعد 5 دقائق', - Local_authentication_auto_lock_900: 'بعد 15 دقيقة', - Local_authentication_auto_lock_1800: 'بعد 30 دقيقة', - Local_authentication_auto_lock_3600: 'بعد ساعة', - Passcode_enter_title: 'أدخل كلمة المرور', - Passcode_choose_title: 'اختر كلمة المرور الجديدة', - Passcode_choose_confirm_title: 'تأكيد كلمة المرور الجديدة', - Passcode_choose_error: 'كلمة المرور غير متطابقة. حاول مجدداً', - Passcode_choose_force_set: 'كلمة المرور مطلوبة من المشرف', - Passcode_app_locked_title: 'التطبيق مقفل', - Passcode_app_locked_subtitle: 'حاول مجدداً بعد {{timeLeft}} ثوان', - After_seconds_set_by_admin: 'بعد {{seconds}} ثوان (حددها المدير)', - Dont_activate: 'لا تقم بالتفعيل الآن', - Queued_chats: 'محادثات في قائمى الانتظار', - Queue_is_empty: 'قائمة الانتظار فارغة', - Logout_from_other_logged_in_locations: 'تسجيل الخروج من الأماكن الأخرى', - You_will_be_logged_out_from_other_locations: 'سيتم تسجيل خروج من الأماكن الأخرى', - Logged_out_of_other_clients_successfully: 'تم تسجيل الخروج من الأماكن الأخرى بنجاح', - Logout_failed: 'فشل تسجيل الخروج!', - Log_analytics_events: 'تحليلات سجل الأحداث' -}; diff --git a/app/i18n/locales/ar.json b/app/i18n/locales/ar.json new file mode 100644 index 00000000000..0b53315f95d --- /dev/null +++ b/app/i18n/locales/ar.json @@ -0,0 +1,661 @@ +{ + "1_person_reacted": "تفاعل شخص 1", + "1_user": "مستخدم 1", + "error-action-not-allowed": "{{action}} غير مسموح", + "error-application-not-found": "لم يتم العثور على البرنامج", + "error-archived-duplicate-name": "هناك قناة مؤرشفة باسم {{room_name}}", + "error-avatar-invalid-url": "عنوان الصورة الرمزية غير صحيح: {{url}}", + "error-avatar-url-handling": "خطأ في معالجة الصورة الرمزية ({{url}}) للمستخدم {{username}}", + "error-cant-invite-for-direct-room": "لا يمكن دعوة المستخدم في الغرفة المباشرة", + "error-could-not-change-email": "تعذر تغيير البريد الإلكتروني", + "error-could-not-change-name": "تعذر تغيير الاسم", + "error-could-not-change-username": "تعذر تغيير اسم المستخدم", + "error-could-not-change-status": "تعذر تغيير الحالة", + "error-delete-protected-role": "لا يمكن حذف دور محمي", + "error-department-not-found": "القسم غير موجود", + "error-direct-message-file-upload-not-allowed": "مشاركة الملفات غير مسموح في الرسالة المباشرة", + "error-duplicate-channel-name": "القناة {{channel_name}} موجودة مسبقاً", + "error-email-domain-blacklisted": "عنوان اﻹيميل محظور", + "error-email-send-failed": "خطأ في إرسال البريد اﻹلكتروني: {{message}}", + "error-save-image": "خطأ عند حفظ الصورة", + "error-save-video": "خطأ عند حفظ الفيديو", + "error-field-unavailable": "{{field}} مستخدم بالفعل :(", + "error-file-too-large": "حجم الملف كبير جداً", + "error-importer-not-defined": "المستورِد معرف بطريقة غير صحيحة، يجب تحديد نوع الإستيراد", + "error-input-is-not-a-valid-field": "{{input}} غير صالح {{field}}", + "error-invalid-actionlink": "رابط الإجراء غير صالح", + "error-invalid-arguments": "وسائط غير صحيحة", + "error-invalid-asset": "ممتلكات غير صحيحة", + "error-invalid-channel": "قناة غير صحيحة", + "error-invalid-channel-start-with-chars": "قناة غير صحيحة. تبدأ القناة بحرف @ أو #", + "error-invalid-custom-field": "حقل مخصص غير صالح", + "error-invalid-custom-field-name": "اسم الحقل المخصص غير صالح. استخدم الحروف والأرقام والواصلات والشرطات السفلية فقط", + "error-invalid-date": "التاريخ غير صالح", + "error-invalid-description": "الوصف غير صالح", + "error-invalid-domain": "عنوان الموقع غير صالح", + "error-invalid-email": "عنوان البريد اﻹلكتروني غير صالح {{emai}}", + "error-invalid-email-address": "عنوان البريد اﻹلكتروني غير صالح", + "error-invalid-file-height": "ارتفاع الملف غير صالح", + "error-invalid-file-type": "نوع الملف غير صالح", + "error-invalid-file-width": "عرض الملف غير صالح", + "error-invalid-from-address": "عنوان غير صالح في خانة (من)", + "error-invalid-integration": "تكامل غير صالح", + "error-invalid-message": "رسالة غير صالحة", + "error-invalid-method": "طريقة غير صالحة", + "error-invalid-name": "اسم غير صالح", + "error-invalid-password": "كلمة مرور خاطئة", + "error-invalid-redirectUri": "رابط إعادة توجيه غير صحيح", + "error-invalid-role": "دور غير صالح", + "error-invalid-room": "غرفة غير صالحة", + "error-invalid-room-name": "{{room_name}} اسم الغرفة غير صالح", + "error-invalid-room-type": "{{type}} نوع الغرفة غير صالح", + "error-invalid-settings": "الإعدادات المعطاة غير صالحة", + "error-invalid-subscription": "اشتراك غير صالح", + "error-invalid-token": "الرمز غير صالح", + "error-invalid-triggerWords": "كلمات محفزة غير صالحة", + "error-invalid-urls": "عناوين غير صالحة", + "error-invalid-user": "مستخدم غير صالح", + "error-invalid-username": "اسم المستخدم غير صالح", + "error-invalid-webhook-response": "الرد التلقائي من العنوان استجاب برمز مغاير عن 200", + "error-message-deleting-blocked": "حذف الرسالة محظور", + "error-message-editing-blocked": "تعديل الرسالة محظور", + "error-message-size-exceeded": "حجم الرسالة تجاوز الحد المسموح به (Message_MaxAllowedSize)", + "error-missing-unsubscribe-link": "يجب عليك تقديم رابط [unsubscribe]", + "error-no-tokens-for-this-user": "لا توجد رموز لهذا المستخدم", + "error-not-allowed": "غير مسموح", + "error-not-authorized": "غير مصرح", + "error-push-disabled": "إرسال الإشعارات معطل", + "error-remove-last-owner": "هذا هو المالك الأخير. يرجى تعيين مالك جديد قبل إزالة هذا المالك", + "error-role-in-use": "لا يمكن حذف الدور لأنه قيد الاستخدام", + "error-role-name-required": "اسم الدور مطلوب", + "error-the-field-is-required": "هذا الحقل {{field}} مطلوب", + "error-too-many-requests": "خطأ، تلقينا الكثير من الطلبات. من فضلك خفف السرعة، يجب الانتظار لمدة {{seconds}} ثانية قبل المحاولة مرة أخرى", + "error-user-is-not-activated": "المستخدم غير منشط", + "error-user-has-no-roles": "ليس للمستخدم أدوار", + "error-user-limit-exceeded": "يتجاوز عدد المستخدمين الذين تحاول دعوتهم إلى #channel_name الحد الذي حدده المشرف", + "error-user-not-in-room": "المستخدم ليس في هذه الغرفة", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "التسجيل معطل", + "error-user-registration-secret": "التسجيل مسموح به عبر عنوان الويب السري فقط", + "error-you-are-last-owner": "أنت المالك الأخير. يرجى تعيين مالك جديد قبل مغادرة الغرفة", + "Actions": "الإجراءات", + "activity": "نشاط", + "Activity": "النشاط", + "Add_Reaction": "إضافة تفاعل", + "Add_Server": "إضافة خادم", + "Add_users": "إضافة مستخدمين", + "Admin_Panel": "لوحة الإدارة", + "Agent": "المندوب", + "Alert": "إنذار", + "alert": "إنذار", + "alerts": "الإنذارات", + "All_users_in_the_channel_can_write_new_messages": "يمكن لجميع المستخدمين في القناة كتابة رسائل جديدة", + "A_meaningful_name_for_the_discussion_room": "اسم معبر لغرفة النقاش", + "All": "الكل", + "All_Messages": "كل الرسائل", + "Allow_Reactions": "السماح للتفاعلات", + "Alphabetical": "أبجدي", + "and_more": "وأكثر", + "and": "و", + "announcement": "إعلان", + "Announcement": "إعلان", + "Apply_Your_Certificate": "طبق شهادتك", + "Applying_a_theme_will_change_how_the_app_looks": "سيؤدي تطبيق السمة إلى تغيير شكل التطبيق", + "ARCHIVE": "أرشفة", + "archive": "أرشفة", + "are_typing": "يكتب", + "Are_you_sure_question_mark": "هل أنت متأكد؟", + "Are_you_sure_you_want_to_leave_the_room": "متأكد من مغادرة الغرفة {{room}}؟", + "Audio": "صوت", + "Authenticating": "تتم المصادقة", + "Automatic": "تلقائي", + "Auto_Translate": "ترجمة تلقائية", + "Avatar_changed_successfully": "تم تغيير الصورة الرمزية بنجاح!", + "Avatar_Url": "عنوان ويب الصورة الرمزية", + "Away": "غير متواجد", + "Back": "عودة", + "Black": "أسود", + "Block_user": "حظر المستخدم", + "Browser": "المتصفح", + "Broadcast_channel_Description": "يمكن فقط للمستخدمين المصرح لهم كتابة رسائل جديدة، ولكن سيتمكن المستخدمون الآخرون من الرد", + "Broadcast_Channel": "قناة البث", + "Busy": "مشغول", + "By_proceeding_you_are_agreeing": "من خلال المتابعة، أنت توافق على", + "Cancel_editing": "إلغاء التعديل", + "Cancel_recording": "إلغاء التسجيل الصوتي", + "Cancel": "إلغاء", + "changing_avatar": "تغيير الصورة الرمزية", + "creating_channel": "إنشاء قناة", + "creating_invite": "إنشاء دعوة", + "Channel_Name": "اسم القناة", + "Channels": "قنوات", + "Chats": "الرسائل", + "Call_already_ended": "تم انهاء المكالمة بالفعل !", + "Clear_cookies_alert": "هل تريد حذف جميع ملفات تعريف الإرتباط؟", + "Clear_cookies_desc": "هذا الإجراء سيحذف ملفات تعريف الإرتباط الخاصة بتسجيل الدخول مما يسمح بتسجيل الدخول لحسابات أخرى", + "Clear_cookies_yes": "نعم، مسح ملفات الإرتباط", + "Clear_cookies_no": "لا، احتفظ بملفات تعريف الإرتباط", + "Click_to_join": "انقر للانضمام!", + "Close": "إغلاق", + "Close_emoji_selector": "إغلاق محدد الرموز التعبيرية", + "Closing_chat": "إغلاق المحادثة", + "Change_language_loading": "تغيير اللغة", + "Chat_closed_by_agent": "المندوب أغلق المحادثة", + "Choose": "اختر", + "Choose_from_library": "اختر من المكتبة", + "Choose_file": "اختر ملف", + "Choose_where_you_want_links_be_opened": "اختر المكان الذي تريد فتح الروابط فيه", + "Code": "الرمز", + "Code_or_password_invalid": "الرمز أو كلمة المرور خاطئة", + "Collaborative": "تعاونية", + "Confirm": "تأكيد", + "Connect": "اتصال", + "Connected": "متصل", + "connecting_server": "يتم الاتصال بالخادم", + "Connecting": "جار الاتصال...", + "Contact_us": "تواصل معنا", + "Contact_your_server_admin": "اتصل بمسؤول الخادم", + "Continue_with": "متابعة بـ", + "Copied_to_clipboard": "تم النسخ للحافظة!", + "Copy": "نسخ", + "Conversation": "محادثة", + "Permalink": "رابط ثابت", + "Certificate_password": "الرقم السري للشهادة", + "Clear_cache": "امسح ذاكرة التخزين المؤقتة للخادم", + "Clear_cache_loading": "يتم مسح ذاكرة التخزين", + "Whats_the_password_for_your_certificate": "ماهي كلمة المرور للشهادة؟", + "Create_account": "إنشاء حساب", + "Create_Channel": "إنشاء قناة", + "Create_Direct_Messages": "إنشاء رسالة مباشرة", + "Create_Discussion": "إنشاء نقاش", + "Created_snippet": "إنشاء مقتطف", + "Create_a_new_workspace": "إنشاء مساحة عمل جديدة", + "Create": "إنشاء", + "Custom_Status": "حالة مخصصة", + "Dark": "داكن", + "Dark_level": "مستوى السمة الداكنة", + "Default": "افتراضي", + "Default_browser": "المتصفح الأساسي", + "Delete_Room_Warning": "سيؤدي حذف الغرفة إلى حذف جميع الرسائل المنشورة. لا يمكن التراجع بعد الحذف", + "Department": "القسم", + "delete": "حذف", + "Delete": "حذف", + "DELETE": "حذف", + "deleting_room": "حذف الغرفة", + "description": "وصف", + "Description": "وصف", + "DESKTOP_OPTIONS": "خيارات سطح المكتب", + "DESKTOP_NOTIFICATIONS": "إشعارات سطح المكتب", + "Desktop_Alert_info": "هذه الإشعارات ترسل لسطح المكتب", + "Directory": "مجلد", + "Direct_Messages": "رسالة مباشرة", + "Disable_notifications": "أوقف الإشعارات", + "Discussions": "مناقشات", + "Discussion_Desc": "ساهم بإعطاء نظرة عامة لما يجري. عند إنشاء مناقشة يتم إنشاء قناة فرعية وربطها بالقناة المحددة", + "Discussion_name": "اسم النقاش", + "Done": "تم", + "Dont_Have_An_Account": "ليس لديك حساب؟", + "Do_you_have_an_account": "هل لديك حساب؟", + "Do_you_have_a_certificate": "هل لديك شهادة؟", + "Do_you_really_want_to_key_this_room_question_mark": "هل تريد حقاً {{key}} هذه الغرفة؟", + "E2E_How_It_Works_info1": "يمكنك الآن إنشاء مجموعات خاصة ورسائل مباشرة مشفرة. بإمكانك أيضاً تشفير المجموعات الخاصة والرسائل المباشرة الموجودة مسبقاً", + "E2E_How_It_Works_info2": "التشفير يتم بين الطرفيات بمعنى أن المفتاح سيستخدم لتشفير وفك تشفير رسائلك ولن يتم حفظه في الخادم. لذلك يترتب عليك حفظ كلمة المرور هذه في مكان آمن", + "E2E_How_It_Works_info3": "حين الاستمرار سيتم إنشاء كلمة المرور بين الطرفيات", + "E2E_How_It_Works_info4": "بإمكانك أيضاً إنشاء كلمة مرور جديدة لمفتاح التشفير في أي وقت عند دخولك بكلمة المرور الحالية لمفتاح التشفير", + "edit": "تعديل", + "edited": "معدل", + "Edit": "تعديل", + "Edit_Status": "تعديل الحالة", + "Edit_Invite": "تعديل الدعوة", + "End_to_end_encrypted_room": "غرفة مشفرة بين الطرفيات", + "end_to_end_encryption": "تشفير بين الطرفيات", + "Email_Notification_Mode_All": "لكل إشارة أو رسالة مباشرة", + "Email_Notification_Mode_Disabled": "معطل", + "Email_or_password_field_is_empty": "حقل البريد الإلكتروني أو كلمة المرور فارغ", + "Email": "البريد الإلكتروني", + "EMAIL": "البريد الإلكتروني", + "email": "البريد الإلكتروني", + "Empty_title": "عنوان فارغ", + "Enable_Auto_Translate": "تمكين الترجمة التلقائية", + "Enable_notifications": "تفعيل الإشعارات", + "Encrypted": "مشفر", + "Encrypted_message": "رسالة مشفرة", + "Enter_Your_E2E_Password": "أدخل كلمة المرور بين الطرفيات", + "Enter_Your_Encryption_Password_desc1": "سيمكنك هذا من الوصول لرسائلك المباشرة والمجموعات الخاصة", + "Enter_Your_Encryption_Password_desc2": "يجب إدخال كلمة المرور لتشفير وفك تشفير الرسائل المرسلة", + "Encryption_error_title": "كلمة المرور المشفرة خاطئة", + "Encryption_error_desc": "تعذر قراءة مفتاح التشفير أثناء الاستيراد", + "Everyone_can_access_this_channel": "يمكن للجميع الوصول إلى هذه القناة", + "Error_uploading": "خطأ في الرفع", + "Expiration_Days": "انتهاء (أيام)", + "Favorite": "مفضل", + "Favorites": "مفضلات", + "Files": "ملفات", + "File_description": "وصف الملف", + "File_name": "اسم الملف", + "Finish_recording": "إنهاء التسجيل", + "Following_thread": "متابعة الموضوع", + "For_your_security_you_must_enter_your_current_password_to_continue": "من أجل حمايتك، يجب عليك إدخال كلمة المرور الحالية للمتابعة", + "Forgot_password_If_this_email_is_registered": "إن كان البريد الإلكتروني مسجلاً، فسنرسل تعليمات إعادة تعيين كلمة المرور الخاصة بك. إذا لم تتلق بريداً إلكترونياً قريباً، فيرجى العودة والمحاولة مرة أخرى", + "Forgot_password": "هل نسيت كلمة المرور؟", + "Forgot_Password": "نسيت كلمة المرور", + "Forward": "إعادة توجيه", + "Forward_Chat": "إعادة توجيه المحادثة", + "Forward_to_department": "إعادة توجيه للقسم", + "Forward_to_user": "إعادة توجيه لمستخدم", + "Full_table": "انقر لرؤية الجدول كاملاً", + "Generate_New_Link": "إنشاء رابط جديد", + "Group_by_favorites": "جمع حسب المفضلة", + "Group_by_type": "جمع حسب النوع", + "Hide": "إخفاء", + "Has_joined_the_channel": "انضم إلى القناة", + "Has_joined_the_conversation": "انضم إلى المحادثة", + "Has_left_the_channel": "غادر القناة", + "Hide_System_Messages": "إخفاء رسائل النظام", + "Hide_type_messages": "إخفاء رسائل \"{{type}}\"", + "How_It_Works": "طريقة العمل", + "Message_HideType_uj": "مستخدم انضم", + "Message_HideType_ul": "مستخدم غادر", + "Message_HideType_ru": "مستخدم حُذف", + "Message_HideType_au": "مستخدم أضيف", + "Message_HideType_mute_unmute": "صوت المستخدم كتم / فتح", + "Message_HideType_r": "اسم الغرفة تغير", + "Message_HideType_ut": "مستخدم انضم للمحادثة", + "Message_HideType_wm": "ترحيب", + "Message_HideType_rm": "رسالة حُذفت", + "Message_HideType_subscription_role_added": "تعيين دور جديد", + "Message_HideType_subscription_role_removed": "دور أصبح غير معرف", + "Message_HideType_room_archived": "غرفة أرشفت", + "Message_HideType_room_unarchived": "غرفة ألغيت أرشفتها", + "I_Saved_My_E2E_Password": "قمت بحفظ كلمة المرور الطرفية", + "IP": " عنوان بروتوكول الإنترنت (الآيبي)", + "In_app": "في التطبيق", + "IN_APP_AND_DESKTOP": "داخل التطبيق وسطح المكتب", + "In_App_and_Desktop_Alert_info": "يعرض شعاراً أعلى الشاشة عندما يكون التطبيق مفتوحًا، ويعرض إشعاراً على سطح المكتب", + "Invisible": "غير مرئي", + "Invite": "دعوة", + "is_a_valid_RocketChat_instance": "خادم Rocket.Chat صالح", + "is_not_a_valid_RocketChat_instance": "خادم Rocket.Chat غير صالح", + "is_typing": "يكتب", + "Invalid_or_expired_invite_token": "رمز الدعوة غير صالح أو منتهي الصلاحية", + "Invalid_server_version": "الخادم الذي تحاول الاتصال به يستخدم إصدارا لم يعد مدعوماً: {{currentVersion}}.\n\n النسخ المدعومة تبدأ من {{minVersion}}", + "Invite_Link": "رابط الدعوة", + "Invite_users": "دعوة المستخدمين", + "Join": "انضم", + "Join_our_open_workspace": "انضم لمساحة عملنا المفتوحة", + "Join_your_workspace": "انضم لمساحة عملك", + "Just_invited_people_can_access_this_channel": "يمكن للأشخاص المدعوين فقط الوصول إلى هذه القناة", + "Language": "اللغة", + "last_message": "الرسالة الأخيرة", + "Leave_channel": "مغادرة القناة", + "leaving_room": "مغادرة الغرفة", + "leave": "مغادرة", + "Legal": "قانوني", + "Light": "ساطع", + "License": "رخصة", + "Livechat": "محادثة مباشرة", + "Livechat_edit": "تعديل المحادثة المباشرة", + "Login": "تسجيل الدخول", + "Login_error": "تم رفض تسجيل الدخول الرجاء المحاولة مرة أخرى", + "Login_with": "تسجيل الدخول بـ", + "Logging_out": "تسجيل الخروج", + "Logout": "تسجيل الخروج", + "Max_number_of_uses": "أقصى عدد للاستخدام", + "Max_number_of_users_allowed_is_number": "أقصى عدد للمستخدمين {{maxUsers}}", + "members": "أفراد", + "Members": "أفراد", + "Mentioned_Messages": "الرسائل المذكورة", + "mentioned": "مشار", + "Mentions": "الإشارات", + "Message_accessibility": "الرسالة من {{user}} في {{time}}: {{message}}", + "Message_actions": "إجراءات الرسالة", + "Message_pinned": "الرسالة مثبتة", + "Message_removed": "الرسالة حذفت", + "Message_starred": "الرسالة مميزة", + "Message_unstarred": "الرسالة غير مميزة", + "message": "رسالة", + "messages": "رسائل", + "Message": "الرسالة", + "Messages": "الرسائل", + "Message_Reported": "تم التبليغ على الرسالة", + "Microphone_Permission_Message": "يحتاج Rocket.Chat للوصول إلى الميكروفون الخاص بك حتى تتمكن من إرسال رسالة صوتية", + "Microphone_Permission": "إذن الميكروفون", + "Mute": "كتم", + "muted": "مكتوم", + "My_servers": "الخوادم", + "N_people_reacted": "{{n}} تفاعل الناس", + "N_users": "{{n}} مستخدمين", + "name": "اسم", + "Name": "اسم", + "Navigation_history": "تاريخ التصفح", + "Never": "أبداً", + "New_Message": "رسالة جديدة", + "New_Password": "كلمة مرور جديدة", + "New_Server": "خادم جديد", + "Next": "التالي", + "No_files": "لا ملفات", + "No_limit": "لا حدود", + "No_mentioned_messages": "لا رسائل مشارة", + "No_pinned_messages": "لا رسائل مثبتة", + "No_results_found": "لا نتائج", + "No_starred_messages": "لا رسائل مميزة", + "No_thread_messages": "لا رسائل للموضوع", + "No_label_provided": "لا {{label}} معطى", + "No_Message": "لا رسائل", + "No_messages_yet": "لا رسائل حتى اﻵن", + "No_Reactions": "لا تفاعل", + "No_Read_Receipts": "لا إيصالات قراءة", + "Not_logged": "غير مسجل الدخول", + "Not_RC_Server": "هذا ليس بخادم Rocket.Chat.\n{{contact}}", + "Nothing": "لا شيء", + "Nothing_to_save": "لا شيء للحفظ!", + "Notify_active_in_this_room": "أبلغ المستخدمين النشطين في هذه الغرفة", + "Notify_all_in_this_room": "أبلغ الجميع في الغرفة", + "Notifications": "الإشعارات", + "Notification_Duration": "زمن الإشعار", + "Notification_Preferences": "تفضيلات الإشعار", + "No_available_agents_to_transfer": "المندوبين غير متوفرين حالياً", + "Offline": "غير متصل", + "Oops": "عفوًا!", + "Omnichannel": "القنوات الموحدة", + "Open_Livechats": "محادثات مباشرة جارية", + "Omnichannel_enable_alert": "أنت غير متاح ", + "Onboarding_description": "مساحة عمل هي مساحة لفريقك ومنظمتك للتعاون. اطلب من المشرف العنوان للانضمام أو أنشئ لفريقك", + "Onboarding_join_workspace": "انضم لمساحة عمل", + "Onboarding_subtitle": "ما بعد بيئة فريق تعاونية", + "Onboarding_title": "مرحبا بك في Rocket.Chat", + "Onboarding_join_open_description": "انضم لمساحة عملنا للتواصل مع فريق Rocket.Chat ومع المجتمع", + "Onboarding_agree_terms": "بالمواصلة أنت توافق على Rocket.Chat", + "Onboarding_less_options": "خيارات أقل", + "Onboarding_more_options": "خيارات أكثر", + "Online": "متصل", + "Only_authorized_users_can_write_new_messages": "يمكن للمستخدمين المصرح لهم فقط كتابة رسائل جديدة", + "Open_emoji_selector": "افتح محدد الرموز التعبيرية", + "Open_Source_Communication": "تواصل مفتوح المصدر", + "Open_your_authentication_app_and_enter_the_code": "افتح تطبيق المصادقة الخاص بك وأدخل الرمز", + "OR": "أو", + "OS": "نظام التشغيل", + "Overwrites_the_server_configuration_and_use_room_config": "يمكن للمستخدمين المصرح لهم فقط كتابة رسائل جديدة", + "Password": "كلمة المرور", + "Parent_channel_or_group": "القناة أو المجموعة الأب", + "Permalink_copied_to_clipboard": "تم نسخ الرابط الثابت إلى الحافظة!", + "Phone": "الهاتف", + "Pin": "ثبت", + "Pinned_Messages": "رسائل مثبتة", + "pinned": "مثبت", + "Pinned": "مثبت", + "Please_add_a_comment": "الرجاء إضافة تعليق", + "Please_enter_your_password": "الرجاء إدخال كلمة المرور", + "Please_wait": "الرجاء الإنتظار", + "Preferences": "التفضيلات", + "Preferences_saved": "تم حفظ التفضيلات", + "Privacy_Policy": "سياسة الخصوصية", + "Private_Channel": "قناة خاصة", + "Private_Groups": "مجموعات خاصة", + "Private": "خاص", + "Processing": "جار معالجة...", + "Profile_saved_successfully": "تم حفظ الملف الشخصي بنجاح!", + "Profile": "الملف الشخصي", + "Public_Channel": "قناة عامة", + "Public": "عام", + "PUSH_NOTIFICATIONS": "الإشعارات", + "Push_Notifications_Alert_Info": "يتم إرسال هذه الإشعارات إليك عندما لا يكون التطبيق مفتوحاً", + "Quote": "اقتباس", + "Reactions_are_disabled": "التفاعل معطل", + "Reactions_are_enabled": "التفاعل مفعل", + "Reactions": "التفاعلات", + "Read": "قراءة", + "Read_External_Permission_Message": "يحتاج Rocket.chat للوصول إلى الصور والملفات الموجودة على الجهاز", + "Read_External_Permission": "صلاحية قراءة الوسائط", + "Read_Only_Channel": "قناة للقراءة فقط", + "Read_Only": "قراءة فقط", + "Read_Receipt": "قراءة المستلم", + "Receive_Group_Mentions": "تلقي إشارات المجموعة", + "Receive_Group_Mentions_Info": "تلقي @all و @here للإشعارات", + "Register": "تسجيل", + "Repeat_Password": "أعد كلمة المرور", + "Replied_on": "تم الرد على:", + "replies": "ردود", + "reply": "رد", + "Reply": "رد", + "Report": "بلاغ", + "Receive_Notification": "استلام الإشعار", + "Receive_notifications_from": "استلام الإشعارات من {{name}}", + "Resend": "أعد الإرسال", + "Reset_password": "إعادة تعيين كلمة المرور", + "resetting_password": "إعادة تعيين كلمة المرور", + "RESET": "إعادة", + "Return": "العودة", + "Review_app_title": "هل أنت مستمتع بهذا التطبيق؟", + "Review_app_desc": "قم بإعطائنا 5 نجوم {{store}}", + "Review_app_yes": "أكيد!", + "Review_app_no": "لا", + "Review_app_later": "ربما لاحقاً", + "Review_app_unable_store": "لم يتمكن من فتح {{store}}", + "Review_this_app": "تقييم هذا التطبيق", + "Remove": "حذف", + "Roles": "أدوار", + "Room_actions": "إجراءات الغرفة", + "Room_changed_announcement": "تم تغيير إعلان الغرفة إلى: {{announcement}} من قبل {{userBy}}", + "Room_changed_description": "تم تغيير وصف الغرفة إلى: {{description}} من قبل {{userBy}}", + "Room_changed_privacy": "تم تغيير نوع الغرفة إلى: {{type}} من قبل {{userBy}}", + "Room_changed_topic": "تم تغيير موضوع الغرفة إلى: {{topic}} من قبل {{userBy}}", + "Room_Files": "ملفات الغرفة", + "Room_Info_Edit": "تعديل معلومات الغرفة", + "Room_Info": "معلومات الغرفة", + "Room_Members": "أعضاء الغرفة", + "Room_name_changed": "تم تغيير اسم الغرفة إلى: {{name}} من قبل {{userBy}}", + "SAVE": "حفظ", + "Saved": "تم الحفظ", + "Save_Changes": "حفظ التغيرات", + "Save": "حفظ", + "saving_preferences": "حفظ التفضيلات", + "saving_profile": "حفظ الملف الشخصي", + "saving_settings": "حفظ الإعدادات", + "saved_to_gallery": "تم الحفظ في المعرض", + "Save_Your_E2E_Password": "حفظ كلمة المرور بين الطرفين", + "Save_Your_Encryption_Password": "حفظ كلمة المرور المشفرة", + "Save_Your_Encryption_Password_warning": "لا نقوم بتخزين كلمة المرور، الرجاء حفظها لديك في مكان آخر", + "Save_Your_Encryption_Password_info": "لا يمكن إستعادة كلمة المرور في حال فقدانها ولن تستطيع الوصول لرسائلك", + "Search_Messages": "بحث الرسائل", + "Search": "بحث", + "Search_by": "بحث حسب", + "Search_global_users": "بحث عام عن المستخدمين", + "Search_global_users_description": "إذا قمت بالتفعيل، فسيمكنك البحث عن أي مستخدم في شركات أو خوادم أخرى", + "Seconds": "{{second}} ثواني", + "Select_Avatar": "حدد الصورة الرمزية", + "Select_Server": "حدد خادم", + "Select_Users": "حدد مستخدمين", + "Select_a_Channel": "حدد قناة", + "Select_a_Department": "حدد قسم", + "Select_an_option": "حدد خيار", + "Select_a_User": "حدد مستخدم", + "Send": "إرسال", + "Send_audio_message": "إرسال رسالة صوتية", + "Send_crash_report": "إرسال تقرير الأعطال", + "Send_message": "إرسال الرسالة", + "Send_me_the_code_again": "أرسل الرمز مرة أخرى", + "Send_to": "إرسال إلى...", + "Sending_to": "يتم الإرسال إلى", + "Sent_an_attachment": "تم إرسال المرفق", + "Server": "سرفر", + "Servers": "سرفرات", + "Server_version": "نسخة الخادم: {{version}}", + "Set_username_subtitle": "يتم استخدام اسم المستخدم للسماح للآخرين بذكرك في الرسائل", + "Set_custom_status": "حدد حالة خاصة", + "Set_status": "حدد حالة", + "Status_saved_successfully": "تم حفظ الحالة بنجاح!", + "Settings": "الإعدادات", + "Settings_succesfully_changed": "تم تعديل الإعدادات بنجاح!", + "Share": "مشاركة", + "Share_Link": "مشاركة رابط", + "Share_this_app": "مشاركة هذا البرنامج", + "Show_more": "إظهار أكثر..", + "Show_Unread_Counter": "عرض عدد الرسائل غير المقروءة", + "Show_Unread_Counter_Info": "يتم عرض العدد غير المقروء كشارة على يمين القناة في القائمة", + "Sign_in_your_server": "تسجيل الدخول إلى الخادم الخاص بك", + "Sign_Up": "تسجيل جديد", + "Some_field_is_invalid_or_empty": "بعض الحقول غير صالحة أو فارغة", + "Sorting_by": "فرز حسب {{key}}", + "Sound": "الصوت", + "Star_room": "تمييز الغرفة", + "Star": "تمييز", + "Starred_Messages": "رسائل مميزة", + "starred": "مميزة", + "Starred": "مميزة", + "Start_of_conversation": "بداية المحادثة", + "Start_a_Discussion": "ابدأ نقاش", + "Started_discussion": "بدأ النقاش", + "Started_call": "أجرى الاتصال {{userBy}}", + "Submit": "إرسال", + "Table": "جدول", + "Tags": "العلامات", + "Take_a_photo": "التقاط صورة", + "Take_a_video": "التقاط فيديو", + "Take_it": "التقط!", + "tap_to_change_status": "انقر لتغيير الحالة", + "Tap_to_view_servers_list": "انقر لعرض قائمة الخوادم", + "Terms_of_Service": " شروط الخدمة ", + "Theme": "سمة", + "The_user_wont_be_able_to_type_in_roomName": "المستخدم لن يتمكن من الكتابة في {{roomName}}", + "The_user_will_be_able_to_type_in_roomName": "المستخدم سيتمكن من الكتابة في {{roomName}}", + "There_was_an_error_while_action": "حدث خطأ أثناء {{action}}!", + "This_room_is_blocked": "هذه الغرفة محظورة", + "This_room_is_read_only": "هذه الغرفة للقراءة فقط", + "Thread": "موضوع", + "Threads": "مواضيع", + "Timezone": "المنطقة الزمنية", + "To": "إلى", + "topic": "عنوان", + "Topic": "عنوان", + "Translate": "ترجمة", + "Try_again": "حاول مجدداً", + "Two_Factor_Authentication": "المصادقة الثنائية", + "Type_the_channel_name_here": "اكتب اسم القناة هنا", + "unarchive": "إلغاء الأرشفة", + "UNARCHIVE": "إلغاء الأرشفة", + "Unblock_user": "إلغاء حظر عن مستخدم", + "Unfavorite": "إزالة من المفضلة", + "Unfollowed_thread": "موضوع غير متابع", + "Unmute": "إلغاء كتم", + "unmuted": "إلغاء كتم", + "Unpin": "إلغاء التثبيت", + "unread_messages": "رسائل غير مقروءة", + "Unread": "غير مقروء", + "Unread_on_top": "غير مقروء في الأعلى", + "Unstar": "إلغاء التمييز", + "Updating": "جار التحديث...", + "Uploading": "جار الرفع", + "Upload_file_question_mark": "رفع الملف؟", + "User": "مستخدم", + "Users": "مستخدمين", + "User_added_by": "مستخدم {{userAdded}} أضيف من قبل {{userBy}}", + "User_Info": "معلومات المستخدم", + "User_has_been_key": "تمت {{key}} المستخدم!", + "User_is_no_longer_role_by_": "تم إزالة الدور {{role}} عن المستخدم {{user}} من قبل {{userBy}}", + "User_muted_by": "المستخدم {{userMuted}} كتم من قبل {{userBy}}", + "User_removed_by": "المستخدم {{userRemoved}} حذف من قبل {{userBy}}", + "User_sent_an_attachment": "{{user}} أرسل مرفقًا", + "User_unmuted_by": "ألغى {{userBy}} الكتم عن {{userUnmuted}}", + "User_was_set_role_by_": "أضيف دور {{role}} للمستخدم {{user}} من قبل {{userBy}}", + "Username_is_empty": "اسم المستخدم فارغ", + "Username": "اسم المستخدم", + "Username_or_email": "اسم المستخدم أو البريد الالكتروني", + "Uses_server_configuration": "يستخدم إعداد الخادم", + "Validating": "يتم التحقق", + "Registration_Succeeded": "تم التسجيل بنجاح", + "Verify": "تحقق", + "Verify_email_title": "تم التسجيل!", + "Verify_email_desc": "لقد أرسلنا إليك بريداً إلكترونياً لتأكيد تسجيلك. إذا لم تتلق البريد الإلكتروني قريباً، فيرجى العودة والمحاولة مرة أخرى", + "Verify_your_email_for_the_code_we_sent": "يرجى تأكيد البريد الإلكتروني عبر الرمز المرسل", + "Video_call": "مكالمة فيديو", + "View_Original": "عرض المحتوى الأصلي", + "Voice_call": "مكالمة صوتية", + "Waiting_for_network": "بانتظار توفر شبكة...", + "Websocket_disabled": "تم تعطيل Websocket لهذا الخادم.\n{{contact}}", + "Welcome": "مرحبا", + "What_are_you_doing_right_now": "ما الذي تفعله حالياً؟", + "Whats_your_2fa": "ما هو رمز التحقق الثنائي؟", + "Without_Servers": "بدون خوادم", + "Workspaces": "مساحات العمل", + "Would_you_like_to_return_the_inquiry": "هل ترغب بالرد على السؤال؟", + "Write_External_Permission_Message": "يحتاج Rocket.Chat للوصول إلى معرض الصور الخاص بك حتى تتمكن من حفظ الصور", + "Write_External_Permission": "إذن معرض", + "Yes": "نعم", + "Yes_action_it": "نعم، {{action}}!", + "Yesterday": "أمس", + "You_are_in_preview_mode": "أنت في وضع المعاينة", + "You_are_offline": "أنت غير متصل", + "You_can_search_using_RegExp_eg": "يمكنك استخدام RegExp. مثال: `/^text$/i`", + "You_colon": "أنت: ", + "you_were_mentioned": "تمت الإشارة إليك", + "You_were_removed_from_channel": "تمت إزالتك من {{channel}}", + "you": "أنت", + "You": "أنت", + "Logged_out_by_server": "لقد تم تسجيل خروجك من قبل الخادم. الرجاد الدخول من جديد", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "تحتاج إلى الوصول إلى خادم Rocket.Chat واحد على الأقل لمشاركة شيء ما", + "You_need_to_verifiy_your_email_address_to_get_notications": "يجب تأكيد البريد الإلكتروني حتى تصلك الإشعارات", + "Your_certificate": "شهادتك", + "Your_invite_link_will_expire_after__usesLeft__uses": "سوف تنتهي صلاحية رابط الدعوة الخاص بك بعد {{usesLeft}} استخدامات", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}} أو بعد {{usesLeft}} استخدامات", + "Your_invite_link_will_expire_on__date__": "ستنتهي صلاحية رابط الدعوة الخاص بك في {{date}}", + "Your_invite_link_will_never_expire": "لن تنتهي صلاحية رابط الدعوة الخاص بك", + "Your_workspace": "مساحة عملك", + "Your_password_is": "كلمة المرور الخاصة بك هي", + "Version_no": "النسخة: {{version}}", + "You_will_not_be_able_to_recover_this_message": "لن تتمكن من استعادة هذه الرسالة!", + "You_will_unset_a_certificate_for_this_server": "ستلغي شهادة هذا الخادم", + "Change_Language": "تغيير اللغة", + "Crash_report_disclaimer": "نحن لا نتتبع محتوى محادثاتك أبداً. يحتوي تقرير الأعطال فقط على المعلومات ذات الصلة لنا من أجل تحديد المشاكل وإصلاحها", + "Type_message": "اكتب رسالة", + "Room_search": "البحث عن الغرف", + "Room_selection": "اختيار الغرفة 1...9", + "Next_room": "الغرفة المجاورة", + "Previous_room": "الغرفة السابقة", + "New_room": "غرفة جديدة", + "Upload_room": "تحميل إلى الغرفة", + "Search_messages": "رسائل البحث", + "Scroll_messages": "تمرير الرسائل", + "Reply_latest": "الرد على الأحدث", + "Reply_in_Thread": "الرد في موضوع", + "Server_selection": "اختيار الخادم", + "Server_selection_numbers": "اختيار الخادم 1...9", + "Add_server": "إضافة خادم", + "New_line": "سطر جديد", + "You_will_be_logged_out_of_this_application": "سيتم تسجيل خروجك من هذا التطبيق.", + "Clear": "مسح", + "This_will_clear_all_your_offline_data": "سيؤدي هذا إلى محو جميع بياناتك في وضع عدم الاتصال.", + "This_will_remove_all_data_from_this_server": "هذا الإجراء يحذف جميع البيانات من هذا السيرفر", + "Mark_unread": "علامة غير مقروء", + "Wait_activation_warning": "يحب تفعيل حسابك من المشرف قبل تسجيل الدخول", + "Screen_lock": "قفل الشاشة", + "Local_authentication_biometry_title": "صادق", + "Local_authentication_biometry_fallback": "استخدم كلمة المرور", + "Local_authentication_unlock_option": "افتح القفل بكلمة المرور", + "Local_authentication_change_passcode": "تغيير كلمة المرور", + "Local_authentication_info": "تنويه: يجب حذف التطبيق عند نسيان كلمة المرور", + "Local_authentication_facial_recognition": "التعرف على الوجه", + "Local_authentication_fingerprint": "البصمة", + "Local_authentication_unlock_with_label": "فتح القفل بـ {{label}}", + "Local_authentication_auto_lock_60": "بعد دقيقة", + "Local_authentication_auto_lock_300": "بعد 5 دقائق", + "Local_authentication_auto_lock_900": "بعد 15 دقيقة", + "Local_authentication_auto_lock_1800": "بعد 30 دقيقة", + "Local_authentication_auto_lock_3600": "بعد ساعة", + "Passcode_enter_title": "أدخل كلمة المرور", + "Passcode_choose_title": "اختر كلمة المرور الجديدة", + "Passcode_choose_confirm_title": "تأكيد كلمة المرور الجديدة", + "Passcode_choose_error": "كلمة المرور غير متطابقة. حاول مجدداً", + "Passcode_choose_force_set": "كلمة المرور مطلوبة من المشرف", + "Passcode_app_locked_title": "التطبيق مقفل", + "Passcode_app_locked_subtitle": "حاول مجدداً بعد {{timeLeft}} ثوان", + "After_seconds_set_by_admin": "بعد {{seconds}} ثوان (حددها المدير)", + "Dont_activate": "لا تقم بالتفعيل الآن", + "Queued_chats": "محادثات في قائمى الانتظار", + "Queue_is_empty": "قائمة الانتظار فارغة", + "Logout_from_other_logged_in_locations": "تسجيل الخروج من الأماكن الأخرى", + "You_will_be_logged_out_from_other_locations": "سيتم تسجيل خروج من الأماكن الأخرى", + "Logged_out_of_other_clients_successfully": "تم تسجيل الخروج من الأماكن الأخرى بنجاح", + "Logout_failed": "فشل تسجيل الخروج!", + "Log_analytics_events": "تحليلات سجل الأحداث" +} \ No newline at end of file diff --git a/app/i18n/locales/de.js b/app/i18n/locales/de.js deleted file mode 100644 index 02e98bec63c..00000000000 --- a/app/i18n/locales/de.js +++ /dev/null @@ -1,708 +0,0 @@ -export default { - '1_person_reacted': '1 Person hat reagiert', - '1_user': '1 Benutzer', - 'error-action-not-allowed': '{{action}} ist nicht erlaubt', - 'error-application-not-found': 'Anwendung nicht gefunden', - 'error-archived-duplicate-name': 'Es gibt bereits einen archivierten Kanal mit dem Namen {{room_name}}', - 'error-avatar-invalid-url': 'Ungültige Avatar-URL: {{url}}', - 'error-avatar-url-handling': 'Fehler beim Umgang mit der Avatar-Einstellung von einer URL ({{url}}) für {{username}}', - 'error-cant-invite-for-direct-room': 'Benutzer können nicht zu Räumen eingeladen werden', - 'error-could-not-change-email': 'E-Mail konnte nicht geändert werden', - 'error-could-not-change-name': 'Name konnte nicht geändert werden', - 'error-could-not-change-username': 'Benutzername konnte nicht geändert werden', - 'error-could-not-change-status': 'Status konnte nicht geändert werden', - 'error-delete-protected-role': 'Eine geschützte Rolle kann nicht gelöscht werden', - 'error-department-not-found': 'Abteilung nicht gefunden', - 'error-direct-message-file-upload-not-allowed': 'Dateifreigabe in direkten Nachrichten nicht zulässig', - 'error-duplicate-channel-name': 'Ein Kanal mit dem Namen {{channel_name}} ist bereits vorhanden', - 'error-email-domain-blacklisted': 'Die E-Mail-Domain wird auf die schwarze Liste gesetzt', - 'error-email-send-failed': 'Fehler beim Versuch, eine E-Mail zu senden: {{message}}', - 'error-save-image': 'Fehler beim Speichern des Bildes', - 'error-save-video': 'Fehler beim Speichern des Videos', - 'error-field-unavailable': '{{field}} wird bereits verwendet :(', - 'error-file-too-large': 'Datei ist zu groß', - 'error-importer-not-defined': 'Der Import wurde nicht korrekt definiert, es fehlt die Importklasse.', - 'error-input-is-not-a-valid-field': '{{input}} ist kein gültiges {{field}}', - 'error-invalid-actionlink': 'Ungültiger Aktionslink', - 'error-invalid-arguments': 'Ungültige Argumente', - 'error-invalid-asset': 'Ungültiges Asset', - 'error-invalid-channel': 'Ungültiger Kanal', - 'error-invalid-channel-start-with-chars': 'Ungültiger Kanal. Beginne mit @ oder #', - 'error-invalid-custom-field': 'Ungültiges benutzerdefiniertes Feld', - 'error-invalid-custom-field-name': 'Ungültiger benutzerdefinierter Feldname. Verwende nur Buchstaben, Zahlen, Bindestriche und Unterstriche.', - 'error-invalid-date': 'Ungültiges Datum angegeben', - 'error-invalid-description': 'Ungültige Beschreibung', - 'error-invalid-domain': 'Ungültige Domain', - 'error-invalid-email': 'Ungültige E-Mail {{emai}}', - 'error-invalid-email-address': 'Ungültige E-Mail-Adresse', - 'error-invalid-file-height': 'Ungültige Dateihöhe', - 'error-invalid-file-type': 'Ungültiger Dateityp', - 'error-invalid-file-width': 'Ungültige Dateibreite', - 'error-invalid-from-address': 'Du hast eine ungültige FROM-Adresse mitgeteilt.', - 'error-invalid-integration': 'Ungültige Integration', - 'error-invalid-message': 'Ungültige Nachricht', - 'error-invalid-method': 'Ungültige Methode', - 'error-invalid-name': 'Ungültiger Name', - 'error-invalid-password': 'Ungültiges Passwort', - 'error-invalid-redirectUri': 'Ungültige Weiterleitung', - 'error-invalid-role': 'Ungültige Rolle', - 'error-invalid-room': 'Ungültiger Raum', - 'error-invalid-room-name': '{{room_name}} ist kein gültiger Raumname', - 'error-invalid-room-type': '{{type}} ist kein gültiger Raumtyp.', - 'error-invalid-settings': 'Ungültige Einstellungen angegeben', - 'error-invalid-subscription': 'Ungültiges Abonnement', - 'error-invalid-token': 'Ungültiges Token', - 'error-invalid-triggerWords': 'Ungültige TriggerWords', - 'error-invalid-urls': 'Ungültige URLs', - 'error-invalid-user': 'Ungültiger Benutzer', - 'error-invalid-username': 'Ungültiger Benutzername', - 'error-invalid-webhook-response': 'Die Webhook-URL antwortete mit einem anderen Status als 200', - 'error-message-deleting-blocked': 'Das Löschen von Nachrichten ist gesperrt', - 'error-message-editing-blocked': 'Die Bearbeitung von Nachrichten ist gesperrt', - 'error-message-size-exceeded': 'Die Nachrichtengröße überschreitet Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'Du musst den Link [abbestellen] angeben.', - 'error-no-tokens-for-this-user': 'Für diesen Benutzer gibt es keine Token', - 'error-not-allowed': 'Nicht erlaubt', - 'error-not-authorized': 'Nicht berechtigt', - 'error-push-disabled': 'Push ist deaktiviert', - 'error-remove-last-owner': 'Dies ist der letzte Besitzer. Bitte lege einen neuen Besitzer fest, bevor du diesen entfernst.', - 'error-role-in-use': 'Rolle kann nicht gelöscht werden, da sie gerade verwendet wird', - 'error-role-name-required': 'Der Rollenname ist erforderlich', - 'error-the-field-is-required': 'Das Feld {{field}} ist erforderlich.', - 'error-too-many-requests': 'Fehler, zu viele Anfragen. Du musst {{Sekunden}} Sekunden warten, bevor du es erneut versuchst.', - 'error-user-is-not-activated': 'Benutzer ist nicht aktiviert', - 'error-user-has-no-roles': 'Benutzer hat keine Rollen', - 'error-user-limit-exceeded': 'Die Anzahl der Benutzer, die du zu #channel_name einladen möchtest, überschreitet die vom Administrator festgelegte Grenze', - 'error-user-not-in-room': 'Benutzer ist nicht in diesem Raum', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'Die Benutzerregistrierung ist deaktiviert', - 'error-user-registration-secret': 'Die Benutzerregistrierung ist nur über eine geheime URL möglich', - 'error-you-are-last-owner': 'Du bist der letzte Besitzer. Bitte setze einen neuen Besitzer, bevor du den Raum verlässt.', - Actions: 'Aktionen', - activity: 'Aktivität', - Activity: 'Aktivität', - Add_Reaction: 'Reaktion hinzufügen', - Add_Server: 'Server hinzufügen', - Add_users: 'Benutzer hinzufügen', - Admin_Panel: 'Admin-Panel', - Agent: 'Agent', - Alert: 'Benachrichtigung', - alert: 'Benachrichtigung', - alerts: 'Benachrichtigungen', - All_users_in_the_channel_can_write_new_messages: 'Alle Benutzer im Kanal können neue Nachrichten schreiben', - A_meaningful_name_for_the_discussion_room: 'Ein aussagekräftiger Name für den Diskussionsraum', - All: 'alle', - All_Messages: 'Alle Nachrichten', - Allow_Reactions: 'Reaktionen zulassen', - Alphabetical: 'Alphabetisch', - and_more: 'und mehr', - and: 'und', - announcement: 'Ankündigung', - Announcement: 'Ankündigung', - Apply_Your_Certificate: 'Wende dein Zertifikat an', - ARCHIVE: 'ARCHIV', - archive: 'Archiv', - are_typing: 'tippen', - Are_you_sure_question_mark: 'Bist du sicher?', - Are_you_sure_you_want_to_leave_the_room: 'Möchtest du den Raum wirklich verlassen {{room}}?', - Audio: 'Audio', - Authenticating: 'Authentifizierung', - Automatic: 'Automatisch', - Auto_Translate: 'Automatische Übersetzung', - Avatar_changed_successfully: 'Avatar erfolgreich geändert!', - Avatar_Url: 'Avatar-URL', - Away: 'Abwesend', - Back: 'Zurück', - Black: 'Schwarz', - Block_user: 'Benutzer blockieren', - Browser: 'Browser', - Broadcast_channel_Description: 'Nur autorisierte Benutzer können neue Nachrichten schreiben, die anderen Benutzer können jedoch antworten', - Broadcast_Channel: 'Broadcastkanal', - Busy: 'Beschäftigt', - By_proceeding_you_are_agreeing: 'Indem du fortfährst, stimmst du zu unserem', - Cancel_editing: 'Bearbeitung abbrechen', - Cancel_recording: 'Aufnahme abbrechen', - Cancel: 'Abbrechen', - changing_avatar: 'Avatar wechseln', - creating_channel: 'Kanal erstellen', - creating_invite: 'Einladung erstellen', - Channel_Name: 'Kanal Name', - Channels: 'Kanäle', - Chats: 'Chats', - Call_already_ended: 'Anruf bereits beendet!', - Clear_cookies_alert: 'Möchtest du alle Cookies löschen?', - Clear_cookies_desc: 'Diese Aktion wird alle Login-Cookies löschen und erlaubt es dir, dich mit einem anderen Konto anzumelden.', - Clear_cookies_yes: 'Ja, Cookies löschen', - Clear_cookies_no: 'Nein, Cookies behalten', - Click_to_join: 'Klicken um teilzunehmen!', - Close: 'Schließen', - Close_emoji_selector: 'Schließe die Emoji-Auswahl', - Closing_chat: 'Chat schließen', - Change_language_loading: 'Ändere Sprache.', - Chat_closed_by_agent: 'Chat durch den Agenten geschlossen', - Choose: 'Wählen', - Choose_from_library: 'Aus der Bibliothek auswählen', - Choose_file: 'Datei auswählen', - Choose_where_you_want_links_be_opened: 'Entscheide, wie Links geöffnet werden sollen', - Code: 'Code', - Code_or_password_invalid: 'Code oder Passwort sind falsch', - Collaborative: 'Kollaborativ', - Confirm: 'Bestätigen', - Connect: 'Verbinden', - Connected: 'Verbunden', - connecting_server: 'verbinde zum Server', - Connecting: 'Verbinden ...', - Contact_us: 'Kontaktiere uns', - Contact_your_server_admin: 'Kontaktiere deinen Server-Administrator.', - Continue_with: 'Weitermachen mit', - Copied_to_clipboard: 'In die Zwischenablage kopiert!', - Copy: 'Kopieren', - Conversation: 'Konversationen', - Permalink: 'Permalink', - Certificate_password: 'Zertifikats-Passwort', - Clear_cache: 'Lokalen Server-Cache leeren', - Clear_cache_loading: 'Leere Cache.', - Whats_the_password_for_your_certificate: 'Wie lautet das Passwort für dein Zertifikat?', - Create_account: 'Ein Konto erstellen', - Create_Channel: 'Kanal erstellen', - Create_Direct_Messages: 'Direkt-Nachricht erstellen', - Create_Discussion: 'Diskussion erstellen', - Created_snippet: 'Erstellt ein Snippet', - Create_a_new_workspace: 'Erstelle einen neuen Arbeitsbereich', - Create: 'Erstellen', - Custom_Status: 'eigener Status', - Dark: 'Dunkel', - Dark_level: 'Dunkelstufe', - Default: 'Standard', - Default_browser: 'Standard-Browser', - Delete_Room_Warning: 'Durch das Löschen eines Raums werden alle Nachrichten gelöscht, die im Raum gepostet wurden. Das kann nicht rückgängig gemacht werden.', - Department: 'Abteilung', - delete: 'löschen', - Delete: 'Löschen', - DELETE: 'LÖSCHEN', - deleting_room: 'lösche Raum', - description: 'Beschreibung', - Description: 'Beschreibung', - Desktop_Options: 'Desktop-Einstellungen', - Desktop_Notifications: 'Desktop-Benachrichtigungen', - Directory: 'Verzeichnis', - Direct_Messages: 'Direkte Nachrichten', - Disable_notifications: 'Benachrichtigungen deaktiveren', - Discussions: 'Diskussionen', - Discussion_Desc: 'Hilft dir die Übersicht zu behalten! Durch das Erstellen einer Diskussion wird ein Unter-Kanal im ausgewählten Raum erzeugt und beide verknüpft.', - Discussion_name: 'Diskussions-Name', - Done: 'Erledigt', - Dont_Have_An_Account: 'Du hast noch kein Konto?', - Do_you_have_an_account: 'Du hast schon ein Konto?', - Do_you_have_a_certificate: 'Hast du ein Zertifikat?', - Do_you_really_want_to_key_this_room_question_mark: 'Möchtest du diesen Raum wirklich {{key}}?', - E2E_Encryption: 'E2E-Verschlüsselung', - E2E_How_It_Works_info1: 'Du kannst nun verschlüsselte private Gruppen und Direktnachrichten versenden. Du kannst außerdem deine bestehenden privaten Gruppen und Direktnachrichten auf Verschlüsselung umstellen.', - E2E_How_It_Works_info2: 'Dies ist *Ende-zu-Ende-Verschlüsselung*, daher wird der Schlüssel um die Nachrichten zu ver-/entschlüsseln nicht auf dem Server gespeichert. Aus diesem Grund musst du dieses Passwort an einem sicheren Ort speichern, so dass du später bei Bedarf darauf zugreifen kannst.', - E2E_How_It_Works_info3: 'Wenn du fortfährst, wird automatisch ein ein E2E-Passwort erzeugt.', - E2E_How_It_Works_info4: 'Du kannst außerdem jederzeit, in jedem Browser, in dem du das bestehende Passwort eingegeben hast, ein neues Passwort setzen.', - edit: 'bearbeiten', - edited: 'bearbeitet', - Edit: 'Bearbeiten', - Edit_Status: 'Status ändern', - Edit_Invite: 'Einladung bearbeiten', - End_to_end_encrypted_room: 'Ende-zu-Ende-verschlüsselter Raum', - end_to_end_encryption: 'Nicht mehr Ende-zu-Ende-verschlüsseln', - Email_Notification_Mode_All: 'Jede Erwähnung/Direktnachricht', - Email_Notification_Mode_Disabled: 'Deaktiviert', - Email_or_password_field_is_empty: 'Das E-Mail- oder Passwortfeld ist leer', - Email: 'E-mail', - email: 'E-mail', - Empty_title: 'leerer Titel', - Enable_Auto_Translate: 'Automatische Übersetzung aktivieren', - Enable_notifications: 'Benachrichtigungen aktivieren', - Encrypted: 'Verschlüsselt', - Encrypted_message: 'Verschlüsselte Nachricht', - Enter_Your_E2E_Password: 'Gib dein Ende-zu-Ende-Passwort ein', - Enter_Your_Encryption_Password_desc1: 'Das erlaubt dir auf deine verschlüsselten privaten Gruppen und Direktnachrichten zuzugreifen.', - Enter_Your_Encryption_Password_desc2: 'Du musst das Passwort zur Ver-/Entschlüsselung an jeder Stelle eingeben, an dem du diesen Chat verwendest.', - Encryption_error_title: 'Dein Verschlüsselungs-Passwort scheint falsch zu sein', - Encryption_error_desc: 'Es war nicht möglich deinen Verschlüsselungs-Key zu importieren.', - Everyone_can_access_this_channel: 'Jeder kann auf diesen Kanal zugreifen', - Error_uploading: 'Fehler beim Hochladen', - Expiration_Days: 'läuft ab (Tage)', - Favorite: 'Favorisieren', - Favorites: 'Favoriten', - Files: 'Dateien', - File_description: 'Dateibeschreibung', - File_name: 'Dateiname', - Finish_recording: 'Beende die Aufnahme', - Following_thread: 'Thread folgen', - For_your_security_you_must_enter_your_current_password_to_continue: 'Zu deiner Sicherheit musst du dein aktuelles Passwort eingeben, um fortzufahren', - Forgot_password_If_this_email_is_registered: 'Wenn diese E-Mail registriert ist, senden wir Anweisungen zum Zurücksetzen deines Passworts. Wenn du nicht in Kürze keine E-Mail erhältst, versuche es bitte erneut.', - Forgot_password: 'Passwort vergessen', - Forgot_Password: 'Passwort vergessen', - Forward: 'Weiterleiten', - Forward_Chat: 'Chat weiterleiten', - Forward_to_department: 'Weiterleiten an Abteilung', - Forward_to_user: 'Weiterleiten an Benutzer', - Full_table: 'Klicken um die ganze Tabelle anzuzeigen', - Generate_New_Link: 'Neuen Link erstellen', - Group_by_favorites: 'Nach Favoriten gruppieren', - Group_by_type: 'Gruppieren nach Typ', - Hide: 'Ausblenden', - Has_joined_the_channel: 'Ist dem Kanal beigetreten', - Has_joined_the_conversation: 'Hat sich dem Gespräch angeschlossen', - Has_left_the_channel: 'Hat den Kanal verlassen', - Hide_System_Messages: 'Systemnachrichten verstecken', - Hide_type_messages: 'Verstecke "{{type}}"-Nachrichten', - How_It_Works: 'Wie es funktioniert', - Message_HideType_uj: 'Benutzer beigetreten', - Message_HideType_ul: 'Benutzer verlassen', - Message_HideType_ru: 'Benutzer entfernt', - Message_HideType_au: 'Benutzer hinzugefügt', - Message_HideType_mute_unmute: 'Benutzer stummgeschaltet / freigegeben', - Message_HideType_r: 'Raumname geändert', - Message_HideType_ut: 'Benutzer ist der Unterhaltung beigetreten', - Message_HideType_wm: 'Willkommen', - Message_HideType_rm: 'Nachricht entfernt', - Message_HideType_subscription_role_added: 'Rolle wurde gesetzt', - Message_HideType_subscription_role_removed: 'Rolle nicht länger definiert', - Message_HideType_room_archived: 'Raum archiviert', - Message_HideType_room_unarchived: 'Raum nicht mehr archiviert', - I_Saved_My_E2E_Password: 'Ich habe mein Ende-zu-Ende-Passwort gesichert', - IP: 'IP', - In_app: 'In-App-Browser', - In_App_And_Desktop: 'In-app und Desktop', - In_App_and_Desktop_Alert_info: 'Zeigt ein Banner oben am Bildschirm, wenn die App geöffnet ist und eine Benachrichtigung auf dem Desktop.', - Invisible: 'Unsichtbar', - Invite: 'Einladen', - is_a_valid_RocketChat_instance: 'ist eine gültige Rocket.Chat-Instanz', - is_not_a_valid_RocketChat_instance: 'ist keine gültige Rocket.Chat-Instanz', - is_typing: 'schreibt', - Invalid_or_expired_invite_token: 'Ungültiger oder abgelaufener Einladungscode', - Invalid_server_version: 'Der Server, zu dem du dich verbinden möchtest, verwendet eine Version, die von der App nicht mehr unterstützt wird: {{currentVersion}}.\n\nWir benötigen Version {{MinVersion}}.', - Invite_Link: 'Einladungs-Link', - Invite_users: 'Benutzer einladen', - Join: 'Beitreten', - Join_Code: 'Beitrittscode', - Insert_Join_Code: 'Beitrittscode eingeben', - Join_our_open_workspace: 'Tritt unserem offenen Arbeitsbereich bei', - Join_your_workspace: 'Tritt deinem Arbeitsbereich bei', - Just_invited_people_can_access_this_channel: 'Nur eingeladene Personen können auf diesen Kanal zugreifen', - Language: 'Sprache', - last_message: 'letzte Nachricht', - Leave_channel: 'Kanal verlassen', - leaving_room: 'Raum verlassen', - leave: 'verlassen', - Legal: 'Rechtliches', - Light: 'Hell', - License: 'Lizenz', - Livechat: 'Live-Chat', - Livechat_edit: 'Livechat bearbeiten', - Login: 'Anmeldung', - Login_error: 'Deine Zugangsdaten wurden abgelehnt! Bitte versuche es erneut.', - Login_with: 'Einloggen mit', - Logging_out: 'Abmelden.', - Logout: 'Abmelden', - Max_number_of_uses: 'Maximale Anzahl der Benutzungen', - Max_number_of_users_allowed_is_number: 'Maximale Anzahl von erlaubten Benutzern ist {{maxUsers}}', - members: 'Mitglieder', - Members: 'Mitglieder', - Mentioned_Messages: 'Erwähnte Nachrichten', - mentioned: 'erwähnt', - Mentions: 'Erwähnungen', - Message_accessibility: 'Nachricht von {{user}} um {{time}}: {{message}}', - Message_actions: 'Nachrichtenaktionen', - Message_pinned: 'Eine Nachricht wurde angeheftet', - Message_removed: 'Nachricht entfernt', - Message_starred: 'Nachricht favorisiert', - Message_unstarred: 'Nachricht nicht mehr favorisiert', - message: 'Nachricht', - messages: 'Nachrichten', - Message: 'Nachricht', - Messages: 'Mitteilungen', - Message_Reported: 'Nachricht gemeldet', - Microphone_Permission_Message: 'Rocket.Chat benötigt Zugriff auf das Mikrofon, damit du eine Audionachricht senden kannst.', - Microphone_Permission: 'Mikrofonberechtigung', - Mute: 'Diesem Benutzer das Chatten verbieten', - muted: 'stummgeschaltet', - My_servers: 'Meine Server', - N_people_reacted: '{{n}} Leute haben reagiert', - N_users: '{{n}} Benutzer', - name: 'Name', - Name: 'Name', - Navigation_history: 'Navigations-Verlauf', - Never: 'Niemals', - New_Message: 'Neue Nachricht', - New_Password: 'Neues Kennwort', - New_Server: 'Neuer Server', - Next: 'Nächster', - No_files: 'Keine Dateien', - No_limit: 'Kein Limit', - No_mentioned_messages: 'Keine Nachrichten mit Erwähnungen', - No_pinned_messages: 'Keine angehefteten Nachrichten', - No_results_found: 'Keine Ergebnisse gefunden', - No_starred_messages: 'Keine markierten Nachrichten', - No_thread_messages: 'Keine Threadnachrichten', - No_label_provided: 'Kein(e) {{label}} gesetzt.', - No_Message: 'Keine Nachricht', - No_messages_yet: 'Noch keine Nachrichten', - No_Reactions: 'Keine Reaktionen', - No_Read_Receipts: 'Keine Lesebestätigungen', - Not_logged: 'Nicht protokolliert', - Not_RC_Server: 'Dies ist kein Rocket.Chat-Server.\n{{contact}}', - Nothing: 'Nichts', - Nothing_to_save: 'Nichts zu speichern!', - Notify_active_in_this_room: 'Aktive Benutzer in diesem Raum benachrichtigen', - Notify_all_in_this_room: 'Benachrichtige alle in diesem Raum', - Notifications: 'Benachrichtigungen', - Notification_Duration: 'Benachrichtigungsdauer', - Notification_Preferences: 'Benachrichtigungseinstellungen', - No_available_agents_to_transfer: 'Keine Agenten für den Transfer verfügbar', - Offline: 'Offline', - Oops: 'Hoppla!', - Omnichannel: 'Omnichannel', - Open_Livechats: 'Offene Chats', - Omnichannel_enable_alert: 'Du bist in Omnichannel nicht verfügbar. Möchtest du erreichbar sein?', - Onboarding_description: 'Ein Arbeitsbereich ist der Ort für die Zusammenarbeit deines Teams oder Organisation. Bitte den Admin des Arbeitsbereichs um eine Adresse, um ihm beizutreten, oder erstelle einen Arbeitsbereich für dein Team.', - Onboarding_join_workspace: 'Tritt einem Arbeitsbereich bei', - Onboarding_subtitle: 'Mehr als Team-Zusammenarbeit', - Onboarding_title: 'Willkommen bei Rocket.Chat', - Onboarding_join_open_description: 'Tritt unserem Arbeitsbereich bei um mit dem Rocket.Chat-Team oder der Gemeinschaft zu chatten.', - Onboarding_agree_terms: 'Durch fortfahren stimmst du Rocket.Chats Bedingungen zu', - Onboarding_less_options: 'Weniger Optionen', - Onboarding_more_options: 'Mehr Optionen', - Online: 'Online', - Only_authorized_users_can_write_new_messages: 'Nur autorisierte Benutzer können neue Nachrichten schreiben', - Open_emoji_selector: 'Öffne die Emoji-Auswahl', - Open_Source_Communication: 'Open-Source-Kommunikation', - Open_your_authentication_app_and_enter_the_code: 'Öffne deine Authentifizierungsanwendung und gib den Code ein.', - OR: 'ODER', - OS: 'OS', - Overwrites_the_server_configuration_and_use_room_config: 'Übergeht die Servereinstellungen und nutzt Einstellung für den Raum', - Password: 'Passwort', - Parent_channel_or_group: 'Übergeordneter Kanal oder Gruppe', - Permalink_copied_to_clipboard: 'Permalink in die Zwischenablage kopiert!', - Phone: 'Telefon', - Pin: 'Anheften', - Pinned_Messages: 'Angeheftete Nachrichten', - pinned: 'angeheftet', - Pinned: 'Angeheftet', - Please_add_a_comment: 'Bitte Kommentar hinzufügen', - Please_enter_your_password: 'Gib bitte dein Passwort ein', - Please_wait: 'Bitte warten.', - Preferences: 'Einstellungen', - Preferences_saved: 'Einstellungen gespeichert!', - Privacy_Policy: ' Datenschutzbestimmungen', - Private_Channel: 'Privater Kanal', - Private_Groups: 'Private Gruppen', - Private: 'Privat', - Processing: 'Bearbeite …', - Profile_saved_successfully: 'Profil erfolgreich gespeichert!', - Profile: 'Profil', - Public_Channel: 'Öffentlicher Kanal', - Public: 'Öffentlich', - Push_Notifications: 'Push-Benachrichtigungen', - Push_Notifications_Alert_Info: 'Diese Benachrichtigungen werden dir zugestellt, wenn die App nicht geöffnet ist.', - Desktop_Alert_info: 'Diese Benachrichtigungen werden auf dem Desktop angezeigt', - Quote: 'Zitat', - Reactions_are_disabled: 'Reaktionen sind deaktiviert', - Reactions_are_enabled: 'Reaktionen sind aktiviert', - Reactions: 'Reaktionen', - Read: 'Gelesen', - Read_External_Permission_Message: 'Rocket.Chat benötigt Zugriff auf deine Fotos, Medien und Dateien auf deinem Gerät', - Read_External_Permission: 'Lese-Zugriff auf Medien', - Read_Only_Channel: 'Nur-Lese-Kanal', - Read_Only: 'Schreibgeschützt', - Read_Receipt: 'Lesebestätigung', - Receive_Group_Mentions: 'Erhalte Gruppen-Benachrichtigungen', - Receive_Group_Mentions_Info: 'Empfange @all und @here Erwähnungen', - Register: 'Registrieren', - Repeat_Password: 'Wiederhole das Passwort', - Replied_on: 'Antwortete am:', - replies: 'Antworten', - reply: 'Antworten', - Reply: 'Antworten', - Report: 'Melden', - Receive_Notification: 'Erhalte Benachrichtigungen', - Receive_notifications_from: 'Erhalte Benachrichtigungen von {{name}}', - Resend: 'Erneut senden', - Reset_password: 'Passwort zurücksetzen', - resetting_password: 'Passwort zurücksetzen', - RESET: 'ZURÜCKSETZEN', - Return: 'Zurück', - Review_app_title: 'Gefällt dir diese App?', - Review_app_desc: 'Gib uns 5 Sterne im {{store}}', - Review_app_yes: 'Sicher!', - Review_app_no: 'Nein', - Review_app_later: 'Vielleicht später', - Review_app_unable_store: 'Kann {{store}} nicht öffnen', - Review_this_app: 'App bewerten', - Remove: 'Entfernen', - Roles: 'Rollen', - Room_actions: 'Raumaktionen', - Room_changed_announcement: 'Raumansage geändert in: {{announcement}} von {{userBy}}', - Room_changed_avatar: 'Raum-Avatar durch Nutzer {{userBy}} gändert', - Room_changed_description: 'Raumbeschreibung geändert in: {{description}} von {{userBy}}', - Room_changed_privacy: 'Raumtyp geändert in: {{type}} von {{userBy}}', - Room_changed_topic: 'Raumthema geändert in: {{topic}} von {{userBy}}', - Room_Files: 'Raumdateien', - Room_Info_Edit: 'Rauminfo bearbeiten', - Room_Info: 'Rauminfo', - Room_Members: 'Raum-Mitglieder', - Room_name_changed: 'Raumname geändert in {{name}} von {{userBy}}', - SAVE: 'SPEICHERN', - Save_Changes: 'Änderungen speichern', - Save: 'speichern', - Saved: 'gespeichert', - saving_preferences: 'Präferenzen speichern', - saving_profile: 'Profil speichern', - saving_settings: 'Einstellungen speichern', - saved_to_gallery: 'Gespeichert in der Galerie', - Save_Your_E2E_Password: 'Speichere dein Ende-zu-Ende-Passwort', - Save_Your_Encryption_Password: 'Speichere dein Verschlüsselungs-Passwort', - Save_Your_Encryption_Password_warning: 'Dieses Passwort wird nirgends gespeichert, stelle daher sicher, dass du es an einem sicheren Ort aufbewahrst.', - Save_Your_Encryption_Password_info: 'Hinweis: Wenn du dieses Passwort verlierst, gibt es keine Möglichkeit es wieder herzustellen und du wirst nicht mehr auf deine Nachrichten zugreifen können.', - Search_Messages: 'Nachrichten suchen', - Search: 'Suche', - Search_by: 'Suche nach', - Search_global_users: 'Suche nach globalen Benutzern', - Search_global_users_description: 'Wenn aktiviert, kannst du nach Benutzern von anderen Unternehmen oder Servern suchen.', - Seconds: '{{second}} Sekunden', - Security_and_privacy: 'Sicherheit und Datenschutz', - Select_Avatar: 'Wähle einen Avatar aus', - Select_Server: 'Server auswählen', - Select_Users: 'Benutzer auswählen', - Select_a_Channel: 'Kanal auswählen', - Select_a_Department: 'Abteilung auswählen', - Select_an_option: 'Option auswählen', - Select_a_User: 'Benutzer auswählen', - Send: 'Senden', - Send_audio_message: 'Audio-Nachricht senden', - Send_crash_report: 'Absturzbericht senden', - Send_message: 'Nachricht senden', - Send_me_the_code_again: 'Den Code neu versenden', - Send_to: 'Senden an …', - Sending_to: 'Sende an', - Sent_an_attachment: 'Sende einen Anhang', - Server: 'Server', - Servers: 'Server', - Server_version: 'Server version: {{version}}', - Set_username_subtitle: 'Der Benutzername wird verwendet, damit andere Personen dich in Nachrichten erwähnen können', - Set_custom_status: 'Individuellen Status setzen', - Set_status: 'Status setzen', - Status_saved_successfully: 'Status erfolgreich gesetzt!', - Settings: 'Einstellungen', - Settings_succesfully_changed: 'Einstellungen erfolgreich geändert!', - Share: 'Teilen', - Share_Link: 'Link teilen', - Share_this_app: 'App teilen', - Show_more: 'Mehr anzeigen …', - Show_Unread_Counter: 'Zähler anzeigen', - Show_Unread_Counter_Info: 'Anzahl der ungelesenen Nachrichten anzeigen', - Sign_in_your_server: 'Melde dich bei deinem Server an', - Sign_Up: 'Anmelden', - Some_field_is_invalid_or_empty: 'Ein Feld ist ungültig oder leer', - Sorting_by: 'Sortierung nach {{key}}', - Sound: 'Ton', - Star_room: 'Favorisierter Raum', - Star: 'Favoriten', - Starred_Messages: 'Favorisierte Nachrichten', - starred: 'favorisiert', - Starred: 'Favorisiert', - Start_of_conversation: 'Beginn des Gesprächs', - Start_a_Discussion: 'Beginne eine Diskussion', - Started_discussion: 'Hat eine Diskussion gestartet:', - Started_call: 'Anruf gestartet von {{userBy}}', - Submit: 'einreichen', - Table: 'Tabelle', - Tags: 'Tags', - Take_a_photo: 'Foto aufnehmen', - Take_a_video: 'Video aufnehmen', - Take_it: 'Annehmen!', - tap_to_change_status: 'Tippen um den Status zu ändern', - Tap_to_view_servers_list: 'Hier tippen, um die Serverliste anzuzeigen', - Terms_of_Service: ' Nutzungsbedingungen', - Theme: 'Erscheinungsbild', - The_user_wont_be_able_to_type_in_roomName: 'Dem Nutzer wird es nicht möglich sein in {{roomName}} zu schreiben', - The_user_will_be_able_to_type_in_roomName: 'Der Nutzer wird in {{roomName}} schreiben können', - There_was_an_error_while_action: 'Während {{action}} ist ein Fehler aufgetreten!', - This_room_is_blocked: 'Dieser Raum ist gesperrt', - This_room_is_read_only: 'Dieser Raum kann nur gelesen werden', - Thread: 'Thread', - Threads: 'Threads', - Timezone: 'Zeitzone', - To: 'An', - topic: 'Thema', - Topic: 'Thema', - Translate: 'Übersetzen', - Try_again: 'Versuche es nochmal', - Two_Factor_Authentication: 'Zwei-Faktor-Authentifizierung', - Type_the_channel_name_here: 'Gib hier den Kanalnamen ein', - unarchive: 'wiederherstellen', - UNARCHIVE: 'WIEDERHERSTELLEN', - Unblock_user: 'Benutzer entsperren', - Unfavorite: 'Nicht mehr favorisieren', - Unfollowed_thread: 'Thread nicht mehr folgen', - Unmute: 'Stummschaltung aufheben', - unmuted: 'Stummschaltung aufgehoben', - Unpin: 'Nachricht nicht mehr anheften', - unread_messages: 'ungelesene', - Unread: 'ungelesene', - Unread_on_top: 'Ungelesene oben', - Unstar: 'von Favoriten entfernen', - Updating: 'Aktualisierung …', - Uploading: 'Hochladen', - Upload_file_question_mark: 'Datei hochladen?', - User: 'Benutzer', - Users: 'Benutzer', - User_added_by: 'Benutzer {{userAdded}} hinzugefügt von {{userBy}}', - User_Info: 'Benutzerinfo', - User_has_been_key: 'Benutzer wurde {{key}}', - User_is_no_longer_role_by_: '{{user}} ist nicht länger {{role}} von {{userBy}}', - User_muted_by: 'Benutzer {{userMuted}} von {{userBy}} stummgeschaltet', - User_removed_by: 'Benutzer {{userRemoved}} wurde von {{userBy}} entfernt', - User_sent_an_attachment: '{{user}}: eine Datei gesendet', - User_unmuted_by: 'Benutzer {{userUnmuted}} nicht stummgeschaltet von {{userBy}}', - User_was_set_role_by_: '{{user}} wurde von {{userBy}} {{role}} festgelegt.', - Username_is_empty: 'Der Benutzername ist leer', - Username: 'Benutzername', - Username_or_email: 'Benutzername oder E-Mail-Adresse', - Uses_server_configuration: 'Nutzt Servereinstellungen', - Validating: 'Validierung', - Registration_Succeeded: 'Registrierung erfolgreich!', - Verify: 'Überprüfen', - Verify_email_title: 'Registrierung erfolgreich!', - Verify_email_desc: 'Wir haben dir eine Email geschickt um deine Anmeldung zu bestätigen. Wenn du keine Email erhältst, komme bitte wieder und versuche es noch einmal.', - Verify_your_email_for_the_code_we_sent: 'Prüfe deine Mails für den Code, den wir dir eben geschickt haben.', - Video_call: 'Videoanruf', - View_Original: 'Original anzeigen', - Voice_call: 'Sprachanruf', - Waiting_for_network: 'Warte auf das Netzwerk …', - Websocket_disabled: 'Websockets sind auf diesem Server nicht aktiviert.\n{{contact}}', - Welcome: 'Herzlich willkommen', - What_are_you_doing_right_now: 'Was machst du gerade?', - Whats_your_2fa: 'Wie lautet dein 2FA-Code?', - Without_Servers: 'Ohne Server', - Workspaces: 'Arbeitsbereiche', - Would_you_like_to_return_the_inquiry: 'Willst du zur Anfrage zurück?', - Write_External_Permission_Message: 'Rocket.Chat benötigt Zugriff auf deine Galerie um Bilder speichern zu können.', - Write_External_Permission: 'Galerie-Zugriff', - Yes: 'Ja', - Yes_action_it: 'Ja, {{action}}!', - Yesterday: 'Gestern', - You_are_in_preview_mode: 'Du befindest dich im Vorschaumodus', - You_are_offline: 'Du bist offline', - You_can_search_using_RegExp_eg: 'Du kannst mit RegExp suchen. z.B. `/ ^ text $ / i`', - You_colon: 'Du: ', - you_were_mentioned: 'Du wurdest erwähnt', - You_were_removed_from_channel: 'Du wurdest aus dem Kanal {{channel}} entfernt', - you: 'du', - You: 'Du', - Logged_out_by_server: 'Du bist vom Server abgemeldet worden. Bitte melde dich wieder an.', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Du benötigst Zugang zu mindestens einem Rocket.Chat-Server um etwas zu teilen.', - You_need_to_verifiy_your_email_address_to_get_notications: 'Du musst deine Email-Adresse bestätigen um Benachrichtigungen zu erhalten.', - Your_certificate: 'Dein Zertifikat', - Your_invite_link_will_expire_after__usesLeft__uses: 'Dein Einladungs-Link wird nach {{usesLeft}} Benutzungen ablaufen.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Dein Einladungs-Link wird am {{date}} oder nach {{usesLeft}} Benutzungen ablaufen.', - Your_invite_link_will_expire_on__date__: 'Dein Einladungs-Link wird am {{date}} ablaufen.', - Your_invite_link_will_never_expire: 'Dein Einladungs-Link wird niemals ablaufen.', - Your_workspace: 'Dein Arbeitsbereich', - Your_password_is: 'Dein Passwort lautet', - Version_no: 'Version: {{version}}', - You_will_not_be_able_to_recover_this_message: 'Du kannst diese Nachricht nicht wiederherstellen!', - You_will_unset_a_certificate_for_this_server: 'Du entfernst ein Zertifikat für diesen Server', - Change_Language: 'Sprache ändern', - Crash_report_disclaimer: 'Wir verfolgen niemals den Inhalt deiner Chats. Der Crash-Report enthält nur für uns relevante Informationen um das Problem zu erkennen und zu beheben.', - Type_message: 'Type message', - Room_search: 'Raum-Suche', - Room_selection: 'Raum-Auswahl 1...9', - Next_room: 'Nächster Raum', - Previous_room: 'Voriger Raum', - New_room: 'Neuer Raum', - Upload_room: 'Zu einem Raum hochladen', - Search_messages: 'Nachrichten durchsuchen', - Scroll_messages: 'Nachrichten durchblättern', - Reply_latest: 'Auf die letzte Nachricht antworten', - Reply_in_Thread: 'Im Thread antworten', - Server_selection: 'Server-Auswahl', - Server_selection_numbers: 'Server-Auswahl 1...9', - Add_server: 'Server hinufügen', - New_line: 'Zeilenumbruch', - You_will_be_logged_out_of_this_application: 'Du wirst in dieser Anwendung vom Server abgemeldet.', - Clear: 'Löschen', - This_will_clear_all_your_offline_data: 'Dies wird deine Offline-Daten löschen.', - This_will_remove_all_data_from_this_server: 'Dies wird alle Daten von diesem Server löschen.', - Mark_unread: 'Als ungelesen markieren', - Wait_activation_warning: 'Bevor du dich anmelden kannst, muss dein Konto durch einen Administrator freigeschaltet werden.', - Screen_lock: 'Zugriffs-Sperre', - Local_authentication_biometry_title: 'Authentifizieren', - Local_authentication_biometry_fallback: 'Sicherheitscode benutzen', - Local_authentication_unlock_option: 'Entsperren mit Sicherheitscode', - Local_authentication_change_passcode: 'Ändere Sicherheitscode', - Local_authentication_info: 'Anmerkung: Wenn du den Sicherheitscode vergisst, musst du diese App löschen und neu installieren.', - Local_authentication_facial_recognition: 'Gesichtserkennung', - Local_authentication_fingerprint: 'Fingerabdruck', - Local_authentication_unlock_with_label: 'Entsperren mit {{label}}', - Local_authentication_auto_lock_60: 'Nach 1 Minute', - Local_authentication_auto_lock_300: 'Nach 5 Minuten', - Local_authentication_auto_lock_900: 'Nach 15 Minuten', - Local_authentication_auto_lock_1800: 'Nach 30 Minuten', - Local_authentication_auto_lock_3600: 'Nach 1 Stunde', - Passcode_enter_title: 'Gib deinen Sicherheitscode ein', - Passcode_choose_title: 'Setze deinen neuen Sicherheitscode', - Passcode_choose_confirm_title: 'Bestätige deinen neuen Sicherheitscode', - Passcode_choose_error: 'Sicherheitscodes stimmen nicht überein. Probiere es noch einmal.', - Passcode_choose_force_set: 'Sicherheitscode wird vom Admin verlangt', - Passcode_app_locked_title: 'App gesperrt', - Passcode_app_locked_subtitle: 'Versuche es in {{timeLeft}} Sekunden noch einmal.', - After_seconds_set_by_admin: 'Nach {{seconds}} Sekunden (durch den Admin gesetzt)', - Dont_activate: 'Jetzt nicht aktivieren', - Queued_chats: 'Chats in der Warteschlange', - Queue_is_empty: 'Warteschlange leer', - Logout_from_other_logged_in_locations: 'Auf anderen angemeldeten Geräte abmelden', - You_will_be_logged_out_from_other_locations: 'Du wirst auf anderen Geräten abgemeldet.', - Logged_out_of_other_clients_successfully: 'Erfolgreich von anderen Geräten abgemeldet.', - Logout_failed: 'Abmeldung fehlgeschlagen!', - Log_analytics_events: 'Analyse-Ereignisse loggen', - E2E_encryption_change_password_title: 'Verschlüsselungs-Passwort ändern', - E2E_encryption_change_password_description: 'Du kannst nun verschlüsselte private Gruppen und Direktnachrichten versenden. Du kannst außerdem deine bestehenden privaten Gruppen und Direktnachrichten auf Verschlüsselung umstellen. \nDies ist Ende-zu-Ende-Verschlüsselung, daher wird der Schlüssel um die Nachrichten zu ver-/entschlüsseln nicht auf dem Server gespeichert. Aus diesem Grund musst du dieses Passwort an einem sicheren Ort speichern, du wirst es auf anderen Geräten benötigen auf denen du E2E-Verschlüsselung nutzen möchtest.', - E2E_encryption_change_password_error: 'Fehler beim Ändern des E2E-Passworts!', - E2E_encryption_change_password_success: 'E2E-Passwort erfolgreich geändert!', - E2E_encryption_change_password_message: 'Stelle sicher, dass du es noch an einer anderen Stelle gesichert hasst.', - E2E_encryption_change_password_confirmation: 'Ja, ändern', - E2E_encryption_reset_title: 'E2E-Schlüssel zurücksetzen', - E2E_encryption_reset_description: 'Diese Option wird deinen aktuellen E2E-Schlüssel entfernen und dich abmelden. \nWenn du dich wieder anmeldest, wird Rocket.Chat einen neuen Schlüssel erzeugen und deinen Zugang zu allen Kanälen mit einer oder mehreren anwesenden Personen wieder herstellen. \nAufgrund der Funktionsweise von E2E-Verschlüsselung, kann Rocket.Chat nicht deinen Zugang zu Kanälen wieder herstellen, in denen keine andere Person anwesend ist.', - E2E_encryption_reset_button: 'E2E-Schlüssel zurücksetzen', - E2E_encryption_reset_error: 'Fehler beim Zurücksetzen des E2E-Schlüssels!', - E2E_encryption_reset_message: 'Du wirst abgemeldet.', - E2E_encryption_reset_confirmation: 'Ja, zurücksetzen', - Following: 'verfolgte', - Threads_displaying_all: 'zeige alle', - Threads_displaying_following: 'zeige gefolgte', - Threads_displaying_unread: 'zeige ungelesene', - No_threads: 'Es gibt keine Threads', - No_threads_following: 'Du folgst keinen Threads', - No_threads_unread: 'Es gibt keine ungelesenen Threads', - Messagebox_Send_to_channel: 'an Kanal senden', - Set_as_leader: 'Zum Diskussionsleiter ernennen', - Set_as_moderator: 'Zum Moderator ernennen', - Set_as_owner: 'Zum Besitzer machen', - Remove_as_leader: 'Als Diskussionsleiter entfernen', - Remove_as_moderator: 'Moderatorenrechte entfernen', - Remove_as_owner: 'Als Eigentümer entfernen', - Remove_from_room: 'Aus dem Raum entfernen', - Ignore: 'Ignorieren', - Unignore: 'Nicht mehr ignorieren', - User_has_been_ignored: 'Benutzer wurde stumm geschaltet', - User_has_been_unignored: 'Benutzer nicht mehr stumm geschaltet', - User_has_been_removed_from_s: 'Benutzer wurde aus {{s}} entfernt', - User__username__is_now_a_leader_of__room_name_: 'Benutzer {{username}} ist nun Diskussionsleiter von {{room_name}}', - User__username__is_now_a_moderator_of__room_name_: 'Benutzer {{username}} ist nun Moderator von {{room_name}}', - User__username__is_now_a_owner_of__room_name_: 'Benutzer {{username}} ist nun Eigentümer von {{room_name}}', - User__username__removed_from__room_name__leaders: 'Benutzer {{username}} als Diskussionsleiter von {{room_name}} entfernt', - User__username__removed_from__room_name__moderators: 'Benutzer {{username}} als Moderator von {{room_name}} entfernt', - User__username__removed_from__room_name__owners: 'Benutzer {{username}} als Eigentümer von {{room_name}} entfernt', - The_user_will_be_removed_from_s: 'Der Benutzer wird aus {{s}} entfernt', - Yes_remove_user: 'Ja, Benutzer entfernen!', - Direct_message: 'Direktnachricht', - Message_Ignored: 'Nachricht ignoriert. Antippen um sie zu zeigen.', - Enter_workspace_URL: 'Arbeitsbereich-URL', - Workspace_URL_Example: 'z.B. https://rocketchat.deine-firma.de' -}; diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json new file mode 100644 index 00000000000..8bdf42d09a8 --- /dev/null +++ b/app/i18n/locales/de.json @@ -0,0 +1,708 @@ +{ + "1_person_reacted": "1 Person hat reagiert", + "1_user": "1 Benutzer", + "error-action-not-allowed": "{{action}} ist nicht erlaubt", + "error-application-not-found": "Anwendung nicht gefunden", + "error-archived-duplicate-name": "Es gibt bereits einen archivierten Kanal mit dem Namen {{room_name}}", + "error-avatar-invalid-url": "Ungültige Avatar-URL: {{url}}", + "error-avatar-url-handling": "Fehler beim Umgang mit der Avatar-Einstellung von einer URL ({{url}}) für {{username}}", + "error-cant-invite-for-direct-room": "Benutzer können nicht zu Räumen eingeladen werden", + "error-could-not-change-email": "E-Mail konnte nicht geändert werden", + "error-could-not-change-name": "Name konnte nicht geändert werden", + "error-could-not-change-username": "Benutzername konnte nicht geändert werden", + "error-could-not-change-status": "Status konnte nicht geändert werden", + "error-delete-protected-role": "Eine geschützte Rolle kann nicht gelöscht werden", + "error-department-not-found": "Abteilung nicht gefunden", + "error-direct-message-file-upload-not-allowed": "Dateifreigabe in direkten Nachrichten nicht zulässig", + "error-duplicate-channel-name": "Ein Kanal mit dem Namen {{channel_name}} ist bereits vorhanden", + "error-email-domain-blacklisted": "Die E-Mail-Domain wird auf die schwarze Liste gesetzt", + "error-email-send-failed": "Fehler beim Versuch, eine E-Mail zu senden: {{message}}", + "error-save-image": "Fehler beim Speichern des Bildes", + "error-save-video": "Fehler beim Speichern des Videos", + "error-field-unavailable": "{{field}} wird bereits verwendet :(", + "error-file-too-large": "Datei ist zu groß", + "error-importer-not-defined": "Der Import wurde nicht korrekt definiert, es fehlt die Importklasse.", + "error-input-is-not-a-valid-field": "{{input}} ist kein gültiges {{field}}", + "error-invalid-actionlink": "Ungültiger Aktionslink", + "error-invalid-arguments": "Ungültige Argumente", + "error-invalid-asset": "Ungültiges Asset", + "error-invalid-channel": "Ungültiger Kanal", + "error-invalid-channel-start-with-chars": "Ungültiger Kanal. Beginne mit @ oder #", + "error-invalid-custom-field": "Ungültiges benutzerdefiniertes Feld", + "error-invalid-custom-field-name": "Ungültiger benutzerdefinierter Feldname. Verwende nur Buchstaben, Zahlen, Bindestriche und Unterstriche.", + "error-invalid-date": "Ungültiges Datum angegeben", + "error-invalid-description": "Ungültige Beschreibung", + "error-invalid-domain": "Ungültige Domain", + "error-invalid-email": "Ungültige E-Mail {{emai}}", + "error-invalid-email-address": "Ungültige E-Mail-Adresse", + "error-invalid-file-height": "Ungültige Dateihöhe", + "error-invalid-file-type": "Ungültiger Dateityp", + "error-invalid-file-width": "Ungültige Dateibreite", + "error-invalid-from-address": "Du hast eine ungültige FROM-Adresse mitgeteilt.", + "error-invalid-integration": "Ungültige Integration", + "error-invalid-message": "Ungültige Nachricht", + "error-invalid-method": "Ungültige Methode", + "error-invalid-name": "Ungültiger Name", + "error-invalid-password": "Ungültiges Passwort", + "error-invalid-redirectUri": "Ungültige Weiterleitung", + "error-invalid-role": "Ungültige Rolle", + "error-invalid-room": "Ungültiger Raum", + "error-invalid-room-name": "{{room_name}} ist kein gültiger Raumname", + "error-invalid-room-type": "{{type}} ist kein gültiger Raumtyp.", + "error-invalid-settings": "Ungültige Einstellungen angegeben", + "error-invalid-subscription": "Ungültiges Abonnement", + "error-invalid-token": "Ungültiges Token", + "error-invalid-triggerWords": "Ungültige TriggerWords", + "error-invalid-urls": "Ungültige URLs", + "error-invalid-user": "Ungültiger Benutzer", + "error-invalid-username": "Ungültiger Benutzername", + "error-invalid-webhook-response": "Die Webhook-URL antwortete mit einem anderen Status als 200", + "error-message-deleting-blocked": "Das Löschen von Nachrichten ist gesperrt", + "error-message-editing-blocked": "Die Bearbeitung von Nachrichten ist gesperrt", + "error-message-size-exceeded": "Die Nachrichtengröße überschreitet Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "Du musst den Link [abbestellen] angeben.", + "error-no-tokens-for-this-user": "Für diesen Benutzer gibt es keine Token", + "error-not-allowed": "Nicht erlaubt", + "error-not-authorized": "Nicht berechtigt", + "error-push-disabled": "Push ist deaktiviert", + "error-remove-last-owner": "Dies ist der letzte Besitzer. Bitte lege einen neuen Besitzer fest, bevor du diesen entfernst.", + "error-role-in-use": "Rolle kann nicht gelöscht werden, da sie gerade verwendet wird", + "error-role-name-required": "Der Rollenname ist erforderlich", + "error-the-field-is-required": "Das Feld {{field}} ist erforderlich.", + "error-too-many-requests": "Fehler, zu viele Anfragen. Du musst {{Sekunden}} Sekunden warten, bevor du es erneut versuchst.", + "error-user-is-not-activated": "Benutzer ist nicht aktiviert", + "error-user-has-no-roles": "Benutzer hat keine Rollen", + "error-user-limit-exceeded": "Die Anzahl der Benutzer, die du zu #channel_name einladen möchtest, überschreitet die vom Administrator festgelegte Grenze", + "error-user-not-in-room": "Benutzer ist nicht in diesem Raum", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "Die Benutzerregistrierung ist deaktiviert", + "error-user-registration-secret": "Die Benutzerregistrierung ist nur über eine geheime URL möglich", + "error-you-are-last-owner": "Du bist der letzte Besitzer. Bitte setze einen neuen Besitzer, bevor du den Raum verlässt.", + "Actions": "Aktionen", + "activity": "Aktivität", + "Activity": "Aktivität", + "Add_Reaction": "Reaktion hinzufügen", + "Add_Server": "Server hinzufügen", + "Add_users": "Benutzer hinzufügen", + "Admin_Panel": "Admin-Panel", + "Agent": "Agent", + "Alert": "Benachrichtigung", + "alert": "Benachrichtigung", + "alerts": "Benachrichtigungen", + "All_users_in_the_channel_can_write_new_messages": "Alle Benutzer im Kanal können neue Nachrichten schreiben", + "A_meaningful_name_for_the_discussion_room": "Ein aussagekräftiger Name für den Diskussionsraum", + "All": "alle", + "All_Messages": "Alle Nachrichten", + "Allow_Reactions": "Reaktionen zulassen", + "Alphabetical": "Alphabetisch", + "and_more": "und mehr", + "and": "und", + "announcement": "Ankündigung", + "Announcement": "Ankündigung", + "Apply_Your_Certificate": "Wende dein Zertifikat an", + "ARCHIVE": "ARCHIV", + "archive": "Archiv", + "are_typing": "tippen", + "Are_you_sure_question_mark": "Bist du sicher?", + "Are_you_sure_you_want_to_leave_the_room": "Möchtest du den Raum wirklich verlassen {{room}}?", + "Audio": "Audio", + "Authenticating": "Authentifizierung", + "Automatic": "Automatisch", + "Auto_Translate": "Automatische Übersetzung", + "Avatar_changed_successfully": "Avatar erfolgreich geändert!", + "Avatar_Url": "Avatar-URL", + "Away": "Abwesend", + "Back": "Zurück", + "Black": "Schwarz", + "Block_user": "Benutzer blockieren", + "Browser": "Browser", + "Broadcast_channel_Description": "Nur autorisierte Benutzer können neue Nachrichten schreiben, die anderen Benutzer können jedoch antworten", + "Broadcast_Channel": "Broadcastkanal", + "Busy": "Beschäftigt", + "By_proceeding_you_are_agreeing": "Indem du fortfährst, stimmst du zu unserem", + "Cancel_editing": "Bearbeitung abbrechen", + "Cancel_recording": "Aufnahme abbrechen", + "Cancel": "Abbrechen", + "changing_avatar": "Avatar wechseln", + "creating_channel": "Kanal erstellen", + "creating_invite": "Einladung erstellen", + "Channel_Name": "Kanal Name", + "Channels": "Kanäle", + "Chats": "Chats", + "Call_already_ended": "Anruf bereits beendet!", + "Clear_cookies_alert": "Möchtest du alle Cookies löschen?", + "Clear_cookies_desc": "Diese Aktion wird alle Login-Cookies löschen und erlaubt es dir, dich mit einem anderen Konto anzumelden.", + "Clear_cookies_yes": "Ja, Cookies löschen", + "Clear_cookies_no": "Nein, Cookies behalten", + "Click_to_join": "Klicken um teilzunehmen!", + "Close": "Schließen", + "Close_emoji_selector": "Schließe die Emoji-Auswahl", + "Closing_chat": "Chat schließen", + "Change_language_loading": "Ändere Sprache.", + "Chat_closed_by_agent": "Chat durch den Agenten geschlossen", + "Choose": "Wählen", + "Choose_from_library": "Aus der Bibliothek auswählen", + "Choose_file": "Datei auswählen", + "Choose_where_you_want_links_be_opened": "Entscheide, wie Links geöffnet werden sollen", + "Code": "Code", + "Code_or_password_invalid": "Code oder Passwort sind falsch", + "Collaborative": "Kollaborativ", + "Confirm": "Bestätigen", + "Connect": "Verbinden", + "Connected": "Verbunden", + "connecting_server": "verbinde zum Server", + "Connecting": "Verbinden ...", + "Contact_us": "Kontaktiere uns", + "Contact_your_server_admin": "Kontaktiere deinen Server-Administrator.", + "Continue_with": "Weitermachen mit", + "Copied_to_clipboard": "In die Zwischenablage kopiert!", + "Copy": "Kopieren", + "Conversation": "Konversationen", + "Permalink": "Permalink", + "Certificate_password": "Zertifikats-Passwort", + "Clear_cache": "Lokalen Server-Cache leeren", + "Clear_cache_loading": "Leere Cache.", + "Whats_the_password_for_your_certificate": "Wie lautet das Passwort für dein Zertifikat?", + "Create_account": "Ein Konto erstellen", + "Create_Channel": "Kanal erstellen", + "Create_Direct_Messages": "Direkt-Nachricht erstellen", + "Create_Discussion": "Diskussion erstellen", + "Created_snippet": "Erstellt ein Snippet", + "Create_a_new_workspace": "Erstelle einen neuen Arbeitsbereich", + "Create": "Erstellen", + "Custom_Status": "eigener Status", + "Dark": "Dunkel", + "Dark_level": "Dunkelstufe", + "Default": "Standard", + "Default_browser": "Standard-Browser", + "Delete_Room_Warning": "Durch das Löschen eines Raums werden alle Nachrichten gelöscht, die im Raum gepostet wurden. Das kann nicht rückgängig gemacht werden.", + "Department": "Abteilung", + "delete": "löschen", + "Delete": "Löschen", + "DELETE": "LÖSCHEN", + "deleting_room": "lösche Raum", + "description": "Beschreibung", + "Description": "Beschreibung", + "Desktop_Options": "Desktop-Einstellungen", + "Desktop_Notifications": "Desktop-Benachrichtigungen", + "Directory": "Verzeichnis", + "Direct_Messages": "Direkte Nachrichten", + "Disable_notifications": "Benachrichtigungen deaktiveren", + "Discussions": "Diskussionen", + "Discussion_Desc": "Hilft dir die Übersicht zu behalten! Durch das Erstellen einer Diskussion wird ein Unter-Kanal im ausgewählten Raum erzeugt und beide verknüpft.", + "Discussion_name": "Diskussions-Name", + "Done": "Erledigt", + "Dont_Have_An_Account": "Du hast noch kein Konto?", + "Do_you_have_an_account": "Du hast schon ein Konto?", + "Do_you_have_a_certificate": "Hast du ein Zertifikat?", + "Do_you_really_want_to_key_this_room_question_mark": "Möchtest du diesen Raum wirklich {{key}}?", + "E2E_Encryption": "E2E-Verschlüsselung", + "E2E_How_It_Works_info1": "Du kannst nun verschlüsselte private Gruppen und Direktnachrichten versenden. Du kannst außerdem deine bestehenden privaten Gruppen und Direktnachrichten auf Verschlüsselung umstellen.", + "E2E_How_It_Works_info2": "Dies ist *Ende-zu-Ende-Verschlüsselung*, daher wird der Schlüssel um die Nachrichten zu ver-/entschlüsseln nicht auf dem Server gespeichert. Aus diesem Grund musst du dieses Passwort an einem sicheren Ort speichern, so dass du später bei Bedarf darauf zugreifen kannst.", + "E2E_How_It_Works_info3": "Wenn du fortfährst, wird automatisch ein ein E2E-Passwort erzeugt.", + "E2E_How_It_Works_info4": "Du kannst außerdem jederzeit, in jedem Browser, in dem du das bestehende Passwort eingegeben hast, ein neues Passwort setzen.", + "edit": "bearbeiten", + "edited": "bearbeitet", + "Edit": "Bearbeiten", + "Edit_Status": "Status ändern", + "Edit_Invite": "Einladung bearbeiten", + "End_to_end_encrypted_room": "Ende-zu-Ende-verschlüsselter Raum", + "end_to_end_encryption": "Nicht mehr Ende-zu-Ende-verschlüsseln", + "Email_Notification_Mode_All": "Jede Erwähnung/Direktnachricht", + "Email_Notification_Mode_Disabled": "Deaktiviert", + "Email_or_password_field_is_empty": "Das E-Mail- oder Passwortfeld ist leer", + "Email": "E-mail", + "email": "E-mail", + "Empty_title": "leerer Titel", + "Enable_Auto_Translate": "Automatische Übersetzung aktivieren", + "Enable_notifications": "Benachrichtigungen aktivieren", + "Encrypted": "Verschlüsselt", + "Encrypted_message": "Verschlüsselte Nachricht", + "Enter_Your_E2E_Password": "Gib dein Ende-zu-Ende-Passwort ein", + "Enter_Your_Encryption_Password_desc1": "Das erlaubt dir auf deine verschlüsselten privaten Gruppen und Direktnachrichten zuzugreifen.", + "Enter_Your_Encryption_Password_desc2": "Du musst das Passwort zur Ver-/Entschlüsselung an jeder Stelle eingeben, an dem du diesen Chat verwendest.", + "Encryption_error_title": "Dein Verschlüsselungs-Passwort scheint falsch zu sein", + "Encryption_error_desc": "Es war nicht möglich deinen Verschlüsselungs-Key zu importieren.", + "Everyone_can_access_this_channel": "Jeder kann auf diesen Kanal zugreifen", + "Error_uploading": "Fehler beim Hochladen", + "Expiration_Days": "läuft ab (Tage)", + "Favorite": "Favorisieren", + "Favorites": "Favoriten", + "Files": "Dateien", + "File_description": "Dateibeschreibung", + "File_name": "Dateiname", + "Finish_recording": "Beende die Aufnahme", + "Following_thread": "Thread folgen", + "For_your_security_you_must_enter_your_current_password_to_continue": "Zu deiner Sicherheit musst du dein aktuelles Passwort eingeben, um fortzufahren", + "Forgot_password_If_this_email_is_registered": "Wenn diese E-Mail registriert ist, senden wir Anweisungen zum Zurücksetzen deines Passworts. Wenn du nicht in Kürze keine E-Mail erhältst, versuche es bitte erneut.", + "Forgot_password": "Passwort vergessen", + "Forgot_Password": "Passwort vergessen", + "Forward": "Weiterleiten", + "Forward_Chat": "Chat weiterleiten", + "Forward_to_department": "Weiterleiten an Abteilung", + "Forward_to_user": "Weiterleiten an Benutzer", + "Full_table": "Klicken um die ganze Tabelle anzuzeigen", + "Generate_New_Link": "Neuen Link erstellen", + "Group_by_favorites": "Nach Favoriten gruppieren", + "Group_by_type": "Gruppieren nach Typ", + "Hide": "Ausblenden", + "Has_joined_the_channel": "Ist dem Kanal beigetreten", + "Has_joined_the_conversation": "Hat sich dem Gespräch angeschlossen", + "Has_left_the_channel": "Hat den Kanal verlassen", + "Hide_System_Messages": "Systemnachrichten verstecken", + "Hide_type_messages": "Verstecke \"{{type}}\"-Nachrichten", + "How_It_Works": "Wie es funktioniert", + "Message_HideType_uj": "Benutzer beigetreten", + "Message_HideType_ul": "Benutzer verlassen", + "Message_HideType_ru": "Benutzer entfernt", + "Message_HideType_au": "Benutzer hinzugefügt", + "Message_HideType_mute_unmute": "Benutzer stummgeschaltet / freigegeben", + "Message_HideType_r": "Raumname geändert", + "Message_HideType_ut": "Benutzer ist der Unterhaltung beigetreten", + "Message_HideType_wm": "Willkommen", + "Message_HideType_rm": "Nachricht entfernt", + "Message_HideType_subscription_role_added": "Rolle wurde gesetzt", + "Message_HideType_subscription_role_removed": "Rolle nicht länger definiert", + "Message_HideType_room_archived": "Raum archiviert", + "Message_HideType_room_unarchived": "Raum nicht mehr archiviert", + "I_Saved_My_E2E_Password": "Ich habe mein Ende-zu-Ende-Passwort gesichert", + "IP": "IP", + "In_app": "In-App-Browser", + "In_App_And_Desktop": "In-app und Desktop", + "In_App_and_Desktop_Alert_info": "Zeigt ein Banner oben am Bildschirm, wenn die App geöffnet ist und eine Benachrichtigung auf dem Desktop.", + "Invisible": "Unsichtbar", + "Invite": "Einladen", + "is_a_valid_RocketChat_instance": "ist eine gültige Rocket.Chat-Instanz", + "is_not_a_valid_RocketChat_instance": "ist keine gültige Rocket.Chat-Instanz", + "is_typing": "schreibt", + "Invalid_or_expired_invite_token": "Ungültiger oder abgelaufener Einladungscode", + "Invalid_server_version": "Der Server, zu dem du dich verbinden möchtest, verwendet eine Version, die von der App nicht mehr unterstützt wird: {{currentVersion}}.\n\nWir benötigen Version {{MinVersion}}.", + "Invite_Link": "Einladungs-Link", + "Invite_users": "Benutzer einladen", + "Join": "Beitreten", + "Join_Code": "Beitrittscode", + "Insert_Join_Code": "Beitrittscode eingeben", + "Join_our_open_workspace": "Tritt unserem offenen Arbeitsbereich bei", + "Join_your_workspace": "Tritt deinem Arbeitsbereich bei", + "Just_invited_people_can_access_this_channel": "Nur eingeladene Personen können auf diesen Kanal zugreifen", + "Language": "Sprache", + "last_message": "letzte Nachricht", + "Leave_channel": "Kanal verlassen", + "leaving_room": "Raum verlassen", + "leave": "verlassen", + "Legal": "Rechtliches", + "Light": "Hell", + "License": "Lizenz", + "Livechat": "Live-Chat", + "Livechat_edit": "Livechat bearbeiten", + "Login": "Anmeldung", + "Login_error": "Deine Zugangsdaten wurden abgelehnt! Bitte versuche es erneut.", + "Login_with": "Einloggen mit", + "Logging_out": "Abmelden.", + "Logout": "Abmelden", + "Max_number_of_uses": "Maximale Anzahl der Benutzungen", + "Max_number_of_users_allowed_is_number": "Maximale Anzahl von erlaubten Benutzern ist {{maxUsers}}", + "members": "Mitglieder", + "Members": "Mitglieder", + "Mentioned_Messages": "Erwähnte Nachrichten", + "mentioned": "erwähnt", + "Mentions": "Erwähnungen", + "Message_accessibility": "Nachricht von {{user}} um {{time}}: {{message}}", + "Message_actions": "Nachrichtenaktionen", + "Message_pinned": "Eine Nachricht wurde angeheftet", + "Message_removed": "Nachricht entfernt", + "Message_starred": "Nachricht favorisiert", + "Message_unstarred": "Nachricht nicht mehr favorisiert", + "message": "Nachricht", + "messages": "Nachrichten", + "Message": "Nachricht", + "Messages": "Mitteilungen", + "Message_Reported": "Nachricht gemeldet", + "Microphone_Permission_Message": "Rocket.Chat benötigt Zugriff auf das Mikrofon, damit du eine Audionachricht senden kannst.", + "Microphone_Permission": "Mikrofonberechtigung", + "Mute": "Diesem Benutzer das Chatten verbieten", + "muted": "stummgeschaltet", + "My_servers": "Meine Server", + "N_people_reacted": "{{n}} Leute haben reagiert", + "N_users": "{{n}} Benutzer", + "name": "Name", + "Name": "Name", + "Navigation_history": "Navigations-Verlauf", + "Never": "Niemals", + "New_Message": "Neue Nachricht", + "New_Password": "Neues Kennwort", + "New_Server": "Neuer Server", + "Next": "Nächster", + "No_files": "Keine Dateien", + "No_limit": "Kein Limit", + "No_mentioned_messages": "Keine Nachrichten mit Erwähnungen", + "No_pinned_messages": "Keine angehefteten Nachrichten", + "No_results_found": "Keine Ergebnisse gefunden", + "No_starred_messages": "Keine markierten Nachrichten", + "No_thread_messages": "Keine Threadnachrichten", + "No_label_provided": "Kein(e) {{label}} gesetzt.", + "No_Message": "Keine Nachricht", + "No_messages_yet": "Noch keine Nachrichten", + "No_Reactions": "Keine Reaktionen", + "No_Read_Receipts": "Keine Lesebestätigungen", + "Not_logged": "Nicht protokolliert", + "Not_RC_Server": "Dies ist kein Rocket.Chat-Server.\n{{contact}}", + "Nothing": "Nichts", + "Nothing_to_save": "Nichts zu speichern!", + "Notify_active_in_this_room": "Aktive Benutzer in diesem Raum benachrichtigen", + "Notify_all_in_this_room": "Benachrichtige alle in diesem Raum", + "Notifications": "Benachrichtigungen", + "Notification_Duration": "Benachrichtigungsdauer", + "Notification_Preferences": "Benachrichtigungseinstellungen", + "No_available_agents_to_transfer": "Keine Agenten für den Transfer verfügbar", + "Offline": "Offline", + "Oops": "Hoppla!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Offene Chats", + "Omnichannel_enable_alert": "Du bist in Omnichannel nicht verfügbar. Möchtest du erreichbar sein?", + "Onboarding_description": "Ein Arbeitsbereich ist der Ort für die Zusammenarbeit deines Teams oder Organisation. Bitte den Admin des Arbeitsbereichs um eine Adresse, um ihm beizutreten, oder erstelle einen Arbeitsbereich für dein Team.", + "Onboarding_join_workspace": "Tritt einem Arbeitsbereich bei", + "Onboarding_subtitle": "Mehr als Team-Zusammenarbeit", + "Onboarding_title": "Willkommen bei Rocket.Chat", + "Onboarding_join_open_description": "Tritt unserem Arbeitsbereich bei um mit dem Rocket.Chat-Team oder der Gemeinschaft zu chatten.", + "Onboarding_agree_terms": "Durch fortfahren stimmst du Rocket.Chats Bedingungen zu", + "Onboarding_less_options": "Weniger Optionen", + "Onboarding_more_options": "Mehr Optionen", + "Online": "Online", + "Only_authorized_users_can_write_new_messages": "Nur autorisierte Benutzer können neue Nachrichten schreiben", + "Open_emoji_selector": "Öffne die Emoji-Auswahl", + "Open_Source_Communication": "Open-Source-Kommunikation", + "Open_your_authentication_app_and_enter_the_code": "Öffne deine Authentifizierungsanwendung und gib den Code ein.", + "OR": "ODER", + "OS": "OS", + "Overwrites_the_server_configuration_and_use_room_config": "Übergeht die Servereinstellungen und nutzt Einstellung für den Raum", + "Password": "Passwort", + "Parent_channel_or_group": "Übergeordneter Kanal oder Gruppe", + "Permalink_copied_to_clipboard": "Permalink in die Zwischenablage kopiert!", + "Phone": "Telefon", + "Pin": "Anheften", + "Pinned_Messages": "Angeheftete Nachrichten", + "pinned": "angeheftet", + "Pinned": "Angeheftet", + "Please_add_a_comment": "Bitte Kommentar hinzufügen", + "Please_enter_your_password": "Gib bitte dein Passwort ein", + "Please_wait": "Bitte warten.", + "Preferences": "Einstellungen", + "Preferences_saved": "Einstellungen gespeichert!", + "Privacy_Policy": " Datenschutzbestimmungen", + "Private_Channel": "Privater Kanal", + "Private_Groups": "Private Gruppen", + "Private": "Privat", + "Processing": "Bearbeite …", + "Profile_saved_successfully": "Profil erfolgreich gespeichert!", + "Profile": "Profil", + "Public_Channel": "Öffentlicher Kanal", + "Public": "Öffentlich", + "Push_Notifications": "Push-Benachrichtigungen", + "Push_Notifications_Alert_Info": "Diese Benachrichtigungen werden dir zugestellt, wenn die App nicht geöffnet ist.", + "Desktop_Alert_info": "Diese Benachrichtigungen werden auf dem Desktop angezeigt", + "Quote": "Zitat", + "Reactions_are_disabled": "Reaktionen sind deaktiviert", + "Reactions_are_enabled": "Reaktionen sind aktiviert", + "Reactions": "Reaktionen", + "Read": "Gelesen", + "Read_External_Permission_Message": "Rocket.Chat benötigt Zugriff auf deine Fotos, Medien und Dateien auf deinem Gerät", + "Read_External_Permission": "Lese-Zugriff auf Medien", + "Read_Only_Channel": "Nur-Lese-Kanal", + "Read_Only": "Schreibgeschützt", + "Read_Receipt": "Lesebestätigung", + "Receive_Group_Mentions": "Erhalte Gruppen-Benachrichtigungen", + "Receive_Group_Mentions_Info": "Empfange @all und @here Erwähnungen", + "Register": "Registrieren", + "Repeat_Password": "Wiederhole das Passwort", + "Replied_on": "Antwortete am:", + "replies": "Antworten", + "reply": "Antworten", + "Reply": "Antworten", + "Report": "Melden", + "Receive_Notification": "Erhalte Benachrichtigungen", + "Receive_notifications_from": "Erhalte Benachrichtigungen von {{name}}", + "Resend": "Erneut senden", + "Reset_password": "Passwort zurücksetzen", + "resetting_password": "Passwort zurücksetzen", + "RESET": "ZURÜCKSETZEN", + "Return": "Zurück", + "Review_app_title": "Gefällt dir diese App?", + "Review_app_desc": "Gib uns 5 Sterne im {{store}}", + "Review_app_yes": "Sicher!", + "Review_app_no": "Nein", + "Review_app_later": "Vielleicht später", + "Review_app_unable_store": "Kann {{store}} nicht öffnen", + "Review_this_app": "App bewerten", + "Remove": "Entfernen", + "Roles": "Rollen", + "Room_actions": "Raumaktionen", + "Room_changed_announcement": "Raumansage geändert in: {{announcement}} von {{userBy}}", + "Room_changed_avatar": "Raum-Avatar durch Nutzer {{userBy}} gändert", + "Room_changed_description": "Raumbeschreibung geändert in: {{description}} von {{userBy}}", + "Room_changed_privacy": "Raumtyp geändert in: {{type}} von {{userBy}}", + "Room_changed_topic": "Raumthema geändert in: {{topic}} von {{userBy}}", + "Room_Files": "Raumdateien", + "Room_Info_Edit": "Rauminfo bearbeiten", + "Room_Info": "Rauminfo", + "Room_Members": "Raum-Mitglieder", + "Room_name_changed": "Raumname geändert in {{name}} von {{userBy}}", + "SAVE": "SPEICHERN", + "Save_Changes": "Änderungen speichern", + "Save": "speichern", + "Saved": "gespeichert", + "saving_preferences": "Präferenzen speichern", + "saving_profile": "Profil speichern", + "saving_settings": "Einstellungen speichern", + "saved_to_gallery": "Gespeichert in der Galerie", + "Save_Your_E2E_Password": "Speichere dein Ende-zu-Ende-Passwort", + "Save_Your_Encryption_Password": "Speichere dein Verschlüsselungs-Passwort", + "Save_Your_Encryption_Password_warning": "Dieses Passwort wird nirgends gespeichert, stelle daher sicher, dass du es an einem sicheren Ort aufbewahrst.", + "Save_Your_Encryption_Password_info": "Hinweis: Wenn du dieses Passwort verlierst, gibt es keine Möglichkeit es wieder herzustellen und du wirst nicht mehr auf deine Nachrichten zugreifen können.", + "Search_Messages": "Nachrichten suchen", + "Search": "Suche", + "Search_by": "Suche nach", + "Search_global_users": "Suche nach globalen Benutzern", + "Search_global_users_description": "Wenn aktiviert, kannst du nach Benutzern von anderen Unternehmen oder Servern suchen.", + "Seconds": "{{second}} Sekunden", + "Security_and_privacy": "Sicherheit und Datenschutz", + "Select_Avatar": "Wähle einen Avatar aus", + "Select_Server": "Server auswählen", + "Select_Users": "Benutzer auswählen", + "Select_a_Channel": "Kanal auswählen", + "Select_a_Department": "Abteilung auswählen", + "Select_an_option": "Option auswählen", + "Select_a_User": "Benutzer auswählen", + "Send": "Senden", + "Send_audio_message": "Audio-Nachricht senden", + "Send_crash_report": "Absturzbericht senden", + "Send_message": "Nachricht senden", + "Send_me_the_code_again": "Den Code neu versenden", + "Send_to": "Senden an …", + "Sending_to": "Sende an", + "Sent_an_attachment": "Sende einen Anhang", + "Server": "Server", + "Servers": "Server", + "Server_version": "Server version: {{version}}", + "Set_username_subtitle": "Der Benutzername wird verwendet, damit andere Personen dich in Nachrichten erwähnen können", + "Set_custom_status": "Individuellen Status setzen", + "Set_status": "Status setzen", + "Status_saved_successfully": "Status erfolgreich gesetzt!", + "Settings": "Einstellungen", + "Settings_succesfully_changed": "Einstellungen erfolgreich geändert!", + "Share": "Teilen", + "Share_Link": "Link teilen", + "Share_this_app": "App teilen", + "Show_more": "Mehr anzeigen …", + "Show_Unread_Counter": "Zähler anzeigen", + "Show_Unread_Counter_Info": "Anzahl der ungelesenen Nachrichten anzeigen", + "Sign_in_your_server": "Melde dich bei deinem Server an", + "Sign_Up": "Anmelden", + "Some_field_is_invalid_or_empty": "Ein Feld ist ungültig oder leer", + "Sorting_by": "Sortierung nach {{key}}", + "Sound": "Ton", + "Star_room": "Favorisierter Raum", + "Star": "Favoriten", + "Starred_Messages": "Favorisierte Nachrichten", + "starred": "favorisiert", + "Starred": "Favorisiert", + "Start_of_conversation": "Beginn des Gesprächs", + "Start_a_Discussion": "Beginne eine Diskussion", + "Started_discussion": "Hat eine Diskussion gestartet:", + "Started_call": "Anruf gestartet von {{userBy}}", + "Submit": "einreichen", + "Table": "Tabelle", + "Tags": "Tags", + "Take_a_photo": "Foto aufnehmen", + "Take_a_video": "Video aufnehmen", + "Take_it": "Annehmen!", + "tap_to_change_status": "Tippen um den Status zu ändern", + "Tap_to_view_servers_list": "Hier tippen, um die Serverliste anzuzeigen", + "Terms_of_Service": " Nutzungsbedingungen", + "Theme": "Erscheinungsbild", + "The_user_wont_be_able_to_type_in_roomName": "Dem Nutzer wird es nicht möglich sein in {{roomName}} zu schreiben", + "The_user_will_be_able_to_type_in_roomName": "Der Nutzer wird in {{roomName}} schreiben können", + "There_was_an_error_while_action": "Während {{action}} ist ein Fehler aufgetreten!", + "This_room_is_blocked": "Dieser Raum ist gesperrt", + "This_room_is_read_only": "Dieser Raum kann nur gelesen werden", + "Thread": "Thread", + "Threads": "Threads", + "Timezone": "Zeitzone", + "To": "An", + "topic": "Thema", + "Topic": "Thema", + "Translate": "Übersetzen", + "Try_again": "Versuche es nochmal", + "Two_Factor_Authentication": "Zwei-Faktor-Authentifizierung", + "Type_the_channel_name_here": "Gib hier den Kanalnamen ein", + "unarchive": "wiederherstellen", + "UNARCHIVE": "WIEDERHERSTELLEN", + "Unblock_user": "Benutzer entsperren", + "Unfavorite": "Nicht mehr favorisieren", + "Unfollowed_thread": "Thread nicht mehr folgen", + "Unmute": "Stummschaltung aufheben", + "unmuted": "Stummschaltung aufgehoben", + "Unpin": "Nachricht nicht mehr anheften", + "unread_messages": "ungelesene", + "Unread": "ungelesene", + "Unread_on_top": "Ungelesene oben", + "Unstar": "von Favoriten entfernen", + "Updating": "Aktualisierung …", + "Uploading": "Hochladen", + "Upload_file_question_mark": "Datei hochladen?", + "User": "Benutzer", + "Users": "Benutzer", + "User_added_by": "Benutzer {{userAdded}} hinzugefügt von {{userBy}}", + "User_Info": "Benutzerinfo", + "User_has_been_key": "Benutzer wurde {{key}}", + "User_is_no_longer_role_by_": "{{user}} ist nicht länger {{role}} von {{userBy}}", + "User_muted_by": "Benutzer {{userMuted}} von {{userBy}} stummgeschaltet", + "User_removed_by": "Benutzer {{userRemoved}} wurde von {{userBy}} entfernt", + "User_sent_an_attachment": "{{user}}: eine Datei gesendet", + "User_unmuted_by": "Benutzer {{userUnmuted}} nicht stummgeschaltet von {{userBy}}", + "User_was_set_role_by_": "{{user}} wurde von {{userBy}} {{role}} festgelegt.", + "Username_is_empty": "Der Benutzername ist leer", + "Username": "Benutzername", + "Username_or_email": "Benutzername oder E-Mail-Adresse", + "Uses_server_configuration": "Nutzt Servereinstellungen", + "Validating": "Validierung", + "Registration_Succeeded": "Registrierung erfolgreich!", + "Verify": "Überprüfen", + "Verify_email_title": "Registrierung erfolgreich!", + "Verify_email_desc": "Wir haben dir eine Email geschickt um deine Anmeldung zu bestätigen. Wenn du keine Email erhältst, komme bitte wieder und versuche es noch einmal.", + "Verify_your_email_for_the_code_we_sent": "Prüfe deine Mails für den Code, den wir dir eben geschickt haben.", + "Video_call": "Videoanruf", + "View_Original": "Original anzeigen", + "Voice_call": "Sprachanruf", + "Waiting_for_network": "Warte auf das Netzwerk …", + "Websocket_disabled": "Websockets sind auf diesem Server nicht aktiviert.\n{{contact}}", + "Welcome": "Herzlich willkommen", + "What_are_you_doing_right_now": "Was machst du gerade?", + "Whats_your_2fa": "Wie lautet dein 2FA-Code?", + "Without_Servers": "Ohne Server", + "Workspaces": "Arbeitsbereiche", + "Would_you_like_to_return_the_inquiry": "Willst du zur Anfrage zurück?", + "Write_External_Permission_Message": "Rocket.Chat benötigt Zugriff auf deine Galerie um Bilder speichern zu können.", + "Write_External_Permission": "Galerie-Zugriff", + "Yes": "Ja", + "Yes_action_it": "Ja, {{action}}!", + "Yesterday": "Gestern", + "You_are_in_preview_mode": "Du befindest dich im Vorschaumodus", + "You_are_offline": "Du bist offline", + "You_can_search_using_RegExp_eg": "Du kannst mit RegExp suchen. z.B. `/ ^ text $ / i`", + "You_colon": "Du: ", + "you_were_mentioned": "Du wurdest erwähnt", + "You_were_removed_from_channel": "Du wurdest aus dem Kanal {{channel}} entfernt", + "you": "du", + "You": "Du", + "Logged_out_by_server": "Du bist vom Server abgemeldet worden. Bitte melde dich wieder an.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Du benötigst Zugang zu mindestens einem Rocket.Chat-Server um etwas zu teilen.", + "You_need_to_verifiy_your_email_address_to_get_notications": "Du musst deine Email-Adresse bestätigen um Benachrichtigungen zu erhalten.", + "Your_certificate": "Dein Zertifikat", + "Your_invite_link_will_expire_after__usesLeft__uses": "Dein Einladungs-Link wird nach {{usesLeft}} Benutzungen ablaufen.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Dein Einladungs-Link wird am {{date}} oder nach {{usesLeft}} Benutzungen ablaufen.", + "Your_invite_link_will_expire_on__date__": "Dein Einladungs-Link wird am {{date}} ablaufen.", + "Your_invite_link_will_never_expire": "Dein Einladungs-Link wird niemals ablaufen.", + "Your_workspace": "Dein Arbeitsbereich", + "Your_password_is": "Dein Passwort lautet", + "Version_no": "Version: {{version}}", + "You_will_not_be_able_to_recover_this_message": "Du kannst diese Nachricht nicht wiederherstellen!", + "You_will_unset_a_certificate_for_this_server": "Du entfernst ein Zertifikat für diesen Server", + "Change_Language": "Sprache ändern", + "Crash_report_disclaimer": "Wir verfolgen niemals den Inhalt deiner Chats. Der Crash-Report enthält nur für uns relevante Informationen um das Problem zu erkennen und zu beheben.", + "Type_message": "Type message", + "Room_search": "Raum-Suche", + "Room_selection": "Raum-Auswahl 1...9", + "Next_room": "Nächster Raum", + "Previous_room": "Voriger Raum", + "New_room": "Neuer Raum", + "Upload_room": "Zu einem Raum hochladen", + "Search_messages": "Nachrichten durchsuchen", + "Scroll_messages": "Nachrichten durchblättern", + "Reply_latest": "Auf die letzte Nachricht antworten", + "Reply_in_Thread": "Im Thread antworten", + "Server_selection": "Server-Auswahl", + "Server_selection_numbers": "Server-Auswahl 1...9", + "Add_server": "Server hinufügen", + "New_line": "Zeilenumbruch", + "You_will_be_logged_out_of_this_application": "Du wirst in dieser Anwendung vom Server abgemeldet.", + "Clear": "Löschen", + "This_will_clear_all_your_offline_data": "Dies wird deine Offline-Daten löschen.", + "This_will_remove_all_data_from_this_server": "Dies wird alle Daten von diesem Server löschen.", + "Mark_unread": "Als ungelesen markieren", + "Wait_activation_warning": "Bevor du dich anmelden kannst, muss dein Konto durch einen Administrator freigeschaltet werden.", + "Screen_lock": "Zugriffs-Sperre", + "Local_authentication_biometry_title": "Authentifizieren", + "Local_authentication_biometry_fallback": "Sicherheitscode benutzen", + "Local_authentication_unlock_option": "Entsperren mit Sicherheitscode", + "Local_authentication_change_passcode": "Ändere Sicherheitscode", + "Local_authentication_info": "Anmerkung: Wenn du den Sicherheitscode vergisst, musst du diese App löschen und neu installieren.", + "Local_authentication_facial_recognition": "Gesichtserkennung", + "Local_authentication_fingerprint": "Fingerabdruck", + "Local_authentication_unlock_with_label": "Entsperren mit {{label}}", + "Local_authentication_auto_lock_60": "Nach 1 Minute", + "Local_authentication_auto_lock_300": "Nach 5 Minuten", + "Local_authentication_auto_lock_900": "Nach 15 Minuten", + "Local_authentication_auto_lock_1800": "Nach 30 Minuten", + "Local_authentication_auto_lock_3600": "Nach 1 Stunde", + "Passcode_enter_title": "Gib deinen Sicherheitscode ein", + "Passcode_choose_title": "Setze deinen neuen Sicherheitscode", + "Passcode_choose_confirm_title": "Bestätige deinen neuen Sicherheitscode", + "Passcode_choose_error": "Sicherheitscodes stimmen nicht überein. Probiere es noch einmal.", + "Passcode_choose_force_set": "Sicherheitscode wird vom Admin verlangt", + "Passcode_app_locked_title": "App gesperrt", + "Passcode_app_locked_subtitle": "Versuche es in {{timeLeft}} Sekunden noch einmal.", + "After_seconds_set_by_admin": "Nach {{seconds}} Sekunden (durch den Admin gesetzt)", + "Dont_activate": "Jetzt nicht aktivieren", + "Queued_chats": "Chats in der Warteschlange", + "Queue_is_empty": "Warteschlange leer", + "Logout_from_other_logged_in_locations": "Auf anderen angemeldeten Geräte abmelden", + "You_will_be_logged_out_from_other_locations": "Du wirst auf anderen Geräten abgemeldet.", + "Logged_out_of_other_clients_successfully": "Erfolgreich von anderen Geräten abgemeldet.", + "Logout_failed": "Abmeldung fehlgeschlagen!", + "Log_analytics_events": "Analyse-Ereignisse loggen", + "E2E_encryption_change_password_title": "Verschlüsselungs-Passwort ändern", + "E2E_encryption_change_password_description": "Du kannst nun verschlüsselte private Gruppen und Direktnachrichten versenden. Du kannst außerdem deine bestehenden privaten Gruppen und Direktnachrichten auf Verschlüsselung umstellen. \nDies ist Ende-zu-Ende-Verschlüsselung, daher wird der Schlüssel um die Nachrichten zu ver-/entschlüsseln nicht auf dem Server gespeichert. Aus diesem Grund musst du dieses Passwort an einem sicheren Ort speichern, du wirst es auf anderen Geräten benötigen auf denen du E2E-Verschlüsselung nutzen möchtest.", + "E2E_encryption_change_password_error": "Fehler beim Ändern des E2E-Passworts!", + "E2E_encryption_change_password_success": "E2E-Passwort erfolgreich geändert!", + "E2E_encryption_change_password_message": "Stelle sicher, dass du es noch an einer anderen Stelle gesichert hasst.", + "E2E_encryption_change_password_confirmation": "Ja, ändern", + "E2E_encryption_reset_title": "E2E-Schlüssel zurücksetzen", + "E2E_encryption_reset_description": "Diese Option wird deinen aktuellen E2E-Schlüssel entfernen und dich abmelden. \nWenn du dich wieder anmeldest, wird Rocket.Chat einen neuen Schlüssel erzeugen und deinen Zugang zu allen Kanälen mit einer oder mehreren anwesenden Personen wieder herstellen. \nAufgrund der Funktionsweise von E2E-Verschlüsselung, kann Rocket.Chat nicht deinen Zugang zu Kanälen wieder herstellen, in denen keine andere Person anwesend ist.", + "E2E_encryption_reset_button": "E2E-Schlüssel zurücksetzen", + "E2E_encryption_reset_error": "Fehler beim Zurücksetzen des E2E-Schlüssels!", + "E2E_encryption_reset_message": "Du wirst abgemeldet.", + "E2E_encryption_reset_confirmation": "Ja, zurücksetzen", + "Following": "verfolgte", + "Threads_displaying_all": "zeige alle", + "Threads_displaying_following": "zeige gefolgte", + "Threads_displaying_unread": "zeige ungelesene", + "No_threads": "Es gibt keine Threads", + "No_threads_following": "Du folgst keinen Threads", + "No_threads_unread": "Es gibt keine ungelesenen Threads", + "Messagebox_Send_to_channel": "an Kanal senden", + "Set_as_leader": "Zum Diskussionsleiter ernennen", + "Set_as_moderator": "Zum Moderator ernennen", + "Set_as_owner": "Zum Besitzer machen", + "Remove_as_leader": "Als Diskussionsleiter entfernen", + "Remove_as_moderator": "Moderatorenrechte entfernen", + "Remove_as_owner": "Als Eigentümer entfernen", + "Remove_from_room": "Aus dem Raum entfernen", + "Ignore": "Ignorieren", + "Unignore": "Nicht mehr ignorieren", + "User_has_been_ignored": "Benutzer wurde stumm geschaltet", + "User_has_been_unignored": "Benutzer nicht mehr stumm geschaltet", + "User_has_been_removed_from_s": "Benutzer wurde aus {{s}} entfernt", + "User__username__is_now_a_leader_of__room_name_": "Benutzer {{username}} ist nun Diskussionsleiter von {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "Benutzer {{username}} ist nun Moderator von {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "Benutzer {{username}} ist nun Eigentümer von {{room_name}}", + "User__username__removed_from__room_name__leaders": "Benutzer {{username}} als Diskussionsleiter von {{room_name}} entfernt", + "User__username__removed_from__room_name__moderators": "Benutzer {{username}} als Moderator von {{room_name}} entfernt", + "User__username__removed_from__room_name__owners": "Benutzer {{username}} als Eigentümer von {{room_name}} entfernt", + "The_user_will_be_removed_from_s": "Der Benutzer wird aus {{s}} entfernt", + "Yes_remove_user": "Ja, Benutzer entfernen!", + "Direct_message": "Direktnachricht", + "Message_Ignored": "Nachricht ignoriert. Antippen um sie zu zeigen.", + "Enter_workspace_URL": "Arbeitsbereich-URL", + "Workspace_URL_Example": "z.B. https://rocketchat.deine-firma.de" +} \ No newline at end of file diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js deleted file mode 100644 index 02adcb4607f..00000000000 --- a/app/i18n/locales/en.js +++ /dev/null @@ -1,710 +0,0 @@ -export default { - '1_person_reacted': '1 person reacted', - '1_user': '1 user', - 'error-action-not-allowed': '{{action}} is not allowed', - 'error-application-not-found': 'Application not found', - 'error-archived-duplicate-name': 'There\'s an archived channel with name {{room_name}}', - 'error-avatar-invalid-url': 'Invalid avatar URL: {{url}}', - 'error-avatar-url-handling': 'Error while handling avatar setting from a URL ({{url}}) for {{username}}', - 'error-cant-invite-for-direct-room': 'Can\'t invite user to direct rooms', - 'error-could-not-change-email': 'Could not change email', - 'error-could-not-change-name': 'Could not change name', - 'error-could-not-change-username': 'Could not change username', - 'error-could-not-change-status': 'Could not change status', - 'error-delete-protected-role': 'Cannot delete a protected role', - 'error-department-not-found': 'Department not found', - 'error-direct-message-file-upload-not-allowed': 'File sharing not allowed in direct messages', - 'error-duplicate-channel-name': 'A channel with name {{channel_name}} exists', - 'error-email-domain-blacklisted': 'The email domain is blacklisted', - 'error-email-send-failed': 'Error trying to send email: {{message}}', - 'error-save-image': 'Error while saving image', - 'error-save-video': 'Error while saving video', - 'error-field-unavailable': '{{field}} is already in use :(', - 'error-file-too-large': 'File is too large', - 'error-importer-not-defined': 'The importer was not defined correctly, it is missing the Import class.', - 'error-input-is-not-a-valid-field': '{{input}} is not a valid {{field}}', - 'error-invalid-actionlink': 'Invalid action link', - 'error-invalid-arguments': 'Invalid arguments', - 'error-invalid-asset': 'Invalid asset', - 'error-invalid-channel': 'Invalid channel.', - 'error-invalid-channel-start-with-chars': 'Invalid channel. Start with @ or #', - 'error-invalid-custom-field': 'Invalid custom field', - 'error-invalid-custom-field-name': 'Invalid custom field name. Use only letters, numbers, hyphens and underscores.', - 'error-invalid-date': 'Invalid date provided.', - 'error-invalid-description': 'Invalid description', - 'error-invalid-domain': 'Invalid domain', - 'error-invalid-email': 'Invalid email {{emai}}', - 'error-invalid-email-address': 'Invalid email address', - 'error-invalid-file-height': 'Invalid file height', - 'error-invalid-file-type': 'Invalid file type', - 'error-invalid-file-width': 'Invalid file width', - 'error-invalid-from-address': 'You informed an invalid FROM address.', - 'error-invalid-integration': 'Invalid integration', - 'error-invalid-message': 'Invalid message', - 'error-invalid-method': 'Invalid method', - 'error-invalid-name': 'Invalid name', - 'error-invalid-password': 'Invalid password', - 'error-invalid-redirectUri': 'Invalid redirectUri', - 'error-invalid-role': 'Invalid role', - 'error-invalid-room': 'Invalid room', - 'error-invalid-room-name': '{{room_name}} is not a valid room name', - 'error-invalid-room-type': '{{type}} is not a valid room type.', - 'error-invalid-settings': 'Invalid settings provided', - 'error-invalid-subscription': 'Invalid subscription', - 'error-invalid-token': 'Invalid token', - 'error-invalid-triggerWords': 'Invalid triggerWords', - 'error-invalid-urls': 'Invalid URLs', - 'error-invalid-user': 'Invalid user', - 'error-invalid-username': 'Invalid username', - 'error-invalid-webhook-response': 'The webhook URL responded with a status other than 200', - 'error-message-deleting-blocked': 'Message deleting is blocked', - 'error-message-editing-blocked': 'Message editing is blocked', - 'error-message-size-exceeded': 'Message size exceeds Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'You must provide the [unsubscribe] link.', - 'error-no-tokens-for-this-user': 'There are no tokens for this user', - 'error-not-allowed': 'Not allowed', - 'error-not-authorized': 'Not authorized', - 'error-push-disabled': 'Push is disabled', - 'error-remove-last-owner': 'This is the last owner. Please set a new owner before removing this one.', - 'error-role-in-use': 'Cannot delete role because it\'s in use', - 'error-role-name-required': 'Role name is required', - 'error-the-field-is-required': 'The field {{field}} is required.', - 'error-too-many-requests': 'Error, too many requests. Please slow down. You must wait {{seconds}} seconds before trying again.', - 'error-user-is-not-activated': 'User is not activated', - 'error-user-has-no-roles': 'User has no roles', - 'error-user-limit-exceeded': 'The number of users you are trying to invite to #channel_name exceeds the limit set by the administrator', - 'error-user-not-in-room': 'User is not in this room', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'User registration is disabled', - 'error-user-registration-secret': 'User registration is only allowed via Secret URL', - 'error-you-are-last-owner': 'You are the last owner. Please set new owner before leaving the room.', - Actions: 'Actions', - activity: 'activity', - Activity: 'Activity', - Add_Reaction: 'Add Reaction', - Add_Server: 'Add Server', - Add_users: 'Add users', - Admin_Panel: 'Admin Panel', - Agent: 'Agent', - Alert: 'Alert', - alert: 'alert', - alerts: 'alerts', - All_users_in_the_channel_can_write_new_messages: 'All users in the channel can write new messages', - A_meaningful_name_for_the_discussion_room: 'A meaningful name for the discussion room', - All: 'All', - All_Messages: 'All Messages', - Allow_Reactions: 'Allow Reactions', - Alphabetical: 'Alphabetical', - and_more: 'and more', - and: 'and', - announcement: 'announcement', - Announcement: 'Announcement', - Apply_Your_Certificate: 'Apply Your Certificate', - ARCHIVE: 'ARCHIVE', - archive: 'archive', - are_typing: 'are typing', - Are_you_sure_question_mark: 'Are you sure?', - Are_you_sure_you_want_to_leave_the_room: 'Are you sure you want to leave the room {{room}}?', - Audio: 'Audio', - Authenticating: 'Authenticating', - Automatic: 'Automatic', - Auto_Translate: 'Auto-Translate', - Avatar_changed_successfully: 'Avatar changed successfully!', - Avatar_Url: 'Avatar URL', - Away: 'Away', - Back: 'Back', - Black: 'Black', - Block_user: 'Block user', - Browser: 'Browser', - Broadcast_channel_Description: 'Only authorized users can write new messages, but the other users will be able to reply', - Broadcast_Channel: 'Broadcast Channel', - Busy: 'Busy', - By_proceeding_you_are_agreeing: 'By proceeding you are agreeing to our', - Cancel_editing: 'Cancel editing', - Cancel_recording: 'Cancel recording', - Cancel: 'Cancel', - changing_avatar: 'changing avatar', - creating_channel: 'creating channel', - creating_invite: 'creating invite', - Channel_Name: 'Channel Name', - Channels: 'Channels', - Chats: 'Chats', - Call_already_ended: 'Call already ended!', - Clear_cookies_alert: 'Do you want to clear all cookies?', - Clear_cookies_desc: 'This action will clear all login cookies, allowing you to login into other accounts.', - Clear_cookies_yes: 'Yes, clear cookies', - Clear_cookies_no: 'No, keep cookies', - Click_to_join: 'Click to Join!', - Close: 'Close', - Close_emoji_selector: 'Close emoji selector', - Closing_chat: 'Closing chat', - Change_language_loading: 'Changing language.', - Chat_closed_by_agent: 'Chat closed by agent', - Choose: 'Choose', - Choose_from_library: 'Choose from library', - Choose_file: 'Choose file', - Choose_where_you_want_links_be_opened: 'Choose where you want links be opened', - Code: 'Code', - Code_or_password_invalid: 'Code or password invalid', - Collaborative: 'Collaborative', - Confirm: 'Confirm', - Connect: 'Connect', - Connected: 'Connected', - connecting_server: 'connecting to server', - Connecting: 'Connecting...', - Contact_us: 'Contact us', - Contact_your_server_admin: 'Contact your server admin.', - Continue_with: 'Continue with', - Copied_to_clipboard: 'Copied to clipboard!', - Copy: 'Copy', - Conversation: 'Conversation', - Permalink: 'Permalink', - Certificate_password: 'Certificate Password', - Clear_cache: 'Clear local server cache', - Clear_cache_loading: 'Clearing cache.', - Whats_the_password_for_your_certificate: 'What\'s the password for your certificate?', - Create_account: 'Create an account', - Create_Channel: 'Create Channel', - Create_Direct_Messages: 'Create Direct Messages', - Create_Discussion: 'Create Discussion', - Created_snippet: 'created a snippet', - Create_a_new_workspace: 'Create a new workspace', - Create: 'Create', - Custom_Status: 'Custom Status', - Dark: 'Dark', - Dark_level: 'Dark Level', - Default: 'Default', - Default_browser: 'Default browser', - Delete_Room_Warning: 'Deleting a room will delete all messages posted within the room. This cannot be undone.', - Department: 'Department', - delete: 'delete', - Delete: 'Delete', - DELETE: 'DELETE', - deleting_room: 'deleting room', - description: 'description', - Description: 'Description', - Desktop_Options: 'Desktop Options', - Desktop_Notifications: 'Desktop Notifications', - Desktop_Alert_info: 'These notifications are delivered in desktop', - Directory: 'Directory', - Direct_Messages: 'Direct Messages', - Disable_notifications: 'Disable notifications', - Discussions: 'Discussions', - Discussion_Desc: 'Help keeping an overview about what\'s going on! By creating a discussion, a sub-channel of the one you selected is created and both are linked.', - Discussion_name: 'Discussion name', - Done: 'Done', - Dont_Have_An_Account: 'Don\'t you have an account?', - Do_you_have_an_account: 'Do you have an account?', - Do_you_have_a_certificate: 'Do you have a certificate?', - Do_you_really_want_to_key_this_room_question_mark: 'Do you really want to {{key}} this room?', - E2E_Encryption: 'E2E Encryption', - E2E_How_It_Works_info1: 'You can now create encrypted private groups and direct messages. You may also change existing private groups or DMs to encrypted.', - E2E_How_It_Works_info2: 'This is *end to end encryption* so the key to encode/decode your messages and they will not be saved on the server. For that reason *you need to store this password somewhere safe* which you can access later if you may need.', - E2E_How_It_Works_info3: 'If you proceed, it will be auto generated an E2E password.', - E2E_How_It_Works_info4: 'You can also setup a new password for your encryption key any time from any browser you have entered the existing E2E password.', - edit: 'edit', - edited: 'edited', - Edit: 'Edit', - Edit_Status: 'Edit Status', - Edit_Invite: 'Edit Invite', - End_to_end_encrypted_room: 'End to end encrypted room', - end_to_end_encryption: 'end to end encryption', - Email_Notification_Mode_All: 'Every Mention/DM', - Email_Notification_Mode_Disabled: 'Disabled', - Email_or_password_field_is_empty: 'Email or password field is empty', - Email: 'E-mail', - email: 'e-mail', - Empty_title: 'Empty title', - Enable_Auto_Translate: 'Enable Auto-Translate', - Enable_notifications: 'Enable notifications', - Encrypted: 'Encrypted', - Encrypted_message: 'Encrypted message', - Enter_Your_E2E_Password: 'Enter Your E2E Password', - Enter_Your_Encryption_Password_desc1: 'This will allow you to access your encrypted private groups and direct messages.', - Enter_Your_Encryption_Password_desc2: 'You need to enter the password to encode/decode messages every place you use the chat.', - Encryption_error_title: 'Your encryption password seems wrong', - Encryption_error_desc: 'It wasn\'t possible to decode your encryption key to be imported.', - Everyone_can_access_this_channel: 'Everyone can access this channel', - Error_uploading: 'Error uploading', - Expiration_Days: 'Expiration (Days)', - Favorite: 'Favorite', - Favorites: 'Favorites', - Files: 'Files', - File_description: 'File description', - File_name: 'File name', - Finish_recording: 'Finish recording', - Following_thread: 'Following thread', - For_your_security_you_must_enter_your_current_password_to_continue: 'For your security, you must enter your current password to continue', - Forgot_password_If_this_email_is_registered: 'If this email is registered, we\'ll send instructions on how to reset your password. If you do not receive an email shortly, please come back and try again.', - Forgot_password: 'Forgot your password?', - Forgot_Password: 'Forgot Password', - Forward: 'Forward', - Forward_Chat: 'Forward Chat', - Forward_to_department: 'Forward to department', - Forward_to_user: 'Forward to user', - Full_table: 'Click to see full table', - Generate_New_Link: 'Generate New Link', - Group_by_favorites: 'Group favorites', - Group_by_type: 'Group by type', - Hide: 'Hide', - Has_joined_the_channel: 'has joined the channel', - Has_joined_the_conversation: 'has joined the conversation', - Has_left_the_channel: 'has left the channel', - Hide_System_Messages: 'Hide System Messages', - Hide_type_messages: 'Hide "{{type}}" messages', - How_It_Works: 'How It Works', - Message_HideType_uj: 'User Join', - Message_HideType_ul: 'User Leave', - Message_HideType_ru: 'User Removed', - Message_HideType_au: 'User Added', - Message_HideType_mute_unmute: 'User Muted / Unmuted', - Message_HideType_r: 'Room Name Changed', - Message_HideType_ut: 'User Joined Conversation', - Message_HideType_wm: 'Welcome', - Message_HideType_rm: 'Message Removed', - Message_HideType_subscription_role_added: 'Was Set Role', - Message_HideType_subscription_role_removed: 'Role No Longer Defined', - Message_HideType_room_archived: 'Room Archived', - Message_HideType_room_unarchived: 'Room Unarchived', - I_Saved_My_E2E_Password: 'I Saved My E2E Password', - IP: 'IP', - In_app: 'In-app', - In_App_And_Desktop: 'In-app and Desktop', - In_App_and_Desktop_Alert_info: 'Displays a banner at the top of the screen when app is open, and displays a notification on desktop', - Invisible: 'Invisible', - Invite: 'Invite', - is_a_valid_RocketChat_instance: 'is a valid Rocket.Chat instance', - is_not_a_valid_RocketChat_instance: 'is not a valid Rocket.Chat instance', - is_typing: 'is typing', - Invalid_or_expired_invite_token: 'Invalid or expired invite token', - Invalid_server_version: 'The server you\'re trying to connect is using a version that\'s not supported by the app anymore: {{currentVersion}}.\n\nWe require version {{minVersion}}', - Invite_Link: 'Invite Link', - Invite_users: 'Invite users', - Join: 'Join', - Join_Code: 'Join Code', - Insert_Join_Code: 'Insert Join Code', - Join_our_open_workspace: 'Join our open workspace', - Join_your_workspace: 'Join your workspace', - Just_invited_people_can_access_this_channel: 'Just invited people can access this channel', - Language: 'Language', - last_message: 'last message', - Leave_channel: 'Leave channel', - leaving_room: 'leaving room', - leave: 'leave', - Legal: 'Legal', - Light: 'Light', - License: 'License', - Livechat: 'Livechat', - Livechat_edit: 'Livechat edit', - Login: 'Login', - Login_error: 'Your credentials were rejected! Please try again.', - Login_with: 'Login with', - Logging_out: 'Logging out.', - Logout: 'Logout', - Max_number_of_uses: 'Max number of uses', - Max_number_of_users_allowed_is_number: 'Max number of users allowed is {{maxUsers}}', - members: 'members', - Members: 'Members', - Mentioned_Messages: 'Mentioned Messages', - mentioned: 'mentioned', - Mentions: 'Mentions', - Message_accessibility: 'Message from {{user}} at {{time}}: {{message}}', - Message_actions: 'Message actions', - Message_pinned: 'Message pinned', - Message_removed: 'Message removed', - Message_starred: 'Message starred', - Message_unstarred: 'Message unstarred', - message: 'message', - messages: 'messages', - Message: 'Message', - Messages: 'Messages', - Message_Reported: 'Message reported', - Microphone_Permission_Message: 'Rocket.Chat needs access to your microphone so you can send audio message.', - Microphone_Permission: 'Microphone Permission', - Mute: 'Mute', - muted: 'muted', - My_servers: 'My servers', - N_people_reacted: '{{n}} people reacted', - N_users: '{{n}} users', - name: 'name', - Name: 'Name', - Navigation_history: 'Navigation history', - Never: 'Never', - New_Message: 'New Message', - New_Password: 'New Password', - New_Server: 'New Server', - Next: 'Next', - No_files: 'No files', - No_limit: 'No limit', - No_mentioned_messages: 'No mentioned messages', - No_pinned_messages: 'No pinned messages', - No_results_found: 'No results found', - No_starred_messages: 'No starred messages', - No_thread_messages: 'No thread messages', - No_label_provided: 'No {{label}} provided.', - No_Message: 'No Message', - No_messages_yet: 'No messages yet', - No_Reactions: 'No Reactions', - No_Read_Receipts: 'No Read Receipts', - Not_logged: 'Not logged', - Not_RC_Server: 'This is not a Rocket.Chat server.\n{{contact}}', - Nothing: 'Nothing', - Nothing_to_save: 'Nothing to save!', - Notify_active_in_this_room: 'Notify active users in this room', - Notify_all_in_this_room: 'Notify all in this room', - Notifications: 'Notifications', - Notification_Duration: 'Notification Duration', - Notification_Preferences: 'Notification Preferences', - No_available_agents_to_transfer: 'No available agents to transfer', - Offline: 'Offline', - Oops: 'Oops!', - Omnichannel: 'Omnichannel', - Open_Livechats: 'Chats in Progress', - Omnichannel_enable_alert: 'You\'re not available on Omnichannel. Would you like to be available?', - Onboarding_description: 'A workspace is your team or organization’s space to collaborate. Ask the workspace admin for address to join or create one for your team.', - Onboarding_join_workspace: 'Join a workspace', - Onboarding_subtitle: 'Beyond Team Collaboration', - Onboarding_title: 'Welcome to Rocket.Chat', - Onboarding_join_open_description: 'Join our open workspace to chat with the Rocket.Chat team and community.', - Onboarding_agree_terms: 'By continuing, you agree to Rocket.Chat', - Onboarding_less_options: 'Less options', - Onboarding_more_options: 'More options', - Online: 'Online', - Only_authorized_users_can_write_new_messages: 'Only authorized users can write new messages', - Open_emoji_selector: 'Open emoji selector', - Open_Source_Communication: 'Open Source Communication', - Open_your_authentication_app_and_enter_the_code: 'Open your authentication app and enter the code.', - OR: 'OR', - OS: 'OS', - Overwrites_the_server_configuration_and_use_room_config: 'Overwrites the server configuration and use room config', - Password: 'Password', - Parent_channel_or_group: 'Parent channel or group', - Permalink_copied_to_clipboard: 'Permalink copied to clipboard!', - Phone: 'Phone', - Pin: 'Pin', - Pinned_Messages: 'Pinned Messages', - pinned: 'pinned', - Pinned: 'Pinned', - Please_add_a_comment: 'Please add a comment', - Please_enter_your_password: 'Please enter your password', - Please_wait: 'Please wait.', - Preferences: 'Preferences', - Preferences_saved: 'Preferences saved!', - Privacy_Policy: ' Privacy Policy', - Private_Channel: 'Private Channel', - Private_Groups: 'Private Groups', - Private: 'Private', - Processing: 'Processing...', - Profile_saved_successfully: 'Profile saved successfully!', - Profile: 'Profile', - Public_Channel: 'Public Channel', - Public: 'Public', - Push_Notifications: 'Push Notifications', - Push_Notifications_Alert_Info: 'These notifications are delivered to you when the app is not open', - Quote: 'Quote', - Reactions_are_disabled: 'Reactions are disabled', - Reactions_are_enabled: 'Reactions are enabled', - Reactions: 'Reactions', - Read: 'Read', - Read_External_Permission_Message: 'Rocket.Chat needs to access photos, media, and files on your device', - Read_External_Permission: 'Read Media Permission', - Read_Only_Channel: 'Read Only Channel', - Read_Only: 'Read Only', - Read_Receipt: 'Read Receipt', - Receive_Group_Mentions: 'Receive Group Mentions', - Receive_Group_Mentions_Info: 'Receive @all and @here mentions', - Register: 'Register', - Repeat_Password: 'Repeat Password', - Replied_on: 'Replied on:', - replies: 'replies', - reply: 'reply', - Reply: 'Reply', - Report: 'Report', - Receive_Notification: 'Receive Notification', - Receive_notifications_from: 'Receive notifications from {{name}}', - Resend: 'Resend', - Reset_password: 'Reset password', - resetting_password: 'resetting password', - RESET: 'RESET', - Return: 'Return', - Review_app_title: 'Are you enjoying this app?', - Review_app_desc: 'Give us 5 stars on {{store}}', - Review_app_yes: 'Sure!', - Review_app_no: 'No', - Review_app_later: 'Maybe later', - Review_app_unable_store: 'Unable to open {{store}}', - Review_this_app: 'Review this app', - Remove: 'Remove', - Roles: 'Roles', - Room_actions: 'Room actions', - Room_changed_announcement: 'Room announcement changed to: {{announcement}} by {{userBy}}', - Room_changed_avatar: 'Room avatar changed by {{userBy}}', - Room_changed_description: 'Room description changed to: {{description}} by {{userBy}}', - Room_changed_privacy: 'Room type changed to: {{type}} by {{userBy}}', - Room_changed_topic: 'Room topic changed to: {{topic}} by {{userBy}}', - Room_Files: 'Room Files', - Room_Info_Edit: 'Room Info Edit', - Room_Info: 'Room Info', - Room_Members: 'Room Members', - Room_name_changed: 'Room name changed to: {{name}} by {{userBy}}', - SAVE: 'SAVE', - Save_Changes: 'Save Changes', - Save: 'Save', - Saved: 'Saved', - saving_preferences: 'saving preferences', - saving_profile: 'saving profile', - saving_settings: 'saving settings', - saved_to_gallery: 'Saved to gallery', - Save_Your_E2E_Password: 'Save Your E2E Password', - Save_Your_Encryption_Password: 'Save Your Encryption Password', - Save_Your_Encryption_Password_warning: 'This password is not stored anywhere so save it carefully somewhere else.', - Save_Your_Encryption_Password_info: 'Notice that you lose your password, there is no way to recover it and you will lose access to your messages.', - Search_Messages: 'Search Messages', - Search: 'Search', - Search_by: 'Search by', - Search_global_users: 'Search for global users', - Search_global_users_description: 'If you turn-on, you can search for any user from others companies or servers.', - Seconds: '{{second}} seconds', - Security_and_privacy: 'Security and privacy', - Select_Avatar: 'Select Avatar', - Select_Server: 'Select Server', - Select_Users: 'Select Users', - Select_a_Channel: 'Select a Channel', - Select_a_Department: 'Select a Department', - Select_an_option: 'Select an option', - Select_a_User: 'Select a User', - Send: 'Send', - Send_audio_message: 'Send audio message', - Send_crash_report: 'Send crash report', - Send_message: 'Send message', - Send_me_the_code_again: 'Send me the code again', - Send_to: 'Send to...', - Sending_to: 'Sending to', - Sent_an_attachment: 'Sent an attachment', - Server: 'Server', - Servers: 'Servers', - Server_version: 'Server version: {{version}}', - Set_username_subtitle: 'The username is used to allow others to mention you in messages', - Set_custom_status: 'Set custom status', - Set_status: 'Set status', - Status_saved_successfully: 'Status saved successfully!', - Settings: 'Settings', - Settings_succesfully_changed: 'Settings succesfully changed!', - Share: 'Share', - Share_Link: 'Share Link', - Share_this_app: 'Share this app', - Show_more: 'Show more..', - Show_Unread_Counter: 'Show Unread Counter', - Show_Unread_Counter_Info: 'Unread counter is displayed as a badge on the right of the channel, in the list', - Sign_in_your_server: 'Sign in your server', - Sign_Up: 'Sign Up', - Some_field_is_invalid_or_empty: 'Some field is invalid or empty', - Sorting_by: 'Sorting by {{key}}', - Sound: 'Sound', - Star_room: 'Star room', - Star: 'Star', - Starred_Messages: 'Starred Messages', - starred: 'starred', - Starred: 'Starred', - Start_of_conversation: 'Start of conversation', - Start_a_Discussion: 'Start a Discussion', - Started_discussion: 'Started a discussion:', - Started_call: 'Call started by {{userBy}}', - Submit: 'Submit', - Table: 'Table', - Tags: 'Tags', - Take_a_photo: 'Take a photo', - Take_a_video: 'Take a video', - Take_it: 'Take it!', - tap_to_change_status: 'tap to change status', - Tap_to_view_servers_list: 'Tap to view servers list', - Terms_of_Service: ' Terms of Service ', - Theme: 'Theme', - The_user_wont_be_able_to_type_in_roomName: 'The user won\'t be able to type in {{roomName}}', - The_user_will_be_able_to_type_in_roomName: 'The user will be able to type in {{roomName}}', - There_was_an_error_while_action: 'There was an error while {{action}}!', - This_room_is_blocked: 'This room is blocked', - This_room_is_read_only: 'This room is read only', - Thread: 'Thread', - Threads: 'Threads', - Timezone: 'Timezone', - To: 'To', - topic: 'topic', - Topic: 'Topic', - Translate: 'Translate', - Try_again: 'Try again', - Two_Factor_Authentication: 'Two-factor Authentication', - Type_the_channel_name_here: 'Type the channel name here', - unarchive: 'unarchive', - UNARCHIVE: 'UNARCHIVE', - Unblock_user: 'Unblock user', - Unfavorite: 'Unfavorite', - Unfollowed_thread: 'Unfollowed thread', - Unmute: 'Unmute', - unmuted: 'unmuted', - Unpin: 'Unpin', - unread_messages: 'unread', - Unread: 'Unread', - Unread_on_top: 'Unread on top', - Unstar: 'Unstar', - Updating: 'Updating...', - Uploading: 'Uploading', - Upload_file_question_mark: 'Upload file?', - User: 'User', - Users: 'Users', - User_added_by: 'User {{userAdded}} added by {{userBy}}', - User_Info: 'User Info', - User_has_been_key: 'User has been {{key}}', - User_is_no_longer_role_by_: '{{user}} is no longer {{role}} by {{userBy}}', - User_muted_by: 'User {{userMuted}} muted by {{userBy}}', - User_removed_by: 'User {{userRemoved}} removed by {{userBy}}', - User_sent_an_attachment: '{{user}} sent an attachment', - User_unmuted_by: 'User {{userUnmuted}} unmuted by {{userBy}}', - User_was_set_role_by_: '{{user}} was set {{role}} by {{userBy}}', - Username_is_empty: 'Username is empty', - Username: 'Username', - Username_or_email: 'Username or email', - Uses_server_configuration: 'Uses server configuration', - Validating: 'Validating', - Registration_Succeeded: 'Registration Succeeded!', - Verify: 'Verify', - Verify_email_title: 'Registration Succeeded!', - Verify_email_desc: 'We have sent you an email to confirm your registration. If you do not receive an email shortly, please come back and try again.', - Verify_your_email_for_the_code_we_sent: 'Verify your email for the code we sent', - Video_call: 'Video call', - View_Original: 'View Original', - Voice_call: 'Voice call', - Waiting_for_network: 'Waiting for network...', - Websocket_disabled: 'Websocket is disabled for this server.\n{{contact}}', - Welcome: 'Welcome', - What_are_you_doing_right_now: 'What are you doing right now?', - Whats_your_2fa: 'What\'s your 2FA code?', - Without_Servers: 'Without Servers', - Workspaces: 'Workspaces', - Would_you_like_to_return_the_inquiry: 'Would you like to return the inquiry?', - Write_External_Permission_Message: 'Rocket.Chat needs access to your gallery so you can save images.', - Write_External_Permission: 'Gallery Permission', - Yes: 'Yes', - Yes_action_it: 'Yes, {{action}} it!', - Yesterday: 'Yesterday', - You_are_in_preview_mode: 'You are in preview mode', - You_are_offline: 'You are offline', - You_can_search_using_RegExp_eg: 'You can use RegExp. e.g. `/^text$/i`', - You_colon: 'You: ', - you_were_mentioned: 'you were mentioned', - You_were_removed_from_channel: 'You were removed from {{channel}}', - you: 'you', - You: 'You', - Logged_out_by_server: 'You\'ve been logged out by the server. Please log in again.', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'You need to access at least one Rocket.Chat server to share something.', - You_need_to_verifiy_your_email_address_to_get_notications: 'You need to verify your email address to get notifications', - Your_certificate: 'Your Certificate', - Your_invite_link_will_expire_after__usesLeft__uses: 'Your invite link will expire after {{usesLeft}} uses.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Your invite link will expire on {{date}} or after {{usesLeft}} uses.', - Your_invite_link_will_expire_on__date__: 'Your invite link will expire on {{date}}.', - Your_invite_link_will_never_expire: 'Your invite link will never expire.', - Your_workspace: 'Your workspace', - Your_password_is: 'Your password is', - Version_no: 'Version: {{version}}', - You_will_not_be_able_to_recover_this_message: 'You will not be able to recover this message!', - You_will_unset_a_certificate_for_this_server: 'You will unset a certificate for this server', - Change_Language: 'Change Language', - Crash_report_disclaimer: 'We never track the content of your chats. The crash report and analytics events only contains relevant information for us in order to identify and fix issues.', - Type_message: 'Type message', - Room_search: 'Rooms search', - Room_selection: 'Room selection 1...9', - Next_room: 'Next room', - Previous_room: 'Previous room', - New_room: 'New room', - Upload_room: 'Upload to room', - Search_messages: 'Search messages', - Scroll_messages: 'Scroll messages', - Reply_latest: 'Reply to latest', - Reply_in_Thread: 'Reply in Thread', - Server_selection: 'Server selection', - Server_selection_numbers: 'Server selection 1...9', - Add_server: 'Add server', - New_line: 'New line', - You_will_be_logged_out_of_this_application: 'You will be logged out of this application.', - Clear: 'Clear', - This_will_clear_all_your_offline_data: 'This will clear all your offline data.', - This_will_remove_all_data_from_this_server: 'This will remove all data from this server.', - Mark_unread: 'Mark Unread', - Wait_activation_warning: 'Before you can login, your account must be manually activated by an administrator.', - Screen_lock: 'Screen lock', - Local_authentication_biometry_title: 'Authenticate', - Local_authentication_biometry_fallback: 'Use passcode', - Local_authentication_unlock_option: 'Unlock with Passcode', - Local_authentication_change_passcode: 'Change Passcode', - Local_authentication_info: 'Note: if you forget the Passcode, you\'ll need to delete and reinstall the app.', - Local_authentication_facial_recognition: 'facial recognition', - Local_authentication_fingerprint: 'fingerprint', - Local_authentication_unlock_with_label: 'Unlock with {{label}}', - Local_authentication_auto_lock_60: 'After 1 minute', - Local_authentication_auto_lock_300: 'After 5 minutes', - Local_authentication_auto_lock_900: 'After 15 minutes', - Local_authentication_auto_lock_1800: 'After 30 minutes', - Local_authentication_auto_lock_3600: 'After 1 hour', - Passcode_enter_title: 'Enter your passcode', - Passcode_choose_title: 'Choose your new passcode', - Passcode_choose_confirm_title: 'Confirm your new passcode', - Passcode_choose_error: 'Passcodes don\'t match. Try again.', - Passcode_choose_force_set: 'Passcode required by admin', - Passcode_app_locked_title: 'App locked', - Passcode_app_locked_subtitle: 'Try again in {{timeLeft}} seconds', - After_seconds_set_by_admin: 'After {{seconds}} seconds (set by admin)', - Dont_activate: 'Don\'t activate now', - Queued_chats: 'Queued chats', - Queue_is_empty: 'Queue is empty', - Logout_from_other_logged_in_locations: 'Logout from other logged in locations', - You_will_be_logged_out_from_other_locations: 'You\'ll be logged out from other locations.', - Logged_out_of_other_clients_successfully: 'Logged out of other clients successfully', - Logout_failed: 'Logout failed!', - Log_analytics_events: 'Log analytics events', - E2E_encryption_change_password_title: 'Change Encryption Password', - E2E_encryption_change_password_description: 'You can now create encrypted private groups and direct messages. You may also change existing private groups or DMs to encrypted. \nThis is end to end encryption so the key to encode/decode your messages will not be saved on the server. For that reason you need to store your password somewhere safe. You will be required to enter it on other devices you wish to use e2e encryption on.', - E2E_encryption_change_password_error: 'Error while changing E2E key password!', - E2E_encryption_change_password_success: 'E2E key password changed successfully!', - E2E_encryption_change_password_message: 'Make sure you\'ve saved it carefully somewhere else.', - E2E_encryption_change_password_confirmation: 'Yes, change it', - E2E_encryption_reset_title: 'Reset E2E Key', - E2E_encryption_reset_description: 'This option will remove your current E2E key and log you out. \nWhen you login again, Rocket.Chat will generate you a new key and restore your access to any encrypted room that has one or more members online. \nDue to the nature of the E2E encryption, Rocket.Chat will not be able to restore access to any encrypted room that has no member online.', - E2E_encryption_reset_button: 'Reset E2E Key', - E2E_encryption_reset_error: 'Error while resetting E2E key!', - E2E_encryption_reset_message: 'You\'re going to be logged out.', - E2E_encryption_reset_confirmation: 'Yes, reset it', - Following: 'Following', - Threads_displaying_all: 'Displaying All', - Threads_displaying_following: 'Displaying Following', - Threads_displaying_unread: 'Displaying Unread', - No_threads: 'There are no threads', - No_threads_following: 'You are not following any threads', - No_threads_unread: 'There are no unread threads', - Messagebox_Send_to_channel: 'Send to channel', - Set_as_leader: 'Set as leader', - Set_as_moderator: 'Set as moderator', - Set_as_owner: 'Set as owner', - Remove_as_leader: 'Remove as leader', - Remove_as_moderator: 'Remove as moderator', - Remove_as_owner: 'Remove as owner', - Remove_from_room: 'Remove from room', - Ignore: 'Ignore', - Unignore: 'Unignore', - User_has_been_ignored: 'User has been ignored', - User_has_been_unignored: 'User is no longer ignored', - User_has_been_removed_from_s: 'User has been removed from {{s}}', - User__username__is_now_a_leader_of__room_name_: 'User {{username}} is now a leader of {{room_name}}', - User__username__is_now_a_moderator_of__room_name_: 'User {{username}} is now a moderator of {{room_name}}', - User__username__is_now_a_owner_of__room_name_: 'User {{username}} is now a owner of {{room_name}}', - User__username__removed_from__room_name__leaders: 'User {{username}} removed from {{room_name}} leaders', - User__username__removed_from__room_name__moderators: 'User {{username}} removed from {{room_name}} moderators', - User__username__removed_from__room_name__owners: 'User {{username}} removed from {{room_name}} owners', - The_user_will_be_removed_from_s: 'The user will be removed from {{s}}', - Yes_remove_user: 'Yes, remove user!', - Direct_message: 'Direct message', - Message_Ignored: 'Message ignored. Tap to display it.', - Enter_workspace_URL: 'Enter workspace URL', - Workspace_URL_Example: 'Ex. your-company.rocket.chat', - This_room_encryption_has_been_enabled_by__username_: 'This room\'s encryption has been enabled by {{username}}', - This_room_encryption_has_been_disabled_by__username_: 'This room\'s encryption has been disabled by {{username}}' -}; diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json new file mode 100644 index 00000000000..ce4243c4311 --- /dev/null +++ b/app/i18n/locales/en.json @@ -0,0 +1,710 @@ +{ + "1_person_reacted": "1 person reacted", + "1_user": "1 user", + "error-action-not-allowed": "{{action}} is not allowed", + "error-application-not-found": "Application not found", + "error-archived-duplicate-name": "There's an archived channel with name {{room_name}}", + "error-avatar-invalid-url": "Invalid avatar URL: {{url}}", + "error-avatar-url-handling": "Error while handling avatar setting from a URL ({{url}}) for {{username}}", + "error-cant-invite-for-direct-room": "Can't invite user to direct rooms", + "error-could-not-change-email": "Could not change email", + "error-could-not-change-name": "Could not change name", + "error-could-not-change-username": "Could not change username", + "error-could-not-change-status": "Could not change status", + "error-delete-protected-role": "Cannot delete a protected role", + "error-department-not-found": "Department not found", + "error-direct-message-file-upload-not-allowed": "File sharing not allowed in direct messages", + "error-duplicate-channel-name": "A channel with name {{channel_name}} exists", + "error-email-domain-blacklisted": "The email domain is blacklisted", + "error-email-send-failed": "Error trying to send email: {{message}}", + "error-save-image": "Error while saving image", + "error-save-video": "Error while saving video", + "error-field-unavailable": "{{field}} is already in use :(", + "error-file-too-large": "File is too large", + "error-importer-not-defined": "The importer was not defined correctly, it is missing the Import class.", + "error-input-is-not-a-valid-field": "{{input}} is not a valid {{field}}", + "error-invalid-actionlink": "Invalid action link", + "error-invalid-arguments": "Invalid arguments", + "error-invalid-asset": "Invalid asset", + "error-invalid-channel": "Invalid channel.", + "error-invalid-channel-start-with-chars": "Invalid channel. Start with @ or #", + "error-invalid-custom-field": "Invalid custom field", + "error-invalid-custom-field-name": "Invalid custom field name. Use only letters, numbers, hyphens and underscores.", + "error-invalid-date": "Invalid date provided.", + "error-invalid-description": "Invalid description", + "error-invalid-domain": "Invalid domain", + "error-invalid-email": "Invalid email {{emai}}", + "error-invalid-email-address": "Invalid email address", + "error-invalid-file-height": "Invalid file height", + "error-invalid-file-type": "Invalid file type", + "error-invalid-file-width": "Invalid file width", + "error-invalid-from-address": "You informed an invalid FROM address.", + "error-invalid-integration": "Invalid integration", + "error-invalid-message": "Invalid message", + "error-invalid-method": "Invalid method", + "error-invalid-name": "Invalid name", + "error-invalid-password": "Invalid password", + "error-invalid-redirectUri": "Invalid redirectUri", + "error-invalid-role": "Invalid role", + "error-invalid-room": "Invalid room", + "error-invalid-room-name": "{{room_name}} is not a valid room name", + "error-invalid-room-type": "{{type}} is not a valid room type.", + "error-invalid-settings": "Invalid settings provided", + "error-invalid-subscription": "Invalid subscription", + "error-invalid-token": "Invalid token", + "error-invalid-triggerWords": "Invalid triggerWords", + "error-invalid-urls": "Invalid URLs", + "error-invalid-user": "Invalid user", + "error-invalid-username": "Invalid username", + "error-invalid-webhook-response": "The webhook URL responded with a status other than 200", + "error-message-deleting-blocked": "Message deleting is blocked", + "error-message-editing-blocked": "Message editing is blocked", + "error-message-size-exceeded": "Message size exceeds Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "You must provide the [unsubscribe] link.", + "error-no-tokens-for-this-user": "There are no tokens for this user", + "error-not-allowed": "Not allowed", + "error-not-authorized": "Not authorized", + "error-push-disabled": "Push is disabled", + "error-remove-last-owner": "This is the last owner. Please set a new owner before removing this one.", + "error-role-in-use": "Cannot delete role because it's in use", + "error-role-name-required": "Role name is required", + "error-the-field-is-required": "The field {{field}} is required.", + "error-too-many-requests": "Error, too many requests. Please slow down. You must wait {{seconds}} seconds before trying again.", + "error-user-is-not-activated": "User is not activated", + "error-user-has-no-roles": "User has no roles", + "error-user-limit-exceeded": "The number of users you are trying to invite to #channel_name exceeds the limit set by the administrator", + "error-user-not-in-room": "User is not in this room", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "User registration is disabled", + "error-user-registration-secret": "User registration is only allowed via Secret URL", + "error-you-are-last-owner": "You are the last owner. Please set new owner before leaving the room.", + "Actions": "Actions", + "activity": "activity", + "Activity": "Activity", + "Add_Reaction": "Add Reaction", + "Add_Server": "Add Server", + "Add_users": "Add users", + "Admin_Panel": "Admin Panel", + "Agent": "Agent", + "Alert": "Alert", + "alert": "alert", + "alerts": "alerts", + "All_users_in_the_channel_can_write_new_messages": "All users in the channel can write new messages", + "A_meaningful_name_for_the_discussion_room": "A meaningful name for the discussion room", + "All": "All", + "All_Messages": "All Messages", + "Allow_Reactions": "Allow Reactions", + "Alphabetical": "Alphabetical", + "and_more": "and more", + "and": "and", + "announcement": "announcement", + "Announcement": "Announcement", + "Apply_Your_Certificate": "Apply Your Certificate", + "ARCHIVE": "ARCHIVE", + "archive": "archive", + "are_typing": "are typing", + "Are_you_sure_question_mark": "Are you sure?", + "Are_you_sure_you_want_to_leave_the_room": "Are you sure you want to leave the room {{room}}?", + "Audio": "Audio", + "Authenticating": "Authenticating", + "Automatic": "Automatic", + "Auto_Translate": "Auto-Translate", + "Avatar_changed_successfully": "Avatar changed successfully!", + "Avatar_Url": "Avatar URL", + "Away": "Away", + "Back": "Back", + "Black": "Black", + "Block_user": "Block user", + "Browser": "Browser", + "Broadcast_channel_Description": "Only authorized users can write new messages, but the other users will be able to reply", + "Broadcast_Channel": "Broadcast Channel", + "Busy": "Busy", + "By_proceeding_you_are_agreeing": "By proceeding you are agreeing to our", + "Cancel_editing": "Cancel editing", + "Cancel_recording": "Cancel recording", + "Cancel": "Cancel", + "changing_avatar": "changing avatar", + "creating_channel": "creating channel", + "creating_invite": "creating invite", + "Channel_Name": "Channel Name", + "Channels": "Channels", + "Chats": "Chats", + "Call_already_ended": "Call already ended!", + "Clear_cookies_alert": "Do you want to clear all cookies?", + "Clear_cookies_desc": "This action will clear all login cookies, allowing you to login into other accounts.", + "Clear_cookies_yes": "Yes, clear cookies", + "Clear_cookies_no": "No, keep cookies", + "Click_to_join": "Click to Join!", + "Close": "Close", + "Close_emoji_selector": "Close emoji selector", + "Closing_chat": "Closing chat", + "Change_language_loading": "Changing language.", + "Chat_closed_by_agent": "Chat closed by agent", + "Choose": "Choose", + "Choose_from_library": "Choose from library", + "Choose_file": "Choose file", + "Choose_where_you_want_links_be_opened": "Choose where you want links be opened", + "Code": "Code", + "Code_or_password_invalid": "Code or password invalid", + "Collaborative": "Collaborative", + "Confirm": "Confirm", + "Connect": "Connect", + "Connected": "Connected", + "connecting_server": "connecting to server", + "Connecting": "Connecting...", + "Contact_us": "Contact us", + "Contact_your_server_admin": "Contact your server admin.", + "Continue_with": "Continue with", + "Copied_to_clipboard": "Copied to clipboard!", + "Copy": "Copy", + "Conversation": "Conversation", + "Permalink": "Permalink", + "Certificate_password": "Certificate Password", + "Clear_cache": "Clear local server cache", + "Clear_cache_loading": "Clearing cache.", + "Whats_the_password_for_your_certificate": "What's the password for your certificate?", + "Create_account": "Create an account", + "Create_Channel": "Create Channel", + "Create_Direct_Messages": "Create Direct Messages", + "Create_Discussion": "Create Discussion", + "Created_snippet": "created a snippet", + "Create_a_new_workspace": "Create a new workspace", + "Create": "Create", + "Custom_Status": "Custom Status", + "Dark": "Dark", + "Dark_level": "Dark Level", + "Default": "Default", + "Default_browser": "Default browser", + "Delete_Room_Warning": "Deleting a room will delete all messages posted within the room. This cannot be undone.", + "Department": "Department", + "delete": "delete", + "Delete": "Delete", + "DELETE": "DELETE", + "deleting_room": "deleting room", + "description": "description", + "Description": "Description", + "Desktop_Options": "Desktop Options", + "Desktop_Notifications": "Desktop Notifications", + "Desktop_Alert_info": "These notifications are delivered in desktop", + "Directory": "Directory", + "Direct_Messages": "Direct Messages", + "Disable_notifications": "Disable notifications", + "Discussions": "Discussions", + "Discussion_Desc": "Help keeping an overview about what's going on! By creating a discussion, a sub-channel of the one you selected is created and both are linked.", + "Discussion_name": "Discussion name", + "Done": "Done", + "Dont_Have_An_Account": "Don't you have an account?", + "Do_you_have_an_account": "Do you have an account?", + "Do_you_have_a_certificate": "Do you have a certificate?", + "Do_you_really_want_to_key_this_room_question_mark": "Do you really want to {{key}} this room?", + "E2E_Encryption": "E2E Encryption", + "E2E_How_It_Works_info1": "You can now create encrypted private groups and direct messages. You may also change existing private groups or DMs to encrypted.", + "E2E_How_It_Works_info2": "This is *end to end encryption* so the key to encode/decode your messages and they will not be saved on the server. For that reason *you need to store this password somewhere safe* which you can access later if you may need.", + "E2E_How_It_Works_info3": "If you proceed, it will be auto generated an E2E password.", + "E2E_How_It_Works_info4": "You can also setup a new password for your encryption key any time from any browser you have entered the existing E2E password.", + "edit": "edit", + "edited": "edited", + "Edit": "Edit", + "Edit_Status": "Edit Status", + "Edit_Invite": "Edit Invite", + "End_to_end_encrypted_room": "End to end encrypted room", + "end_to_end_encryption": "end to end encryption", + "Email_Notification_Mode_All": "Every Mention/DM", + "Email_Notification_Mode_Disabled": "Disabled", + "Email_or_password_field_is_empty": "Email or password field is empty", + "Email": "E-mail", + "email": "e-mail", + "Empty_title": "Empty title", + "Enable_Auto_Translate": "Enable Auto-Translate", + "Enable_notifications": "Enable notifications", + "Encrypted": "Encrypted", + "Encrypted_message": "Encrypted message", + "Enter_Your_E2E_Password": "Enter Your E2E Password", + "Enter_Your_Encryption_Password_desc1": "This will allow you to access your encrypted private groups and direct messages.", + "Enter_Your_Encryption_Password_desc2": "You need to enter the password to encode/decode messages every place you use the chat.", + "Encryption_error_title": "Your encryption password seems wrong", + "Encryption_error_desc": "It wasn't possible to decode your encryption key to be imported.", + "Everyone_can_access_this_channel": "Everyone can access this channel", + "Error_uploading": "Error uploading", + "Expiration_Days": "Expiration (Days)", + "Favorite": "Favorite", + "Favorites": "Favorites", + "Files": "Files", + "File_description": "File description", + "File_name": "File name", + "Finish_recording": "Finish recording", + "Following_thread": "Following thread", + "For_your_security_you_must_enter_your_current_password_to_continue": "For your security, you must enter your current password to continue", + "Forgot_password_If_this_email_is_registered": "If this email is registered, we'll send instructions on how to reset your password. If you do not receive an email shortly, please come back and try again.", + "Forgot_password": "Forgot your password?", + "Forgot_Password": "Forgot Password", + "Forward": "Forward", + "Forward_Chat": "Forward Chat", + "Forward_to_department": "Forward to department", + "Forward_to_user": "Forward to user", + "Full_table": "Click to see full table", + "Generate_New_Link": "Generate New Link", + "Group_by_favorites": "Group favorites", + "Group_by_type": "Group by type", + "Hide": "Hide", + "Has_joined_the_channel": "has joined the channel", + "Has_joined_the_conversation": "has joined the conversation", + "Has_left_the_channel": "has left the channel", + "Hide_System_Messages": "Hide System Messages", + "Hide_type_messages": "Hide \"{{type}}\" messages", + "How_It_Works": "How It Works", + "Message_HideType_uj": "User Join", + "Message_HideType_ul": "User Leave", + "Message_HideType_ru": "User Removed", + "Message_HideType_au": "User Added", + "Message_HideType_mute_unmute": "User Muted / Unmuted", + "Message_HideType_r": "Room Name Changed", + "Message_HideType_ut": "User Joined Conversation", + "Message_HideType_wm": "Welcome", + "Message_HideType_rm": "Message Removed", + "Message_HideType_subscription_role_added": "Was Set Role", + "Message_HideType_subscription_role_removed": "Role No Longer Defined", + "Message_HideType_room_archived": "Room Archived", + "Message_HideType_room_unarchived": "Room Unarchived", + "I_Saved_My_E2E_Password": "I Saved My E2E Password", + "IP": "IP", + "In_app": "In-app", + "In_App_And_Desktop": "In-app and Desktop", + "In_App_and_Desktop_Alert_info": "Displays a banner at the top of the screen when app is open, and displays a notification on desktop", + "Invisible": "Invisible", + "Invite": "Invite", + "is_a_valid_RocketChat_instance": "is a valid Rocket.Chat instance", + "is_not_a_valid_RocketChat_instance": "is not a valid Rocket.Chat instance", + "is_typing": "is typing", + "Invalid_or_expired_invite_token": "Invalid or expired invite token", + "Invalid_server_version": "The server you're trying to connect is using a version that's not supported by the app anymore: {{currentVersion}}.\n\nWe require version {{minVersion}}", + "Invite_Link": "Invite Link", + "Invite_users": "Invite users", + "Join": "Join", + "Join_Code": "Join Code", + "Insert_Join_Code": "Insert Join Code", + "Join_our_open_workspace": "Join our open workspace", + "Join_your_workspace": "Join your workspace", + "Just_invited_people_can_access_this_channel": "Just invited people can access this channel", + "Language": "Language", + "last_message": "last message", + "Leave_channel": "Leave channel", + "leaving_room": "leaving room", + "leave": "leave", + "Legal": "Legal", + "Light": "Light", + "License": "License", + "Livechat": "Livechat", + "Livechat_edit": "Livechat edit", + "Login": "Login", + "Login_error": "Your credentials were rejected! Please try again.", + "Login_with": "Login with", + "Logging_out": "Logging out.", + "Logout": "Logout", + "Max_number_of_uses": "Max number of uses", + "Max_number_of_users_allowed_is_number": "Max number of users allowed is {{maxUsers}}", + "members": "members", + "Members": "Members", + "Mentioned_Messages": "Mentioned Messages", + "mentioned": "mentioned", + "Mentions": "Mentions", + "Message_accessibility": "Message from {{user}} at {{time}}: {{message}}", + "Message_actions": "Message actions", + "Message_pinned": "Message pinned", + "Message_removed": "Message removed", + "Message_starred": "Message starred", + "Message_unstarred": "Message unstarred", + "message": "message", + "messages": "messages", + "Message": "Message", + "Messages": "Messages", + "Message_Reported": "Message reported", + "Microphone_Permission_Message": "Rocket.Chat needs access to your microphone so you can send audio message.", + "Microphone_Permission": "Microphone Permission", + "Mute": "Mute", + "muted": "muted", + "My_servers": "My servers", + "N_people_reacted": "{{n}} people reacted", + "N_users": "{{n}} users", + "name": "name", + "Name": "Name", + "Navigation_history": "Navigation history", + "Never": "Never", + "New_Message": "New Message", + "New_Password": "New Password", + "New_Server": "New Server", + "Next": "Next", + "No_files": "No files", + "No_limit": "No limit", + "No_mentioned_messages": "No mentioned messages", + "No_pinned_messages": "No pinned messages", + "No_results_found": "No results found", + "No_starred_messages": "No starred messages", + "No_thread_messages": "No thread messages", + "No_label_provided": "No {{label}} provided.", + "No_Message": "No Message", + "No_messages_yet": "No messages yet", + "No_Reactions": "No Reactions", + "No_Read_Receipts": "No Read Receipts", + "Not_logged": "Not logged", + "Not_RC_Server": "This is not a Rocket.Chat server.\n{{contact}}", + "Nothing": "Nothing", + "Nothing_to_save": "Nothing to save!", + "Notify_active_in_this_room": "Notify active users in this room", + "Notify_all_in_this_room": "Notify all in this room", + "Notifications": "Notifications", + "Notification_Duration": "Notification Duration", + "Notification_Preferences": "Notification Preferences", + "No_available_agents_to_transfer": "No available agents to transfer", + "Offline": "Offline", + "Oops": "Oops!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Chats in Progress", + "Omnichannel_enable_alert": "You're not available on Omnichannel. Would you like to be available?", + "Onboarding_description": "A workspace is your team or organization’s space to collaborate. Ask the workspace admin for address to join or create one for your team.", + "Onboarding_join_workspace": "Join a workspace", + "Onboarding_subtitle": "Beyond Team Collaboration", + "Onboarding_title": "Welcome to Rocket.Chat", + "Onboarding_join_open_description": "Join our open workspace to chat with the Rocket.Chat team and community.", + "Onboarding_agree_terms": "By continuing, you agree to Rocket.Chat", + "Onboarding_less_options": "Less options", + "Onboarding_more_options": "More options", + "Online": "Online", + "Only_authorized_users_can_write_new_messages": "Only authorized users can write new messages", + "Open_emoji_selector": "Open emoji selector", + "Open_Source_Communication": "Open Source Communication", + "Open_your_authentication_app_and_enter_the_code": "Open your authentication app and enter the code.", + "OR": "OR", + "OS": "OS", + "Overwrites_the_server_configuration_and_use_room_config": "Overwrites the server configuration and use room config", + "Password": "Password", + "Parent_channel_or_group": "Parent channel or group", + "Permalink_copied_to_clipboard": "Permalink copied to clipboard!", + "Phone": "Phone", + "Pin": "Pin", + "Pinned_Messages": "Pinned Messages", + "pinned": "pinned", + "Pinned": "Pinned", + "Please_add_a_comment": "Please add a comment", + "Please_enter_your_password": "Please enter your password", + "Please_wait": "Please wait.", + "Preferences": "Preferences", + "Preferences_saved": "Preferences saved!", + "Privacy_Policy": " Privacy Policy", + "Private_Channel": "Private Channel", + "Private_Groups": "Private Groups", + "Private": "Private", + "Processing": "Processing...", + "Profile_saved_successfully": "Profile saved successfully!", + "Profile": "Profile", + "Public_Channel": "Public Channel", + "Public": "Public", + "Push_Notifications": "Push Notifications", + "Push_Notifications_Alert_Info": "These notifications are delivered to you when the app is not open", + "Quote": "Quote", + "Reactions_are_disabled": "Reactions are disabled", + "Reactions_are_enabled": "Reactions are enabled", + "Reactions": "Reactions", + "Read": "Read", + "Read_External_Permission_Message": "Rocket.Chat needs to access photos, media, and files on your device", + "Read_External_Permission": "Read Media Permission", + "Read_Only_Channel": "Read Only Channel", + "Read_Only": "Read Only", + "Read_Receipt": "Read Receipt", + "Receive_Group_Mentions": "Receive Group Mentions", + "Receive_Group_Mentions_Info": "Receive @all and @here mentions", + "Register": "Register", + "Repeat_Password": "Repeat Password", + "Replied_on": "Replied on:", + "replies": "replies", + "reply": "reply", + "Reply": "Reply", + "Report": "Report", + "Receive_Notification": "Receive Notification", + "Receive_notifications_from": "Receive notifications from {{name}}", + "Resend": "Resend", + "Reset_password": "Reset password", + "resetting_password": "resetting password", + "RESET": "RESET", + "Return": "Return", + "Review_app_title": "Are you enjoying this app?", + "Review_app_desc": "Give us 5 stars on {{store}}", + "Review_app_yes": "Sure!", + "Review_app_no": "No", + "Review_app_later": "Maybe later", + "Review_app_unable_store": "Unable to open {{store}}", + "Review_this_app": "Review this app", + "Remove": "Remove", + "Roles": "Roles", + "Room_actions": "Room actions", + "Room_changed_announcement": "Room announcement changed to: {{announcement}} by {{userBy}}", + "Room_changed_avatar": "Room avatar changed by {{userBy}}", + "Room_changed_description": "Room description changed to: {{description}} by {{userBy}}", + "Room_changed_privacy": "Room type changed to: {{type}} by {{userBy}}", + "Room_changed_topic": "Room topic changed to: {{topic}} by {{userBy}}", + "Room_Files": "Room Files", + "Room_Info_Edit": "Room Info Edit", + "Room_Info": "Room Info", + "Room_Members": "Room Members", + "Room_name_changed": "Room name changed to: {{name}} by {{userBy}}", + "SAVE": "SAVE", + "Save_Changes": "Save Changes", + "Save": "Save", + "Saved": "Saved", + "saving_preferences": "saving preferences", + "saving_profile": "saving profile", + "saving_settings": "saving settings", + "saved_to_gallery": "Saved to gallery", + "Save_Your_E2E_Password": "Save Your E2E Password", + "Save_Your_Encryption_Password": "Save Your Encryption Password", + "Save_Your_Encryption_Password_warning": "This password is not stored anywhere so save it carefully somewhere else.", + "Save_Your_Encryption_Password_info": "Notice that you lose your password, there is no way to recover it and you will lose access to your messages.", + "Search_Messages": "Search Messages", + "Search": "Search", + "Search_by": "Search by", + "Search_global_users": "Search for global users", + "Search_global_users_description": "If you turn-on, you can search for any user from others companies or servers.", + "Seconds": "{{second}} seconds", + "Security_and_privacy": "Security and privacy", + "Select_Avatar": "Select Avatar", + "Select_Server": "Select Server", + "Select_Users": "Select Users", + "Select_a_Channel": "Select a Channel", + "Select_a_Department": "Select a Department", + "Select_an_option": "Select an option", + "Select_a_User": "Select a User", + "Send": "Send", + "Send_audio_message": "Send audio message", + "Send_crash_report": "Send crash report", + "Send_message": "Send message", + "Send_me_the_code_again": "Send me the code again", + "Send_to": "Send to...", + "Sending_to": "Sending to", + "Sent_an_attachment": "Sent an attachment", + "Server": "Server", + "Servers": "Servers", + "Server_version": "Server version: {{version}}", + "Set_username_subtitle": "The username is used to allow others to mention you in messages", + "Set_custom_status": "Set custom status", + "Set_status": "Set status", + "Status_saved_successfully": "Status saved successfully!", + "Settings": "Settings", + "Settings_succesfully_changed": "Settings succesfully changed!", + "Share": "Share", + "Share_Link": "Share Link", + "Share_this_app": "Share this app", + "Show_more": "Show more..", + "Show_Unread_Counter": "Show Unread Counter", + "Show_Unread_Counter_Info": "Unread counter is displayed as a badge on the right of the channel, in the list", + "Sign_in_your_server": "Sign in your server", + "Sign_Up": "Sign Up", + "Some_field_is_invalid_or_empty": "Some field is invalid or empty", + "Sorting_by": "Sorting by {{key}}", + "Sound": "Sound", + "Star_room": "Star room", + "Star": "Star", + "Starred_Messages": "Starred Messages", + "starred": "starred", + "Starred": "Starred", + "Start_of_conversation": "Start of conversation", + "Start_a_Discussion": "Start a Discussion", + "Started_discussion": "Started a discussion:", + "Started_call": "Call started by {{userBy}}", + "Submit": "Submit", + "Table": "Table", + "Tags": "Tags", + "Take_a_photo": "Take a photo", + "Take_a_video": "Take a video", + "Take_it": "Take it!", + "tap_to_change_status": "tap to change status", + "Tap_to_view_servers_list": "Tap to view servers list", + "Terms_of_Service": " Terms of Service ", + "Theme": "Theme", + "The_user_wont_be_able_to_type_in_roomName": "The user won't be able to type in {{roomName}}", + "The_user_will_be_able_to_type_in_roomName": "The user will be able to type in {{roomName}}", + "There_was_an_error_while_action": "There was an error while {{action}}!", + "This_room_is_blocked": "This room is blocked", + "This_room_is_read_only": "This room is read only", + "Thread": "Thread", + "Threads": "Threads", + "Timezone": "Timezone", + "To": "To", + "topic": "topic", + "Topic": "Topic", + "Translate": "Translate", + "Try_again": "Try again", + "Two_Factor_Authentication": "Two-factor Authentication", + "Type_the_channel_name_here": "Type the channel name here", + "unarchive": "unarchive", + "UNARCHIVE": "UNARCHIVE", + "Unblock_user": "Unblock user", + "Unfavorite": "Unfavorite", + "Unfollowed_thread": "Unfollowed thread", + "Unmute": "Unmute", + "unmuted": "unmuted", + "Unpin": "Unpin", + "unread_messages": "unread", + "Unread": "Unread", + "Unread_on_top": "Unread on top", + "Unstar": "Unstar", + "Updating": "Updating...", + "Uploading": "Uploading", + "Upload_file_question_mark": "Upload file?", + "User": "User", + "Users": "Users", + "User_added_by": "User {{userAdded}} added by {{userBy}}", + "User_Info": "User Info", + "User_has_been_key": "User has been {{key}}", + "User_is_no_longer_role_by_": "{{user}} is no longer {{role}} by {{userBy}}", + "User_muted_by": "User {{userMuted}} muted by {{userBy}}", + "User_removed_by": "User {{userRemoved}} removed by {{userBy}}", + "User_sent_an_attachment": "{{user}} sent an attachment", + "User_unmuted_by": "User {{userUnmuted}} unmuted by {{userBy}}", + "User_was_set_role_by_": "{{user}} was set {{role}} by {{userBy}}", + "Username_is_empty": "Username is empty", + "Username": "Username", + "Username_or_email": "Username or email", + "Uses_server_configuration": "Uses server configuration", + "Validating": "Validating", + "Registration_Succeeded": "Registration Succeeded!", + "Verify": "Verify", + "Verify_email_title": "Registration Succeeded!", + "Verify_email_desc": "We have sent you an email to confirm your registration. If you do not receive an email shortly, please come back and try again.", + "Verify_your_email_for_the_code_we_sent": "Verify your email for the code we sent", + "Video_call": "Video call", + "View_Original": "View Original", + "Voice_call": "Voice call", + "Waiting_for_network": "Waiting for network...", + "Websocket_disabled": "Websocket is disabled for this server.\n{{contact}}", + "Welcome": "Welcome", + "What_are_you_doing_right_now": "What are you doing right now?", + "Whats_your_2fa": "What's your 2FA code?", + "Without_Servers": "Without Servers", + "Workspaces": "Workspaces", + "Would_you_like_to_return_the_inquiry": "Would you like to return the inquiry?", + "Write_External_Permission_Message": "Rocket.Chat needs access to your gallery so you can save images.", + "Write_External_Permission": "Gallery Permission", + "Yes": "Yes", + "Yes_action_it": "Yes, {{action}} it!", + "Yesterday": "Yesterday", + "You_are_in_preview_mode": "You are in preview mode", + "You_are_offline": "You are offline", + "You_can_search_using_RegExp_eg": "You can use RegExp. e.g. `/^text$/i`", + "You_colon": "You: ", + "you_were_mentioned": "you were mentioned", + "You_were_removed_from_channel": "You were removed from {{channel}}", + "you": "you", + "You": "You", + "Logged_out_by_server": "You've been logged out by the server. Please log in again.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "You need to access at least one Rocket.Chat server to share something.", + "You_need_to_verifiy_your_email_address_to_get_notications": "You need to verify your email address to get notifications", + "Your_certificate": "Your Certificate", + "Your_invite_link_will_expire_after__usesLeft__uses": "Your invite link will expire after {{usesLeft}} uses.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Your invite link will expire on {{date}} or after {{usesLeft}} uses.", + "Your_invite_link_will_expire_on__date__": "Your invite link will expire on {{date}}.", + "Your_invite_link_will_never_expire": "Your invite link will never expire.", + "Your_workspace": "Your workspace", + "Your_password_is": "Your password is", + "Version_no": "Version: {{version}}", + "You_will_not_be_able_to_recover_this_message": "You will not be able to recover this message!", + "You_will_unset_a_certificate_for_this_server": "You will unset a certificate for this server", + "Change_Language": "Change Language", + "Crash_report_disclaimer": "We never track the content of your chats. The crash report and analytics events only contains relevant information for us in order to identify and fix issues.", + "Type_message": "Type message", + "Room_search": "Rooms search", + "Room_selection": "Room selection 1...9", + "Next_room": "Next room", + "Previous_room": "Previous room", + "New_room": "New room", + "Upload_room": "Upload to room", + "Search_messages": "Search messages", + "Scroll_messages": "Scroll messages", + "Reply_latest": "Reply to latest", + "Reply_in_Thread": "Reply in Thread", + "Server_selection": "Server selection", + "Server_selection_numbers": "Server selection 1...9", + "Add_server": "Add server", + "New_line": "New line", + "You_will_be_logged_out_of_this_application": "You will be logged out of this application.", + "Clear": "Clear", + "This_will_clear_all_your_offline_data": "This will clear all your offline data.", + "This_will_remove_all_data_from_this_server": "This will remove all data from this server.", + "Mark_unread": "Mark Unread", + "Wait_activation_warning": "Before you can login, your account must be manually activated by an administrator.", + "Screen_lock": "Screen lock", + "Local_authentication_biometry_title": "Authenticate", + "Local_authentication_biometry_fallback": "Use passcode", + "Local_authentication_unlock_option": "Unlock with Passcode", + "Local_authentication_change_passcode": "Change Passcode", + "Local_authentication_info": "Note: if you forget the Passcode, you'll need to delete and reinstall the app.", + "Local_authentication_facial_recognition": "facial recognition", + "Local_authentication_fingerprint": "fingerprint", + "Local_authentication_unlock_with_label": "Unlock with {{label}}", + "Local_authentication_auto_lock_60": "After 1 minute", + "Local_authentication_auto_lock_300": "After 5 minutes", + "Local_authentication_auto_lock_900": "After 15 minutes", + "Local_authentication_auto_lock_1800": "After 30 minutes", + "Local_authentication_auto_lock_3600": "After 1 hour", + "Passcode_enter_title": "Enter your passcode", + "Passcode_choose_title": "Choose your new passcode", + "Passcode_choose_confirm_title": "Confirm your new passcode", + "Passcode_choose_error": "Passcodes don't match. Try again.", + "Passcode_choose_force_set": "Passcode required by admin", + "Passcode_app_locked_title": "App locked", + "Passcode_app_locked_subtitle": "Try again in {{timeLeft}} seconds", + "After_seconds_set_by_admin": "After {{seconds}} seconds (set by admin)", + "Dont_activate": "Don't activate now", + "Queued_chats": "Queued chats", + "Queue_is_empty": "Queue is empty", + "Logout_from_other_logged_in_locations": "Logout from other logged in locations", + "You_will_be_logged_out_from_other_locations": "You'll be logged out from other locations.", + "Logged_out_of_other_clients_successfully": "Logged out of other clients successfully", + "Logout_failed": "Logout failed!", + "Log_analytics_events": "Log analytics events", + "E2E_encryption_change_password_title": "Change Encryption Password", + "E2E_encryption_change_password_description": "You can now create encrypted private groups and direct messages. You may also change existing private groups or DMs to encrypted. \nThis is end to end encryption so the key to encode/decode your messages will not be saved on the server. For that reason you need to store your password somewhere safe. You will be required to enter it on other devices you wish to use e2e encryption on.", + "E2E_encryption_change_password_error": "Error while changing E2E key password!", + "E2E_encryption_change_password_success": "E2E key password changed successfully!", + "E2E_encryption_change_password_message": "Make sure you've saved it carefully somewhere else.", + "E2E_encryption_change_password_confirmation": "Yes, change it", + "E2E_encryption_reset_title": "Reset E2E Key", + "E2E_encryption_reset_description": "This option will remove your current E2E key and log you out. \nWhen you login again, Rocket.Chat will generate you a new key and restore your access to any encrypted room that has one or more members online. \nDue to the nature of the E2E encryption, Rocket.Chat will not be able to restore access to any encrypted room that has no member online.", + "E2E_encryption_reset_button": "Reset E2E Key", + "E2E_encryption_reset_error": "Error while resetting E2E key!", + "E2E_encryption_reset_message": "You're going to be logged out.", + "E2E_encryption_reset_confirmation": "Yes, reset it", + "Following": "Following", + "Threads_displaying_all": "Displaying All", + "Threads_displaying_following": "Displaying Following", + "Threads_displaying_unread": "Displaying Unread", + "No_threads": "There are no threads", + "No_threads_following": "You are not following any threads", + "No_threads_unread": "There are no unread threads", + "Messagebox_Send_to_channel": "Send to channel", + "Set_as_leader": "Set as leader", + "Set_as_moderator": "Set as moderator", + "Set_as_owner": "Set as owner", + "Remove_as_leader": "Remove as leader", + "Remove_as_moderator": "Remove as moderator", + "Remove_as_owner": "Remove as owner", + "Remove_from_room": "Remove from room", + "Ignore": "Ignore", + "Unignore": "Unignore", + "User_has_been_ignored": "User has been ignored", + "User_has_been_unignored": "User is no longer ignored", + "User_has_been_removed_from_s": "User has been removed from {{s}}", + "User__username__is_now_a_leader_of__room_name_": "User {{username}} is now a leader of {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "User {{username}} is now a moderator of {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "User {{username}} is now a owner of {{room_name}}", + "User__username__removed_from__room_name__leaders": "User {{username}} removed from {{room_name}} leaders", + "User__username__removed_from__room_name__moderators": "User {{username}} removed from {{room_name}} moderators", + "User__username__removed_from__room_name__owners": "User {{username}} removed from {{room_name}} owners", + "The_user_will_be_removed_from_s": "The user will be removed from {{s}}", + "Yes_remove_user": "Yes, remove user!", + "Direct_message": "Direct message", + "Message_Ignored": "Message ignored. Tap to display it.", + "Enter_workspace_URL": "Enter workspace URL", + "Workspace_URL_Example": "Ex. your-company.rocket.chat", + "This_room_encryption_has_been_enabled_by__username_": "This room's encryption has been enabled by {{username}}", + "This_room_encryption_has_been_disabled_by__username_": "This room's encryption has been disabled by {{username}}" +} \ No newline at end of file diff --git a/app/i18n/locales/es-ES.js b/app/i18n/locales/es-ES.js deleted file mode 100644 index 2f20da3bafa..00000000000 --- a/app/i18n/locales/es-ES.js +++ /dev/null @@ -1,456 +0,0 @@ -export default { - '1_person_reacted': '1 persona reaccionó', - '1_user': '1 usuario', - 'error-action-not-allowed': '{{action}} no permitida', - 'error-application-not-found': 'Aplicación no encontrada', - 'error-archived-duplicate-name': 'Hay un canal archivado con nombre {{room_name}}', - 'error-avatar-invalid-url': 'URL de avatar inválida: {{url}}', - 'error-avatar-url-handling': 'Error durante el procesamiento de ajuste de imagen de usuario desde una dirección URL ({{url}}) para {{username}}', - 'error-cant-invite-for-direct-room': 'No se puede invitar a los usuarios a salas de chat directas', - 'error-could-not-change-email': 'No es posible cambiar la dirección de correo electrónico', - 'error-could-not-change-name': 'No es posible cambiar el nombre', - 'error-could-not-change-username': 'No es posible cambiar el nombre de usuario', - 'error-delete-protected-role': 'No se puede eliminar un rol protegido', - 'error-department-not-found': 'Departamento no encontrado', - 'error-direct-message-file-upload-not-allowed': 'No se permite compartir archivos en mensajes directos', - 'error-duplicate-channel-name': 'Ya existe un canal con nombre {{channel_name}}', - 'error-email-domain-blacklisted': 'El dominio del correo electrónico está en la lista negra', - 'error-email-send-failed': 'Error al enviar el correo electrónico: {{message}}', - 'error-field-unavailable': '{{field}} ya está en uso :(', - 'error-file-too-large': 'El archivo es demasiado grande', - 'error-importer-not-defined': 'El importador no se configuró correctamente. Falta la clase de importación', - 'error-input-is-not-a-valid-field': '{{input}} no es válido {{field}}', - 'error-invalid-actionlink': 'Enlace de acción inválido', - 'error-invalid-arguments': 'Los argumentos no son correctos', - 'error-invalid-asset': 'El archivo archivo no es correcto', - 'error-invalid-channel': 'El canal no es correcto.', - 'error-invalid-channel-start-with-chars': 'Canal incorrecto. Debe comenzar con @ o #', - 'error-invalid-custom-field': 'Invalid custom field', - 'error-invalid-custom-field-name': 'Nombre inválido para el campo personalizado. Utilice sólo letras, números, guiones o guión bajo', - 'error-invalid-date': 'La fecha proporcionada no es correcta.', - 'error-invalid-description': 'La descipción no es correcta', - 'error-invalid-domain': 'El dominio no es correcto', - 'error-invalid-email': 'El email {{emai}} no es correcto', - 'error-invalid-email-address': 'La dirección de correo no es correcta', - 'error-invalid-file-height': 'La altura de la imagen no es correcta', - 'error-invalid-file-type': 'El formato del archivo no es correcto', - 'error-invalid-file-width': 'El ancho de la imagen o es correcto', - 'error-invalid-from-address': 'La dirección del remitente (FROM) no es correcta.', - 'error-invalid-integration': 'La integración no es correcta', - 'error-invalid-message': 'El mensaje no es correcto', - 'error-invalid-method': 'El método no es correcto', - 'error-invalid-name': 'El nombre no es correcto', - 'error-invalid-password': 'La contraseña no es correcta', - 'error-invalid-redirectUri': 'La URL de redirección no es correcta.', - 'error-invalid-role': 'El rol no es correcto', - 'error-invalid-room': 'La sala no es correcta', - 'error-invalid-room-name': 'No se puede asignar el nombre {{name}} a una sala.', - 'error-invalid-room-type': 'No se puede asginar el tipo {{type}} a una sala.', - 'error-invalid-settings': 'La configuración proporcionada no es correcta', - 'error-invalid-subscription': 'La subscripción no es correcta', - 'error-invalid-token': 'El token no es correcto', - 'error-invalid-triggerWords': 'El triggerWords no es correcto', - 'error-invalid-urls': 'Las URLs no son correctas', - 'error-invalid-user': 'El usuario no es correcto', - 'error-invalid-username': 'El nombre de usuario no es correcto', - 'error-invalid-webhook-response': 'El webhook no ha respondido con código de estado HTTP 200.', - 'error-message-deleting-blocked': 'No está permitido eliminar mensajes', - 'error-message-editing-blocked': 'No está permitido editar mensajes', - 'error-message-size-exceeded': 'El mensaje supera el tamaño máximo permitido', - 'error-missing-unsubscribe-link': 'Debes proporcionar el enlace para cancelar la suscripción [unsubscribe].', - 'error-no-tokens-for-this-user': 'No hay tokens asignados para el usuario', - 'error-not-allowed': 'No permitido', - 'error-not-authorized': 'No autorizado', - 'error-push-disabled': 'El Push está desactivado', - 'error-remove-last-owner': 'El usuario el único propietario existente. Debes establecer un nuevo propietario antes de eliminarlo.', - 'error-role-in-use': 'No puedes eliminar el rol dado que está en uso', - 'error-role-name-required': 'Debes indicar el nombre del rol', - 'error-the-field-is-required': 'El campo {{field}} es obligatorio.', - 'error-too-many-requests': 'Hemos recibido demasiadas peticiones. Debes esperar {{seconds}} segundos antes de continuar. Por favor, sé paciente.', - 'error-user-is-not-activated': 'El usuario no está activo', - 'error-user-has-no-roles': 'El usuario no tiene roles', - 'error-user-limit-exceeded': 'El número de usuarios que quieres invitiar al canal #channel_name supera el límite establecido por el adminitrador.', - 'error-user-not-in-room': 'El usuario no está en la sala', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'El registro de usuario está deshabilitador', - 'error-user-registration-secret': 'El registro de usuarios sólo está permitido por URL secretas', - 'error-you-are-last-owner': 'El usuario el único propietario existente. Debes establecer un nuevo propietario antes de abandonar la sala.', - Actions: 'Acciones', - activity: 'actividad', - Activity: 'Actividad', - Add_Reaction: 'Reaccionar', - Add_Server: 'Añadir servidor', - Add_user: 'Añadir usuario', - Admin_Panel: 'Panel de Control', - Alert: 'Alerta', - alert: 'alerta', - alerts: 'alertas', - All_users_in_the_channel_can_write_new_messages: 'Todos los usuarios en el canal pueden escribir mensajes', - All: 'Todos', - All_Messages: 'Todos los mensajes', - Allow_Reactions: 'Permitir reacciones', - Alphabetical: 'Alfabético', - and_more: 'más', - and: 'y', - announcement: 'anuncio', - Announcement: 'Anuncio', - Apply_Your_Certificate: 'Applica tu Certificación', - ARCHIVE: 'FICHERO', - archive: 'Fichero', - are_typing: 'escribiendo', - Are_you_sure_question_mark: '¿Estás seguro?', - Are_you_sure_you_want_to_leave_the_room: '¿Deseas salir de la sala {{room}}?', - Audio: 'Audio', - Authenticating: 'Autenticando', - Automatic: 'Automático', - Auto_Translate: 'Auto-Translate', - Avatar_changed_successfully: 'Has cambiado tu Avatar!', - Avatar_Url: 'URL del Avatar', - Away: 'Ausente', - Back: 'Volver', - Black: 'Black', - Block_user: 'Bloquear usuario', - Broadcast_channel_Description: 'Sólo los usuario permitidos pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.', - Broadcast_Channel: 'Canal de Transmisión', - Busy: 'Ocupado', - By_proceeding_you_are_agreeing: 'Al proceder estarás de acuerdo', - Cancel_editing: 'Cancelar edición', - Cancel_recording: 'Cancelar grabación', - Cancel: 'Cancelar', - changing_avatar: 'cambiando avatar', - creating_channel: 'creando channel', - Channel_Name: 'Nombre sala', - Channels: 'Salas', - Chats: 'Chats', - Call_already_ended: 'La llamada ya ha finalizado!', - Click_to_join: 'Unirme!', - Close: 'Cerrar', - Close_emoji_selector: 'Cerrar selector de emojis', - Choose: 'Seleccionar', - Choose_from_library: 'Seleccionar desde Galería', - Choose_file: 'Seleccionar Archivo', - Code: 'Código', - Collaborative: 'Colaborativo', - Confirm: 'Confirmar', - Connect: 'Conectar', - Connected: 'Conectado', - connecting_server: 'conectando a servidor', - Connecting: 'Conectando...', - Contact_us: 'Contactar', - Contact_your_server_admin: 'Contacta con el administrador.', - Continue_with: 'Continuar con', - Copied_to_clipboard: 'Copiado al portapapeles!', - Copy: 'Copiar', - Permalink: 'Enlace permanente', - Certificate_password: 'Contraseña del certificado', - Whats_the_password_for_your_certificate: '¿Cuál es la contraseña de tu cerficiado?', - Create_account: 'Crear una cuenta', - Create_Channel: 'Crear Sala', - Created_snippet: 'crear snippet', - Create_a_new_workspace: 'Crear un Workspace', - Create: 'Crear', - Dark: 'Óscuro', - Dark_level: 'Nivel', - Default: 'Por defecto', - Delete_Room_Warning: 'Eliminar a un usuario causará la eliminación de todos los mensajes creados por dicho usuario. Esta operación no se puede deshacer.', - delete: 'eliminar', - Delete: 'Eliminar', - DELETE: 'ELIMINAR', - deleting_room: 'eliminando sala', - description: 'descripción', - Description: 'Descripción', - Desktop_Options: 'Opciones De Escritorio', - Directory: 'Directorio', - Direct_Messages: 'Mensajes directo', - Disable_notifications: 'Desactivar notificaciones', - Discussions: 'Conversaciones', - Dont_Have_An_Account: '¿Todavía no tienes una cuenta?', - Do_you_have_a_certificate: '¿Tienes un certificado?', - Do_you_really_want_to_key_this_room_question_mark: '¿Deseas {{key}} de esta sala?', - edit: 'editar', - edited: 'editado', - Edit: 'Editar', - Email_or_password_field_is_empty: 'El email o la contraseña están vacios', - Email: 'E-mail', - email: 'e-mail', - Enable_Auto_Translate: 'Permitir Auto-Translate', - Enable_notifications: 'Permitir notificaciones', - Everyone_can_access_this_channel: 'Todos los usuarios pueden acceder a este canal', - Error_uploading: 'Error en la subida', - Favorite: 'Favorito', - Favorites: 'Favoritos', - Files: 'Archivos', - File_description: 'Descripción del archivo', - File_name: 'Nombre del archivo', - Finish_recording: 'Finalizar grabación', - Following_thread: 'Siguiendo hilo', - For_your_security_you_must_enter_your_current_password_to_continue: 'Por seguridad, debes introducir tu contraseña para continuar', - Forgot_password_If_this_email_is_registered: 'Si este email está registrado, te enviaremos las instrucciones para resetear tu contraseña.Si no recibes un email en un rato, vuelve aquí e inténtalo de nuevo.', - Forgot_password: 'Restablecer mi contraseña', - Forgot_Password: 'Restabler mi Contraseña', - Full_table: 'Click para ver la tabla completa', - Group_by_favorites: 'Agrupar por favoritos', - Group_by_type: 'Agrupar por tipo', - Hide: 'Ocultar', - Has_joined_the_channel: 'se ha unido al canal', - Has_joined_the_conversation: 'se ha unido a la conversación', - Has_left_the_channel: 'ha dejado el canal', - In_App_And_Desktop: 'In-app and Desktop', - In_App_and_Desktop_Alert_info: 'Muestra un banner en la parte superior de la pantalla cuando la aplicación está abierta y muestra una notificación en el escritorio', - Invisible: 'Invisible', - Invite: 'Invitar', - is_a_valid_RocketChat_instance: 'es una instancia válida Rocket.Chat', - is_not_a_valid_RocketChat_instance: 'no es una instancia válida Rocket.Chat', - is_typing: 'escribiendo', - Invalid_server_version: 'El servidor que intentas conectar está usando una versión que ya no es soportada por la aplicación : {{currentVersion}}. Requerimos una versión {{minVersion}}.', - Join: 'Conectar', - Just_invited_people_can_access_this_channel: 'Sólo gente invitada puede acceder a este canal.', - Language: 'Idioma', - last_message: 'último mensaje', - Leave_channel: 'Abandonar canal', - leaving_room: 'abandonando sala', - leave: 'abandonar', - Legal: 'Legal', - Light: 'Claro', - License: 'Licencia', - Livechat: 'Livechat', - Login: 'Acceder', - Login_error: '¡Sus credenciales fueron rechazadas! Por favor, inténtelo de nuevo.', - Login_with: 'Acceder con', - Logout: 'Salir', - members: 'miembros', - Members: 'Miembros', - Mentioned_Messages: 'Mensajes mencionados', - mentioned: 'mencionado', - Mentions: 'Menciones', - Message_accessibility: 'Mensaje de {{user}} a las {{time}}: {{message}}', - Message_actions: 'Acciones de mensaje', - Message_pinned: 'Mensaje fijado', - Message_removed: 'Mensaje eliminado', - message: 'mensaje', - messages: 'mensajes', - Messages: 'Mensajes', - Message_Reported: 'Mensaje notificado', - Microphone_Permission_Message: 'Rocket.Chat necesita acceso a su micrófono para que pueda enviar un mensaje de audio.', - Microphone_Permission: 'Permiso de micrófono', - Mute: 'Mutear', - muted: 'muteado', - My_servers: 'Mis servidores', - N_people_reacted: 'Han reaccionado {{n}} personas', - N_users: '{{n}} usuarios', - name: 'nombre', - Name: 'Nombre', - New_Message: 'Nuevo mensaje', - New_Password: 'Nueva contraseña', - New_Server: 'Nuevo servidor', - Next: 'Siguiente', - No_files: 'No hay archivos', - No_mentioned_messages: 'No hay mensajes mencionados', - No_pinned_messages: 'No hay mensajes fijados', - No_results_found: 'No hay resultados', - No_starred_messages: 'No hay mensajes destacados', - No_thread_messages: 'No hay hilots', - No_Message: 'Sin mensajes', - No_messages_yet: 'No hay todavía mensajes', - No_Reactions: 'No hay reacciones', - No_Read_Receipts: 'No hay confirmaciones de lectura', - Not_logged: 'No logueado', - Not_RC_Server: 'Esto no es un servidor de Rocket.Chat.\n{{contact}}', - Nothing: 'Nada', - Nothing_to_save: 'No hay nada para guardar!', - Notify_active_in_this_room: 'Notificar usuarios activos en esta sala', - Notify_all_in_this_room: 'Notificar a todos en esta sala', - Notifications: 'Notificaciones', - Notification_Duration: 'Duración notificación', - Notification_Preferences: 'Configuración de notificaciones', - Offline: 'Sin conexión', - Oops: 'Oops!', - Onboarding_title: 'Bienvenido a Rocket.Chat', - Online: 'Conectado', - Only_authorized_users_can_write_new_messages: 'Sólo pueden escribir mensajes usuarios autorizados', - Open_emoji_selector: 'Abrir selector de emojis', - Open_Source_Communication: 'Comunicación Open Source', - Password: 'Contraseña', - Permalink_copied_to_clipboard: 'Enlace permanente copiado al portapapeles!', - Pin: 'Fijar', - Pinned_Messages: 'Mensajes fijados', - pinned: 'fijado', - Pinned: 'Fijado', - Please_enter_your_password: 'Por favor introduce tu contraseña', - Preferences: 'Configuración', - Preferences_saved: 'Configuración guardada!', - Privacy_Policy: 'Política de Privacidad', - Private_Channel: 'Canal privado', - Private_Groups: 'Grupos privados', - Private: 'Privado', - Processing: 'Procesando...', - Profile_saved_successfully: 'Perfil guardado correctamente!', - Profile: 'Perfil', - Public_Channel: 'Canal público', - Public: 'Público', - Push_Notifications: 'Push Notifications', - Push_Notifications_Alert_Info: 'Estas notificaciones se le entregan cuando la aplicación no está abierta', - Quote: 'Citar', - Reactions_are_disabled: 'Las reacciones están desactivadas', - Reactions_are_enabled: 'Las reacciones están habilitadas', - Reactions: 'Reacciones', - Read: 'Leer', - Read_Only_Channel: 'Canal de sólo lectura', - Read_Only: 'Sólo lectura ', - Read_Receipt: 'Comprobante de lectura', - Receive_Group_Mentions: 'Recibir menciones de grupo', - Receive_Group_Mentions_Info: 'Recibir menciones @all y @here', - Register: 'Registrar', - Repeat_Password: 'Repetir contraseña', - Replied_on: 'Respondido el:', - replies: 'respuestas', - reply: 'respuesta', - Reply: 'Respuesta', - Report: 'Informe', - Receive_Notification: 'Recibir notificación', - Receive_notifications_from: 'Recibir notificación de {{name}}', - Resend: 'Reenviar', - Reset_password: 'Resetear contraseña', - resetting_password: 'reseteando contraseña', - RESET: 'RESET', - Roles: 'Roles', - Room_actions: 'Acciones de sala', - Room_changed_announcement: 'El anuncio de la sala cambió a: {{announcement}} por {{userBy}}', - Room_changed_description: 'La descripción de la sala cambió a: {{description}} por {{userBy}}', - Room_changed_privacy: 'El tipo de la sala cambió a: {{type}} por {{userBy}}', - Room_changed_topic: 'El asunto de la sala cambió a: {{topic}} por {{userBy}}', - Room_Files: 'Archivos', - Room_Info_Edit: 'Editar información de la sala', - Room_Info: 'Información de la sala', - Room_Members: 'Miembros de la sala', - Room_name_changed: 'El nombre de la sala cambió a: {{name}} por {{userBy}}', - SAVE: 'SAVE', - Save_Changes: 'Guardar cambios', - Save: 'Guardar', - saving_preferences: 'guardando preferencias', - saving_profile: 'guardando perfil', - saving_settings: 'guardando confiración', - Search_Messages: 'Buscar mensajes', - Search: 'Buscar', - Search_by: 'Buscar por', - Search_global_users: 'Buscar por usuarios globales', - Search_global_users_description: 'Si lo activas, puedes buscar cualquier usuario de otras empresas o servidores.', - Seconds: '{{second}} segundos', - Select_Avatar: 'Selecciona avatar', - Select_Server: 'Selecciona servidor', - Select_Users: 'Selecciona usuarios', - Send: 'Enviar', - Send_audio_message: 'Enviar nota de audio', - Send_crash_report: 'Enviar informe errores', - Send_message: 'Enviar mensaje', - Send_to: 'Enviar a..', - Sent_an_attachment: 'Enviar un adjunto', - Server: 'Servidor', - Servers: 'Servidores', - Server_version: 'Versión servidor: {{version}}', - Set_username_subtitle: 'El nombre de usuario se utiliza para permitir que otros le mencionen en los mensajes', - Settings: 'Configuración', - Settings_succesfully_changed: 'Configuración cambiada correctamente!', - Share: 'Compartir', - Share_this_app: 'Compartir esta App', - Show_Unread_Counter: 'Mostrar contador No leídos', - Show_Unread_Counter_Info: 'El contador de no leídos se muestra como una insignia a la derecha del canal, en la lista', - Sign_in_your_server: 'Accede a tu servidor', - Sign_Up: 'Acceder', - Some_field_is_invalid_or_empty: 'Algún campo es incorrecto o vacío', - Sorting_by: 'Ordenado por {{key}}', - Sound: 'Sonido', - Star_room: 'Destacar sala', - Star: 'Destacar', - Starred_Messages: 'Mensajes destacados', - starred: 'destacado', - Starred: 'Destacado', - Start_of_conversation: 'Comiezo de la conversación', - Started_discussion: 'Comenzar una conversación:', - Started_call: 'Llamada iniciada por {{userBy}}', - Submit: 'Enviar', - Table: 'Tabla', - Take_a_photo: 'Enviar Foto', - Take_a_video: 'Enviar Vídeo', - tap_to_change_status: 'pulsa para cambiar el estado', - Tap_to_view_servers_list: 'Pulsa para ver la lista de servidores', - Terms_of_Service: 'Términos de servicio', - Theme: 'Tema', - There_was_an_error_while_action: 'Ha habido un error mientras {{action}}!', - This_room_is_blocked: 'La sala está bloqueada', - This_room_is_read_only: 'Esta sala es de sólo lectura', - Thread: 'Hilo', - Threads: 'Hilos', - Timezone: 'Zona horaria', - To: 'Para', - topic: 'asunto', - Topic: 'Asunto', - Translate: 'Traducir', - Try_again: 'Intentar de nuevo', - Two_Factor_Authentication: 'Autenticación de doble factor', - Type_the_channel_name_here: 'Escribe el nombre del canal aquí', - unarchive: 'reactivar', - UNARCHIVE: 'UNARCHIVE', - Unblock_user: 'Desbloquear usuario', - Unfavorite: 'Quitar Favorito', - Unfollowed_thread: 'Dejar de seguir el Hilo', - Unmute: 'Desmutear', - unmuted: 'Desmuteado', - Unpin: 'Quitar estado Fijado', - unread_messages: 'marcar como No leído', - Unread: 'Marcar como No leído', - Unread_on_top: 'Mensajes No leídos en la parte superior', - Unstar: 'Quitar Destacado', - Updating: 'Actualizando...', - Uploading: 'Subiendo', - Upload_file_question_mark: 'Subir fichero?', - Users: 'Usuarios', - User_added_by: 'Usuario {{userAdded}} añadido por {{userBy}}', - User_has_been_key: 'El usuario ha sido {{key}}', - User_is_no_longer_role_by_: '{{user}} ha dejado de ser {{role}} por {{userBy}}', - User_muted_by: 'Usuario {{userMuted}} muteado por {{userBy}}', - User_removed_by: 'Usuario {{userRemoved}} eliminado por {{userBy}}', - User_sent_an_attachment: '{{user}} envío un adjunto', - User_unmuted_by: 'Usuario {{userUnmuted}} desmuteado por {{userBy}}', - User_was_set_role_by_: '{{user}} ha comenzado a ser {{role}} por {{userBy}}', - Username_is_empty: 'Nombre de usuario está vacío', - Username: 'Nombre de usuario', - Username_or_email: 'Nombre de usuario o email', - Validating: 'Validando', - Video_call: 'Vídeo llamada', - View_Original: 'Ver original', - Voice_call: 'Llamada de voz', - Websocket_disabled: 'Websocket está deshabilitado para este servidor.\n{{contact}}', - Welcome: 'Bienvenido', - Whats_your_2fa: '¿Cuál es tu código 2FA?', - Without_Servers: 'Sin servidores', - Yes_action_it: 'Sí, {{action}}!', - Yesterday: 'Ayer', - You_are_in_preview_mode: 'Estás en modo Vista Previa', - You_are_offline: 'Estás desconectado', - You_can_search_using_RegExp_eg: 'Puedes usar expresiones regulares. Por ejemplo, `/^text$/i`', - You_colon: 'Tú: ', - you_were_mentioned: 'has sido mencionado', - you: 'tú', - You: 'Tú', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Necesita acceder al menos a un servidor Rocket.Chat para compartir algo.', - Your_certificate: 'Tu certificado', - Version_no: 'Versión: {{version}}', - You_will_not_be_able_to_recover_this_message: 'No podrás recuperar este mensaje!', - Change_Language: 'Cambiar idioma', - Crash_report_disclaimer: 'Nunca rastreamos el contenido de sus conversaciones. El informe del error sólo contiene información relevante para nosotros con el fin de identificar los problemas y solucionarlos.', - Type_message: 'Escribir mensaje', - Room_search: 'Búsqueda de salas', - Room_selection: 'Selecciona sala 1...9', - Next_room: 'Siguiente sala', - Previous_room: 'Sala anterior', - New_room: 'Nueva sala', - Upload_room: 'Subir a sala', - Search_messages: 'Buscar mensajes', - Scroll_messages: 'Scroll mensajes', - Reply_latest: 'Responder al último', - Server_selection: 'Seleccionar servidor', - Server_selection_numbers: 'Seleccionar servidor 1...9', - Add_server: 'Añadir servidor', - New_line: 'Nueva línea' -}; diff --git a/app/i18n/locales/es-ES.json b/app/i18n/locales/es-ES.json new file mode 100644 index 00000000000..e03f4f6c3b7 --- /dev/null +++ b/app/i18n/locales/es-ES.json @@ -0,0 +1,456 @@ +{ + "1_person_reacted": "1 persona reaccionó", + "1_user": "1 usuario", + "error-action-not-allowed": "{{action}} no permitida", + "error-application-not-found": "Aplicación no encontrada", + "error-archived-duplicate-name": "Hay un canal archivado con nombre {{room_name}}", + "error-avatar-invalid-url": "URL de avatar inválida: {{url}}", + "error-avatar-url-handling": "Error durante el procesamiento de ajuste de imagen de usuario desde una dirección URL ({{url}}) para {{username}}", + "error-cant-invite-for-direct-room": "No se puede invitar a los usuarios a salas de chat directas", + "error-could-not-change-email": "No es posible cambiar la dirección de correo electrónico", + "error-could-not-change-name": "No es posible cambiar el nombre", + "error-could-not-change-username": "No es posible cambiar el nombre de usuario", + "error-delete-protected-role": "No se puede eliminar un rol protegido", + "error-department-not-found": "Departamento no encontrado", + "error-direct-message-file-upload-not-allowed": "No se permite compartir archivos en mensajes directos", + "error-duplicate-channel-name": "Ya existe un canal con nombre {{channel_name}}", + "error-email-domain-blacklisted": "El dominio del correo electrónico está en la lista negra", + "error-email-send-failed": "Error al enviar el correo electrónico: {{message}}", + "error-field-unavailable": "{{field}} ya está en uso :(", + "error-file-too-large": "El archivo es demasiado grande", + "error-importer-not-defined": "El importador no se configuró correctamente. Falta la clase de importación", + "error-input-is-not-a-valid-field": "{{input}} no es válido {{field}}", + "error-invalid-actionlink": "Enlace de acción inválido", + "error-invalid-arguments": "Los argumentos no son correctos", + "error-invalid-asset": "El archivo archivo no es correcto", + "error-invalid-channel": "El canal no es correcto.", + "error-invalid-channel-start-with-chars": "Canal incorrecto. Debe comenzar con @ o #", + "error-invalid-custom-field": "Invalid custom field", + "error-invalid-custom-field-name": "Nombre inválido para el campo personalizado. Utilice sólo letras, números, guiones o guión bajo", + "error-invalid-date": "La fecha proporcionada no es correcta.", + "error-invalid-description": "La descipción no es correcta", + "error-invalid-domain": "El dominio no es correcto", + "error-invalid-email": "El email {{emai}} no es correcto", + "error-invalid-email-address": "La dirección de correo no es correcta", + "error-invalid-file-height": "La altura de la imagen no es correcta", + "error-invalid-file-type": "El formato del archivo no es correcto", + "error-invalid-file-width": "El ancho de la imagen o es correcto", + "error-invalid-from-address": "La dirección del remitente (FROM) no es correcta.", + "error-invalid-integration": "La integración no es correcta", + "error-invalid-message": "El mensaje no es correcto", + "error-invalid-method": "El método no es correcto", + "error-invalid-name": "El nombre no es correcto", + "error-invalid-password": "La contraseña no es correcta", + "error-invalid-redirectUri": "La URL de redirección no es correcta.", + "error-invalid-role": "El rol no es correcto", + "error-invalid-room": "La sala no es correcta", + "error-invalid-room-name": "No se puede asignar el nombre {{name}} a una sala.", + "error-invalid-room-type": "No se puede asginar el tipo {{type}} a una sala.", + "error-invalid-settings": "La configuración proporcionada no es correcta", + "error-invalid-subscription": "La subscripción no es correcta", + "error-invalid-token": "El token no es correcto", + "error-invalid-triggerWords": "El triggerWords no es correcto", + "error-invalid-urls": "Las URLs no son correctas", + "error-invalid-user": "El usuario no es correcto", + "error-invalid-username": "El nombre de usuario no es correcto", + "error-invalid-webhook-response": "El webhook no ha respondido con código de estado HTTP 200.", + "error-message-deleting-blocked": "No está permitido eliminar mensajes", + "error-message-editing-blocked": "No está permitido editar mensajes", + "error-message-size-exceeded": "El mensaje supera el tamaño máximo permitido", + "error-missing-unsubscribe-link": "Debes proporcionar el enlace para cancelar la suscripción [unsubscribe].", + "error-no-tokens-for-this-user": "No hay tokens asignados para el usuario", + "error-not-allowed": "No permitido", + "error-not-authorized": "No autorizado", + "error-push-disabled": "El Push está desactivado", + "error-remove-last-owner": "El usuario el único propietario existente. Debes establecer un nuevo propietario antes de eliminarlo.", + "error-role-in-use": "No puedes eliminar el rol dado que está en uso", + "error-role-name-required": "Debes indicar el nombre del rol", + "error-the-field-is-required": "El campo {{field}} es obligatorio.", + "error-too-many-requests": "Hemos recibido demasiadas peticiones. Debes esperar {{seconds}} segundos antes de continuar. Por favor, sé paciente.", + "error-user-is-not-activated": "El usuario no está activo", + "error-user-has-no-roles": "El usuario no tiene roles", + "error-user-limit-exceeded": "El número de usuarios que quieres invitiar al canal #channel_name supera el límite establecido por el adminitrador.", + "error-user-not-in-room": "El usuario no está en la sala", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "El registro de usuario está deshabilitador", + "error-user-registration-secret": "El registro de usuarios sólo está permitido por URL secretas", + "error-you-are-last-owner": "El usuario el único propietario existente. Debes establecer un nuevo propietario antes de abandonar la sala.", + "Actions": "Acciones", + "activity": "actividad", + "Activity": "Actividad", + "Add_Reaction": "Reaccionar", + "Add_Server": "Añadir servidor", + "Add_user": "Añadir usuario", + "Admin_Panel": "Panel de Control", + "Alert": "Alerta", + "alert": "alerta", + "alerts": "alertas", + "All_users_in_the_channel_can_write_new_messages": "Todos los usuarios en el canal pueden escribir mensajes", + "All": "Todos", + "All_Messages": "Todos los mensajes", + "Allow_Reactions": "Permitir reacciones", + "Alphabetical": "Alfabético", + "and_more": "más", + "and": "y", + "announcement": "anuncio", + "Announcement": "Anuncio", + "Apply_Your_Certificate": "Applica tu Certificación", + "ARCHIVE": "FICHERO", + "archive": "Fichero", + "are_typing": "escribiendo", + "Are_you_sure_question_mark": "¿Estás seguro?", + "Are_you_sure_you_want_to_leave_the_room": "¿Deseas salir de la sala {{room}}?", + "Audio": "Audio", + "Authenticating": "Autenticando", + "Automatic": "Automático", + "Auto_Translate": "Auto-Translate", + "Avatar_changed_successfully": "Has cambiado tu Avatar!", + "Avatar_Url": "URL del Avatar", + "Away": "Ausente", + "Back": "Volver", + "Black": "Black", + "Block_user": "Bloquear usuario", + "Broadcast_channel_Description": "Sólo los usuario permitidos pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.", + "Broadcast_Channel": "Canal de Transmisión", + "Busy": "Ocupado", + "By_proceeding_you_are_agreeing": "Al proceder estarás de acuerdo", + "Cancel_editing": "Cancelar edición", + "Cancel_recording": "Cancelar grabación", + "Cancel": "Cancelar", + "changing_avatar": "cambiando avatar", + "creating_channel": "creando channel", + "Channel_Name": "Nombre sala", + "Channels": "Salas", + "Chats": "Chats", + "Call_already_ended": "La llamada ya ha finalizado!", + "Click_to_join": "Unirme!", + "Close": "Cerrar", + "Close_emoji_selector": "Cerrar selector de emojis", + "Choose": "Seleccionar", + "Choose_from_library": "Seleccionar desde Galería", + "Choose_file": "Seleccionar Archivo", + "Code": "Código", + "Collaborative": "Colaborativo", + "Confirm": "Confirmar", + "Connect": "Conectar", + "Connected": "Conectado", + "connecting_server": "conectando a servidor", + "Connecting": "Conectando...", + "Contact_us": "Contactar", + "Contact_your_server_admin": "Contacta con el administrador.", + "Continue_with": "Continuar con", + "Copied_to_clipboard": "Copiado al portapapeles!", + "Copy": "Copiar", + "Permalink": "Enlace permanente", + "Certificate_password": "Contraseña del certificado", + "Whats_the_password_for_your_certificate": "¿Cuál es la contraseña de tu cerficiado?", + "Create_account": "Crear una cuenta", + "Create_Channel": "Crear Sala", + "Created_snippet": "crear snippet", + "Create_a_new_workspace": "Crear un Workspace", + "Create": "Crear", + "Dark": "Óscuro", + "Dark_level": "Nivel", + "Default": "Por defecto", + "Delete_Room_Warning": "Eliminar a un usuario causará la eliminación de todos los mensajes creados por dicho usuario. Esta operación no se puede deshacer.", + "delete": "eliminar", + "Delete": "Eliminar", + "DELETE": "ELIMINAR", + "deleting_room": "eliminando sala", + "description": "descripción", + "Description": "Descripción", + "Desktop_Options": "Opciones De Escritorio", + "Directory": "Directorio", + "Direct_Messages": "Mensajes directo", + "Disable_notifications": "Desactivar notificaciones", + "Discussions": "Conversaciones", + "Dont_Have_An_Account": "¿Todavía no tienes una cuenta?", + "Do_you_have_a_certificate": "¿Tienes un certificado?", + "Do_you_really_want_to_key_this_room_question_mark": "¿Deseas {{key}} de esta sala?", + "edit": "editar", + "edited": "editado", + "Edit": "Editar", + "Email_or_password_field_is_empty": "El email o la contraseña están vacios", + "Email": "E-mail", + "email": "e-mail", + "Enable_Auto_Translate": "Permitir Auto-Translate", + "Enable_notifications": "Permitir notificaciones", + "Everyone_can_access_this_channel": "Todos los usuarios pueden acceder a este canal", + "Error_uploading": "Error en la subida", + "Favorite": "Favorito", + "Favorites": "Favoritos", + "Files": "Archivos", + "File_description": "Descripción del archivo", + "File_name": "Nombre del archivo", + "Finish_recording": "Finalizar grabación", + "Following_thread": "Siguiendo hilo", + "For_your_security_you_must_enter_your_current_password_to_continue": "Por seguridad, debes introducir tu contraseña para continuar", + "Forgot_password_If_this_email_is_registered": "Si este email está registrado, te enviaremos las instrucciones para resetear tu contraseña.Si no recibes un email en un rato, vuelve aquí e inténtalo de nuevo.", + "Forgot_password": "Restablecer mi contraseña", + "Forgot_Password": "Restabler mi Contraseña", + "Full_table": "Click para ver la tabla completa", + "Group_by_favorites": "Agrupar por favoritos", + "Group_by_type": "Agrupar por tipo", + "Hide": "Ocultar", + "Has_joined_the_channel": "se ha unido al canal", + "Has_joined_the_conversation": "se ha unido a la conversación", + "Has_left_the_channel": "ha dejado el canal", + "In_App_And_Desktop": "In-app and Desktop", + "In_App_and_Desktop_Alert_info": "Muestra un banner en la parte superior de la pantalla cuando la aplicación está abierta y muestra una notificación en el escritorio", + "Invisible": "Invisible", + "Invite": "Invitar", + "is_a_valid_RocketChat_instance": "es una instancia válida Rocket.Chat", + "is_not_a_valid_RocketChat_instance": "no es una instancia válida Rocket.Chat", + "is_typing": "escribiendo", + "Invalid_server_version": "El servidor que intentas conectar está usando una versión que ya no es soportada por la aplicación : {{currentVersion}}. Requerimos una versión {{minVersion}}.", + "Join": "Conectar", + "Just_invited_people_can_access_this_channel": "Sólo gente invitada puede acceder a este canal.", + "Language": "Idioma", + "last_message": "último mensaje", + "Leave_channel": "Abandonar canal", + "leaving_room": "abandonando sala", + "leave": "abandonar", + "Legal": "Legal", + "Light": "Claro", + "License": "Licencia", + "Livechat": "Livechat", + "Login": "Acceder", + "Login_error": "¡Sus credenciales fueron rechazadas! Por favor, inténtelo de nuevo.", + "Login_with": "Acceder con", + "Logout": "Salir", + "members": "miembros", + "Members": "Miembros", + "Mentioned_Messages": "Mensajes mencionados", + "mentioned": "mencionado", + "Mentions": "Menciones", + "Message_accessibility": "Mensaje de {{user}} a las {{time}}: {{message}}", + "Message_actions": "Acciones de mensaje", + "Message_pinned": "Mensaje fijado", + "Message_removed": "Mensaje eliminado", + "message": "mensaje", + "messages": "mensajes", + "Messages": "Mensajes", + "Message_Reported": "Mensaje notificado", + "Microphone_Permission_Message": "Rocket.Chat necesita acceso a su micrófono para que pueda enviar un mensaje de audio.", + "Microphone_Permission": "Permiso de micrófono", + "Mute": "Mutear", + "muted": "muteado", + "My_servers": "Mis servidores", + "N_people_reacted": "Han reaccionado {{n}} personas", + "N_users": "{{n}} usuarios", + "name": "nombre", + "Name": "Nombre", + "New_Message": "Nuevo mensaje", + "New_Password": "Nueva contraseña", + "New_Server": "Nuevo servidor", + "Next": "Siguiente", + "No_files": "No hay archivos", + "No_mentioned_messages": "No hay mensajes mencionados", + "No_pinned_messages": "No hay mensajes fijados", + "No_results_found": "No hay resultados", + "No_starred_messages": "No hay mensajes destacados", + "No_thread_messages": "No hay hilots", + "No_Message": "Sin mensajes", + "No_messages_yet": "No hay todavía mensajes", + "No_Reactions": "No hay reacciones", + "No_Read_Receipts": "No hay confirmaciones de lectura", + "Not_logged": "No logueado", + "Not_RC_Server": "Esto no es un servidor de Rocket.Chat.\n{{contact}}", + "Nothing": "Nada", + "Nothing_to_save": "No hay nada para guardar!", + "Notify_active_in_this_room": "Notificar usuarios activos en esta sala", + "Notify_all_in_this_room": "Notificar a todos en esta sala", + "Notifications": "Notificaciones", + "Notification_Duration": "Duración notificación", + "Notification_Preferences": "Configuración de notificaciones", + "Offline": "Sin conexión", + "Oops": "Oops!", + "Onboarding_title": "Bienvenido a Rocket.Chat", + "Online": "Conectado", + "Only_authorized_users_can_write_new_messages": "Sólo pueden escribir mensajes usuarios autorizados", + "Open_emoji_selector": "Abrir selector de emojis", + "Open_Source_Communication": "Comunicación Open Source", + "Password": "Contraseña", + "Permalink_copied_to_clipboard": "Enlace permanente copiado al portapapeles!", + "Pin": "Fijar", + "Pinned_Messages": "Mensajes fijados", + "pinned": "fijado", + "Pinned": "Fijado", + "Please_enter_your_password": "Por favor introduce tu contraseña", + "Preferences": "Configuración", + "Preferences_saved": "Configuración guardada!", + "Privacy_Policy": "Política de Privacidad", + "Private_Channel": "Canal privado", + "Private_Groups": "Grupos privados", + "Private": "Privado", + "Processing": "Procesando...", + "Profile_saved_successfully": "Perfil guardado correctamente!", + "Profile": "Perfil", + "Public_Channel": "Canal público", + "Public": "Público", + "Push_Notifications": "Push Notifications", + "Push_Notifications_Alert_Info": "Estas notificaciones se le entregan cuando la aplicación no está abierta", + "Quote": "Citar", + "Reactions_are_disabled": "Las reacciones están desactivadas", + "Reactions_are_enabled": "Las reacciones están habilitadas", + "Reactions": "Reacciones", + "Read": "Leer", + "Read_Only_Channel": "Canal de sólo lectura", + "Read_Only": "Sólo lectura ", + "Read_Receipt": "Comprobante de lectura", + "Receive_Group_Mentions": "Recibir menciones de grupo", + "Receive_Group_Mentions_Info": "Recibir menciones @all y @here", + "Register": "Registrar", + "Repeat_Password": "Repetir contraseña", + "Replied_on": "Respondido el:", + "replies": "respuestas", + "reply": "respuesta", + "Reply": "Respuesta", + "Report": "Informe", + "Receive_Notification": "Recibir notificación", + "Receive_notifications_from": "Recibir notificación de {{name}}", + "Resend": "Reenviar", + "Reset_password": "Resetear contraseña", + "resetting_password": "reseteando contraseña", + "RESET": "RESET", + "Roles": "Roles", + "Room_actions": "Acciones de sala", + "Room_changed_announcement": "El anuncio de la sala cambió a: {{announcement}} por {{userBy}}", + "Room_changed_description": "La descripción de la sala cambió a: {{description}} por {{userBy}}", + "Room_changed_privacy": "El tipo de la sala cambió a: {{type}} por {{userBy}}", + "Room_changed_topic": "El asunto de la sala cambió a: {{topic}} por {{userBy}}", + "Room_Files": "Archivos", + "Room_Info_Edit": "Editar información de la sala", + "Room_Info": "Información de la sala", + "Room_Members": "Miembros de la sala", + "Room_name_changed": "El nombre de la sala cambió a: {{name}} por {{userBy}}", + "SAVE": "SAVE", + "Save_Changes": "Guardar cambios", + "Save": "Guardar", + "saving_preferences": "guardando preferencias", + "saving_profile": "guardando perfil", + "saving_settings": "guardando confiración", + "Search_Messages": "Buscar mensajes", + "Search": "Buscar", + "Search_by": "Buscar por", + "Search_global_users": "Buscar por usuarios globales", + "Search_global_users_description": "Si lo activas, puedes buscar cualquier usuario de otras empresas o servidores.", + "Seconds": "{{second}} segundos", + "Select_Avatar": "Selecciona avatar", + "Select_Server": "Selecciona servidor", + "Select_Users": "Selecciona usuarios", + "Send": "Enviar", + "Send_audio_message": "Enviar nota de audio", + "Send_crash_report": "Enviar informe errores", + "Send_message": "Enviar mensaje", + "Send_to": "Enviar a..", + "Sent_an_attachment": "Enviar un adjunto", + "Server": "Servidor", + "Servers": "Servidores", + "Server_version": "Versión servidor: {{version}}", + "Set_username_subtitle": "El nombre de usuario se utiliza para permitir que otros le mencionen en los mensajes", + "Settings": "Configuración", + "Settings_succesfully_changed": "Configuración cambiada correctamente!", + "Share": "Compartir", + "Share_this_app": "Compartir esta App", + "Show_Unread_Counter": "Mostrar contador No leídos", + "Show_Unread_Counter_Info": "El contador de no leídos se muestra como una insignia a la derecha del canal, en la lista", + "Sign_in_your_server": "Accede a tu servidor", + "Sign_Up": "Acceder", + "Some_field_is_invalid_or_empty": "Algún campo es incorrecto o vacío", + "Sorting_by": "Ordenado por {{key}}", + "Sound": "Sonido", + "Star_room": "Destacar sala", + "Star": "Destacar", + "Starred_Messages": "Mensajes destacados", + "starred": "destacado", + "Starred": "Destacado", + "Start_of_conversation": "Comiezo de la conversación", + "Started_discussion": "Comenzar una conversación:", + "Started_call": "Llamada iniciada por {{userBy}}", + "Submit": "Enviar", + "Table": "Tabla", + "Take_a_photo": "Enviar Foto", + "Take_a_video": "Enviar Vídeo", + "tap_to_change_status": "pulsa para cambiar el estado", + "Tap_to_view_servers_list": "Pulsa para ver la lista de servidores", + "Terms_of_Service": "Términos de servicio", + "Theme": "Tema", + "There_was_an_error_while_action": "Ha habido un error mientras {{action}}!", + "This_room_is_blocked": "La sala está bloqueada", + "This_room_is_read_only": "Esta sala es de sólo lectura", + "Thread": "Hilo", + "Threads": "Hilos", + "Timezone": "Zona horaria", + "To": "Para", + "topic": "asunto", + "Topic": "Asunto", + "Translate": "Traducir", + "Try_again": "Intentar de nuevo", + "Two_Factor_Authentication": "Autenticación de doble factor", + "Type_the_channel_name_here": "Escribe el nombre del canal aquí", + "unarchive": "reactivar", + "UNARCHIVE": "UNARCHIVE", + "Unblock_user": "Desbloquear usuario", + "Unfavorite": "Quitar Favorito", + "Unfollowed_thread": "Dejar de seguir el Hilo", + "Unmute": "Desmutear", + "unmuted": "Desmuteado", + "Unpin": "Quitar estado Fijado", + "unread_messages": "marcar como No leído", + "Unread": "Marcar como No leído", + "Unread_on_top": "Mensajes No leídos en la parte superior", + "Unstar": "Quitar Destacado", + "Updating": "Actualizando...", + "Uploading": "Subiendo", + "Upload_file_question_mark": "Subir fichero?", + "Users": "Usuarios", + "User_added_by": "Usuario {{userAdded}} añadido por {{userBy}}", + "User_has_been_key": "El usuario ha sido {{key}}", + "User_is_no_longer_role_by_": "{{user}} ha dejado de ser {{role}} por {{userBy}}", + "User_muted_by": "Usuario {{userMuted}} muteado por {{userBy}}", + "User_removed_by": "Usuario {{userRemoved}} eliminado por {{userBy}}", + "User_sent_an_attachment": "{{user}} envío un adjunto", + "User_unmuted_by": "Usuario {{userUnmuted}} desmuteado por {{userBy}}", + "User_was_set_role_by_": "{{user}} ha comenzado a ser {{role}} por {{userBy}}", + "Username_is_empty": "Nombre de usuario está vacío", + "Username": "Nombre de usuario", + "Username_or_email": "Nombre de usuario o email", + "Validating": "Validando", + "Video_call": "Vídeo llamada", + "View_Original": "Ver original", + "Voice_call": "Llamada de voz", + "Websocket_disabled": "Websocket está deshabilitado para este servidor.\n{{contact}}", + "Welcome": "Bienvenido", + "Whats_your_2fa": "¿Cuál es tu código 2FA?", + "Without_Servers": "Sin servidores", + "Yes_action_it": "Sí, {{action}}!", + "Yesterday": "Ayer", + "You_are_in_preview_mode": "Estás en modo Vista Previa", + "You_are_offline": "Estás desconectado", + "You_can_search_using_RegExp_eg": "Puedes usar expresiones regulares. Por ejemplo, `/^text$/i`", + "You_colon": "Tú: ", + "you_were_mentioned": "has sido mencionado", + "you": "tú", + "You": "Tú", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Necesita acceder al menos a un servidor Rocket.Chat para compartir algo.", + "Your_certificate": "Tu certificado", + "Version_no": "Versión: {{version}}", + "You_will_not_be_able_to_recover_this_message": "No podrás recuperar este mensaje!", + "Change_Language": "Cambiar idioma", + "Crash_report_disclaimer": "Nunca rastreamos el contenido de sus conversaciones. El informe del error sólo contiene información relevante para nosotros con el fin de identificar los problemas y solucionarlos.", + "Type_message": "Escribir mensaje", + "Room_search": "Búsqueda de salas", + "Room_selection": "Selecciona sala 1...9", + "Next_room": "Siguiente sala", + "Previous_room": "Sala anterior", + "New_room": "Nueva sala", + "Upload_room": "Subir a sala", + "Search_messages": "Buscar mensajes", + "Scroll_messages": "Scroll mensajes", + "Reply_latest": "Responder al último", + "Server_selection": "Seleccionar servidor", + "Server_selection_numbers": "Seleccionar servidor 1...9", + "Add_server": "Añadir servidor", + "New_line": "Nueva línea" +} \ No newline at end of file diff --git a/app/i18n/locales/fr.js b/app/i18n/locales/fr.js deleted file mode 100644 index 71051fb90f6..00000000000 --- a/app/i18n/locales/fr.js +++ /dev/null @@ -1,623 +0,0 @@ -export default { - '1_person_reacted': '1 personne a réagi', - '1_user': '1 utilisateur', - 'error-action-not-allowed': '{{action}} n\'est pas autorisé', - 'error-application-not-found': 'Application non trouvée', - 'error-archived-duplicate-name': 'Il y a un canal archivé avec nom {{room_name}}', - 'error-avatar-invalid-url': 'URL d\'avatar invalide: {{url}}', - 'error-avatar-url-handling': 'Erreur lors de la gestion du paramètre d\'avatar à partir d\'une URL ({{url}}) pour {{username}}', - 'error-cant-invite-for-direct-room': 'Impossible d\'inviter l\'utilisateur aux salles direct', - 'error-could-not-change-email': 'Impossible de changer l\'adresse e-mail', - 'error-could-not-change-name': 'Impossible de changer le nom', - 'error-could-not-change-username': 'Impossible de changer le nom d\'utilisateur', - 'error-could-not-change-status': 'Impossible de changer le statut', - 'error-delete-protected-role': 'Impossible de supprimer un rôle protégé', - 'error-department-not-found': 'Département introuvable', - 'error-direct-message-file-upload-not-allowed': 'Le partage de fichiers n\'est pas autorisé dans les messages directs', - 'error-duplicate-channel-name': 'un canal avec nom {{channel_name}} existe', - 'error-email-domain-blacklisted': 'Le domaine de messagerie est sur liste noire', - 'error-email-send-failed': 'Erreur lors de la tentative d\'envoi d\'un courrier électronique: {{message}}', - 'error-save-image': 'Erreur en sauvegardant l\'image', - 'error-save-video': 'Erreur en sauvegardant la video', - 'error-field-unavailable': '{{field}} est déjà utilisé: (', - 'error-file-too-large': 'Le fichier est trop volumineux', - 'error-importer-not-defined': 'L\'importateur n\'a pas été défini correctement, il manque la classe import.', - 'error-input-is-not-a-valid-field': '{{input}} N\'est pas valide {{field}}', - 'error-invalid-actionlink': 'Lien d\'action invalide', - 'error-invalid-arguments': 'Invalid arguments', - 'error-invalid-asset': 'élément incorrect', - 'error-invalid-channel': 'Canal invalide.', - 'error-invalid-channel-start-with-chars': 'Canal invalide. Commence par @ ou #', - 'error-invalid-custom-field': 'Champ personnalisé incorrect', - 'error-invalid-custom-field-name': 'Nom de champ personnalisé non valide. Utilisez uniquement des lettres, des chiffres, des traits d\'union et de soulignement.', - 'error-invalid-date': 'Date fournie invalide.', - 'error-invalid-description': 'Description invalide', - 'error-invalid-domain': 'Domaine invalide', - 'error-invalid-email': 'Adresse e-mail non valide {{emai}}', - 'error-invalid-email-address': 'Adresse e-mail invalide', - 'error-invalid-file-height': 'Hauteur de fichier non valide', - 'error-invalid-file-type': 'Type de fichier invalide', - 'error-invalid-file-width': 'Largeur de fichier invalide', - 'error-invalid-from-address': 'Vous avez informé une adresse FROM invalide.', - 'error-invalid-integration': 'Intégration invalide', - 'error-invalid-message': 'Message invalide', - 'error-invalid-method': 'Méthode invalide', - 'error-invalid-name': 'Nom incorrect', - 'error-invalid-password': 'Mot de passe incorrect', - 'error-invalid-redirectUri': 'RedirectUri invalide', - 'error-invalid-role': 'Rôle invalide', - 'error-invalid-room': 'Salon invalide', - 'error-invalid-room-name': '{{room_name}} n\'est pas un nom de salon valide', - 'error-invalid-room-type': '{{type}} n\'est pas un type de salon valide.', - 'error-invalid-settings': 'Paramètres fournis non valides', - 'error-invalid-subscription': 'Subscription invalide', - 'error-invalid-token': 'Jeton invalide', - 'error-invalid-triggerWords': 'Mots déclencheurs invalides', - 'error-invalid-urls': 'URL non valides', - 'error-invalid-user': 'Utilisateur invalide', - 'error-invalid-username': 'Nom d\'utilisateur invalide', - 'error-invalid-webhook-response': 'L\'URL webhook a répondu avec un statut autre que 200', - 'error-message-deleting-blocked': 'La suppression du message est bloquée', - 'error-message-editing-blocked': 'La modification du message est bloquée', - 'error-message-size-exceeded': 'La taille du message dépasse Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'Vous devez fournir le [unsubscribe] lien.', - 'error-no-tokens-for-this-user': 'Il n\'y a pas de jetons pour cet utilisateur', - 'error-not-allowed': 'Non autorisé', - 'error-not-authorized': 'Non autorisé', - 'error-push-disabled': 'Push est désactivé', - 'error-remove-last-owner': 'Ceci est le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de supprimer celui-ci.', - 'error-role-in-use': 'Impossible de supprimer le rôle car est utilisé', - 'error-role-name-required': 'Le nom du rôle est requis', - 'error-the-field-is-required': 'Le champ {{field}} est requis.', - 'error-too-many-requests': 'Erreur, trop de demandes. Ralentissez, s\'il vous plaît. Vous devez attendre {{seconds}} secondes avant d\'essayer à nouveau.', - 'error-user-is-not-activated': 'L\'utilisateur n\'est pas activé', - 'error-user-has-no-roles': 'L\'utilisateur ne dispose pas d\'un rôle', - 'error-user-limit-exceeded': 'Le nombre d\'utilisateurs que vous essayez d\'inviter à #channel_name dépasse la limite définie par l\'administrateur', - 'error-user-not-in-room': 'L\'utilisateur n\'est pas dans cette salle', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'L\'enregistrement de l\'utilisateur est désactivé', - 'error-user-registration-secret': 'Enregistrement de l\'utilisateur est autorisée uniquement via l\'URL secret', - 'error-you-are-last-owner': 'Vous êtes le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de quitter la salle.', - Actions: 'Actions', - activity: 'activité', - Activity: 'Activité', - Add_Reaction: 'Ajouter une réaction', - Add_Server: 'Ajouter un serveur', - Add_users: 'Ajouter des utilisateurs', - Admin_Panel: 'Panneau d\'Administration', - Agent: 'Agent', - Alert: 'Alerte', - alert: 'alerte', - alerts: 'alertes', - All_users_in_the_channel_can_write_new_messages: 'Tous les utilisateurs du canal peuvent écrire de nouveaux messages', - A_meaningful_name_for_the_discussion_room: 'Un nom explicite pour la salle de discussion', - All: 'Tout', - All_Messages: 'Tous les messages', - Allow_Reactions: 'Autoriser les réactions', - Alphabetical: 'Alphabétique', - and_more: 'et plus', - and: 'et', - announcement: 'annonce', - Announcement: 'Annonce', - Apply_Your_Certificate: 'Valider le Certificat', - ARCHIVE: 'ARCHIVER', - archive: 'archiver', - are_typing: 'sont en train d\'écrire', - Are_you_sure_question_mark: 'Êtes-vous sûr ?', - Are_you_sure_you_want_to_leave_the_room: 'Êtes-vous sûr de vouloir quitter le salon {{room}}?', - Audio: 'Audio', - Authenticating: 'Authentifier', - Automatic: 'Automatique', - Auto_Translate: 'Traduction-Auto', - Avatar_changed_successfully: 'Avatar changé avec succès!', - Avatar_Url: 'URL de l\'avatar', - Away: 'absent', - Back: 'Arrière', - Black: 'Noir', - Block_user: 'Bloquer l\'Utilisateur', - Browser: 'Navigateur', - Broadcast_channel_Description: 'Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages, mais les autres utilisateurs pourront répondre.', - Broadcast_Channel: 'Canal de diffusion', - Busy: 'Occupé', - By_proceeding_you_are_agreeing: 'En procédant, vous acceptez nos', - Cancel_editing: 'Annuler la modification', - Cancel_recording: 'Annuler l\'enregistrement', - Cancel: 'Annuler', - changing_avatar: 'changer d\'avatar', - creating_channel: 'créer un canal', - creating_invite: 'création d\'une invitation', - Channel_Name: 'Nom du canal', - Channels: 'Canaux', - Chats: 'Chats', - Call_already_ended: 'L\'appel a déjà terminé !', - Click_to_join: 'Cliquez pour rejoindre!', - Close: 'Fermer', - Close_emoji_selector: 'Fermer le sélecteur d\'emoji', - Closing_chat: 'Fermeture du Salon de discussion', - Change_language_loading: 'Changement de la langue.', - Chat_closed_by_agent: 'Le salon de discussion a été fermé', - Choose: 'Choisir', - Choose_from_library: 'Choisissez parmi la bibliothèque', - Choose_file: 'Choisir un fichier', - Choose_where_you_want_links_be_opened: 'Choisissez ou vous souhaitez ouvrir vos liens', - Code: 'Code', - Code_or_password_invalid: 'Code ou mot de passe invalide', - Collaborative: 'Collaborative', - Confirm: 'Confirmer', - Connect: 'Se connecter', - Connected: 'Connecté', - connecting_server: 'connexion en cours au serveur', - Connecting: 'Connexion ...', - Contact_us: 'Contactez nous', - Contact_your_server_admin: 'Contactez l\'administrateur de votre serveur.', - Continue_with: 'Continuer avec', - Copied_to_clipboard: 'Copié dans le presse-papier!', - Copy: 'Copier', - Conversation: 'Conversation', - Permalink: 'Lien permanent', - Certificate_password: 'Mot de passe du Certificat', - Clear_cache: 'Effacer le cache local', - Clear_cache_loading: 'Effacement du cache.', - Whats_the_password_for_your_certificate: 'Quel est le mot de passe du Certificat ?', - Create_account: 'Créer un compte', - Create_Channel: 'Créer un canal', - Create_Direct_Messages: 'Créer un message direct', - Create_Discussion: 'Créer une Discussion', - Created_snippet: 'créé un extrait', - Create_a_new_workspace: 'Créer un nouvel espace de travail', - Create: 'Créer', - Custom_Status: 'Statut Personnalisé', - Dark: 'Sombre', - Dark_level: 'Niveau d\'assombrissement', - Default: 'Défaut', - Default_browser: 'Navigateur par défaut', - Delete_Room_Warning: 'Supprimer une salle supprimera tous les messages postés dans la salle. Ça ne peut pas être annulé.', - Department: 'Département', - delete: 'supprimer', - Delete: 'Supprimer', - DELETE: 'SUPPRIMER', - deleting_room: 'effacement de la salle', - description: 'la description', - Description: 'La description', - Desktop_Options: 'Desktop Options', - Directory: 'Répertoire', - Direct_Messages: 'Messages directs', - Disable_notifications: 'Désactiver les notifications', - Discussions: 'Discussions', - Discussion_Desc: 'Aide à garder un aperçu de ce qui se passe! En créant une discussion, un sous-canal de celui que vous avez sélectionné est créé et les deux sont liés.', - Discussion_name: 'Nom de la discussion', - Done: 'Fait', - Dont_Have_An_Account: 'Vous n\'avez pas de compte?', - Do_you_have_an_account: 'Avez-vous un compte?', - Do_you_have_a_certificate: 'Avez-vous un certificat?', - Do_you_really_want_to_key_this_room_question_mark: 'Voulez-vous vraiment {{key}} cette salle?', - edit: 'modifier', - edited: 'édité', - Edit: 'Modifier', - Edit_Status: 'Modifier le Statut', - Edit_Invite: 'Modifier l\'invitation', - Email_or_password_field_is_empty: 'Le champ e-mail ou mot de passe est vide', - Email: 'E-mail', - email: 'e-mail', - Empty_title: 'Titre vide', - Enable_Auto_Translate: 'Activer la traduction-auto', - Enable_notifications: 'Activer les notifications', - Everyone_can_access_this_channel: 'Tout le monde peut accéder à ce canal', - Error_uploading: 'Erreur lors du téléchargement', - Expiration_Days: 'Expiration (Jours)', - Favorite: 'Favoris', - Favorites: 'Favoris', - Files: 'Fichiers', - File_description: 'Description du fichier', - File_name: 'Nom de fichier', - Finish_recording: 'Terminer l\'enregistrement', - Following_thread: 'Suivre le fil', - For_your_security_you_must_enter_your_current_password_to_continue: 'Pour votre sécurité, vous devez entrer votre mot de passe actuel pour continuer.', - Forgot_password_If_this_email_is_registered: 'Si cet e-mail est enregistré, nous vous enverrons des instructions pour réinitialiser votre mot de passe. Si vous ne recevez pas d\'e-mail sous peu, veuillez revenir et réessayer.', - Forgot_password: 'Mot de passe oublié', - Forgot_Password: 'Mot de passe oublié', - Forward: 'Faire suivre', - Forward_Chat: 'Faire suivre le canal de discussion', - Forward_to_department: 'Faire suivre au département', - Forward_to_user: 'Faire suivre a l\'utilisateur', - Full_table: 'Cliquez pour voir la table complète', - Generate_New_Link: 'Générer un nouveau lien', - Group_by_favorites: 'Grouper par favoris', - Group_by_type: 'Grouper par type', - Hide: 'Cacher', - Has_joined_the_channel: 'a rejoint le canal', - Has_joined_the_conversation: 'a rejoint la conversation', - Has_left_the_channel: 'a quitté la chaîne', - Hide_System_Messages: 'Masquer les messages système', - Hide_type_messages: 'Masquer les messages "{{type}}"', - Message_HideType_uj: 'L\'utilisateur a rejoint', - Message_HideType_ul: 'L\'utilisateur est parti', - Message_HideType_ru: 'Utilisateur éjecté', - Message_HideType_au: 'Utilisateur ajouté', - Message_HideType_mute_unmute: 'Utilisateur rendu muet / a retrouvé la parole', - Message_HideType_r: 'Le nom du salon a été changé', - Message_HideType_ut: 'L\'Utilisateur a rejoint la conversation', - Message_HideType_wm: 'Bienvenue', - Message_HideType_rm: 'Message supprimé', - Message_HideType_subscription_role_added: 'a été défini avec ce Rôle', - Message_HideType_subscription_role_removed: 'Ce Rôle n\'est plus défini', - Message_HideType_room_archived: 'Salon Archivé', - Message_HideType_room_unarchived: 'Salon Désarchivé', - IP: 'IP', - In_app: 'In-app', - In_App_And_Desktop: 'In-app et Bureau', - In_App_and_Desktop_Alert_info: 'Affiche une bannière en haut de l\'écran lorsque l\'application est ouverte et affiche une notification sur le bureau', - Invisible: 'Invisible', - Invite: 'Inviter', - is_a_valid_RocketChat_instance: 'est une instance valide de Rocket.Chat', - is_not_a_valid_RocketChat_instance: 'n\'est pas une instance valide de Rocket.Chat', - is_typing: 'est en train d\'écrire', - Invalid_or_expired_invite_token: 'Jeton d\'invitation non valide ou expiré', - Invalid_server_version: 'Le serveur que vous essayez de connecter utilise une version qui n\'est plus prise en charge par l\'application: {{currentVersion}}.\n\nNous exigeons la version {{minVersion}}', - Invite_Link: 'Lien d\'invitation', - Invite_users: 'Inviter utilisateur', - Join: 'Rejoindre', - Join_our_open_workspace: 'Rejoignez notre espace de travail ouvert', - Join_your_workspace: 'Rejoignez votre espace de travail', - Just_invited_people_can_access_this_channel: 'Seuls les invités peuvent accéder à ce canal', - Language: 'Langue', - last_message: 'Dernier message', - Leave_channel: 'Quitter le canal', - leaving_room: 'En quittent le canal', - leave: 'quitter', - Legal: 'Légale', - Light: 'Lumière', - License: 'Licence', - Livechat: 'Livechat', - Livechat_edit: 'Livechat modification', - Login: 'Connexion', - Login_error: 'Vos identifiants ont été rejetés! Veuillez réessayer.', - Login_with: 'Se connecter avec', - Logging_out: 'Déconnexion.', - Logout: 'Se déconnecter', - Max_number_of_uses: 'Nombre maximum d\'utilisations', - Max_number_of_users_allowed_is_number: 'Le nombre maximum d\'utilisateurs autorisés est {{maxUsers}}', - members: 'membres', - Members: 'Membres', - Mentioned_Messages: 'Messages mentionnés', - mentioned: 'mentionné', - Mentions: 'Mentions', - Message_accessibility: 'message de {{user}} à {{time}}: {{message}}', - Message_actions: 'Actions de message', - Message_pinned: 'Message épinglé', - Message_removed: 'Message supprimé', - Message_starred: 'Message suivi', - Message_unstarred: 'Message non suivi', - message: 'message', - messages: 'messages', - Message: 'Message', - Messages: 'Messages', - Message_Reported: 'Message signalé', - Microphone_Permission_Message: 'Rocket.Chat doit avoir accès à votre microphone pour pouvoir envoyer un message audio.', - Microphone_Permission: 'Permission de microphone', - Mute: 'Rendre muet', - muted: 'Rendu muet', - My_servers: 'Mes serveurs', - N_people_reacted: '{{n}} personnes ont réagi', - N_users: '{{n}} utilisateurs', - name: 'nom', - Name: 'Nom', - Navigation_history: 'Historique de navigation', - Never: 'Jamais', - New_Message: 'Nouveau message', - New_Password: 'Nouveau mot de passe', - New_Server: 'Nouveau serveur', - Next: 'Suivant', - No_files: 'Aucun fichier', - No_limit: 'Pas de limites', - No_mentioned_messages: 'Aucun message mentionné', - No_pinned_messages: 'Aucun message épinglé', - No_results_found: 'Aucun résultat trouvé', - No_starred_messages: 'Pas de messages suivis', - No_thread_messages: 'Aucun fil de discussion', - No_label_provided: 'Aucun {{label}} fourni.', - No_Message: 'Aucun message', - No_messages_yet: 'Pas encore de messages', - No_Reactions: 'Aucune réaction', - No_Read_Receipts: 'Pas d\'accusé de lecture', - Not_logged: 'Non connecté', - Not_RC_Server: 'Ce n\'est pas un serveur Rocket.Chat.\n{{contact}}', - Nothing: 'Rien', - Nothing_to_save: 'Rien à enregistrer!', - Notify_active_in_this_room: 'Notifier les utilisateurs actifs dans cette salle', - Notify_all_in_this_room: 'Notifier tous dans cette salle', - Notifications: 'Notifications', - Notification_Duration: 'Durée de Notification', - Notification_Preferences: 'Préférences de Notification', - No_available_agents_to_transfer: 'Aucun agent disponible à qui transférer', - Offline: 'Hors ligne', - Oops: 'Oops!', - Omnichannel: 'Omnichannel', - Onboarding_description: 'Un espace de travail est l\'espace de collaboration de votre équipe ou organisation. Demandez à l\'administrateur de l\'espace de travail l\'adresse pour rejoindre ou créez-en une pour votre équipe.', - Onboarding_join_workspace: 'Rejoindre un espace de travail', - Onboarding_subtitle: 'Au-delà de la collaboration d\'équipe', - Onboarding_title: 'Bienvenue sur Rocket.Chat', - Onboarding_join_open_description: 'Rejoignez notre espace de travail ouvert pour discuter avec l\'équipe et la communauté Rocket.Chat.', - Onboarding_agree_terms: 'En continuant, vous acceptez Rocket.Chat', - Onboarding_less_options: 'Moins d\'options', - Onboarding_more_options: 'Plus d\'options', - Online: 'En ligne', - Only_authorized_users_can_write_new_messages: 'Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages.', - Open_emoji_selector: 'Ouvrir sélecteur emoji', - Open_Source_Communication: 'Communication Open Source', - Open_your_authentication_app_and_enter_the_code: 'Ouvrez votre application d\'authentification et entrez le code.', - OR: 'OU', - OS: 'OS', - Overwrites_the_server_configuration_and_use_room_config: 'Écrase la configuration du serveur et utilise la configuration du salon', - Password: 'Mot de passe', - Parent_channel_or_group: 'Chaîne ou groupe parent', - Permalink_copied_to_clipboard: 'Lien permanent copié dans le presse-papier!', - Phone: 'Téléphone', - Pin: 'Épingler', - Pinned_Messages: 'Messages épinglés', - pinned: 'épinglé', - Pinned: 'Épinglé', - Please_add_a_comment: 'Veuillez ajouter un commentaire', - Please_enter_your_password: 'Veuillez entrer votre mot de passe', - Please_wait: 'Attendez s\'il vous plaît', - Preferences: 'Préférences', - Preferences_saved: 'Préférences sauvegardées!', - Privacy_Policy: ' Politique de confidentialité', - Private_Channel: 'Canal privé', - Private_Groups: 'Groupes privés', - Private: 'Privé', - Processing: 'En traitement...', - Profile_saved_successfully: 'Profil enregistré avec succès!', - Profile: 'Profil', - Public_Channel: 'Canal Public', - Public: 'Public', - Push_Notifications: 'Notifications Push', - Push_Notifications_Alert_Info: 'Ces notifications vous sont livrées lorsque l\'application n\'est pas ouverte', - Quote: 'Citation', - Reactions_are_disabled: 'Les réactions sont désactivées', - Reactions_are_enabled: 'Les réactions sont activées', - Reactions: 'Réactions', - Read: 'Lecture', - Read_External_Permission_Message: 'Rocket.Chat doit accéder aux photos, aux médias et aux fichiers sur votre appareil', - Read_External_Permission: 'Permission de lecture des fichiers', - Read_Only_Channel: 'Chaîne en lecture seule', - Read_Only: 'Lecture seule', - Read_Receipt: 'Accusé de réception', - Receive_Group_Mentions: 'Recevoir des mentions de groupe', - Receive_Group_Mentions_Info: 'Recevoir les mentions @all et @here', - Register: 'S\'inscrire', - Repeat_Password: 'Répéter le mot de passe', - Replied_on: 'Répondu le:', - replies: 'réponses', - reply: 'répondre', - Reply: 'Répondre', - Report: 'Signaler', - Receive_Notification: 'Recevoir une notification', - Receive_notifications_from: 'Recevoir les notifications de {{name}}', - Resend: 'Renvoyer', - Reset_password: 'Réinitialiser le mot de passe', - resetting_password: 'réinitialisation du mot de passe', - RESET: 'RÉINITIALISER', - Return: 'Retour', - Review_app_title: 'Appréciez-vous cette application?', - Review_app_desc: 'Donnez-nous 5 étoiles sur {{store}}', - Review_app_yes: 'Bien sur!', - Review_app_no: 'Non', - Review_app_later: 'plus tard', - Review_app_unable_store: 'Impossible d\'ouvrir {{store}}', - Review_this_app: 'Donnez votre avis sur cette application', - Remove: 'Retirer', - Roles: 'Rôles', - Room_actions: 'Actions de canal', - Room_changed_announcement: 'Annonce de canal est changée en: {{announcement}} par {{userBy}}', - Room_changed_description: 'Description de canal est changée en: {{description}} par {{userBy}}', - Room_changed_privacy: 'Type de canal est changé en: {{type}} par {{userBy}}', - Room_changed_topic: 'Le sujet de canal est changé en: {{topic}} par {{userBy}}', - Room_Files: 'Fichiers de canal', - Room_Info_Edit: 'Infos sur le canal Modifier', - Room_Info: 'Info sur le canal', - Room_Members: 'Membres de canal', - Room_name_changed: 'Nom de canal est changé en: {{name}} par {{userBy}}', - SAVE: 'ENREGISTRER', - Save_Changes: 'Sauvegarder les modifications', - Save: 'Sauvegarder', - Saved: 'Sauvé', - saving_preferences: 'sauvegardant les préférences', - saving_profile: 'enregistrement du profil', - saving_settings: 'enregistrement des paramètres', - saved_to_gallery: 'Sauvé dans la galerie', - Search_Messages: 'Rechercher des messages', - Search: 'Recherche', - Search_by: 'Recherche par', - Search_global_users: 'Rechercher des utilisateurs mondiaux', - Search_global_users_description: 'Si vous activez, vous pouvez rechercher n\'importe quel utilisateur d\'autres sociétés ou serveurs.', - Seconds: '{{second}} secondes', - Select_Avatar: 'Sélectionnez un avatar', - Select_Server: 'Sélectionnez un serveur', - Select_Users: 'Sélectionner des utilisateurs', - Select_a_Channel: 'Sélectionnez un canal', - Select_a_Department: 'Sélectionnez un département', - Select_an_option: 'Sélectionnez une option', - Select_a_User: 'Sélectionnez un utilisateur', - Send: 'Envoyer', - Send_audio_message: 'Envoyer un message audio', - Send_crash_report: 'Envoyer un rapport de plantage', - Send_message: 'Envoyer un message', - Send_me_the_code_again: 'Envoyez-moi à nouveau le code', - Send_to: 'Envoyer à...', - Sending_to: 'Envoi à', - Sent_an_attachment: 'Envoyé une pièce jointe', - Server: 'Serveur', - Servers: 'Serveurs', - Server_version: 'Version du serveur: {{version}}', - Set_username_subtitle: 'Le nom d\'utilisateur est utilisé pour permettre aux autres de vous mentionner dans les messages', - Set_custom_status: 'Définir un statut personnalisé', - Set_status: 'Définir le statut', - Status_saved_successfully: 'Statut enregistré avec succès!', - Settings: 'Paramètres', - Settings_succesfully_changed: 'Paramètres modifiés avec succès!', - Share: 'Partager', - Share_Link: 'Partager le lien', - Share_this_app: 'Partager cette application', - Show_more: 'Afficher plus..', - Show_Unread_Counter: 'Afficher le compteur non lu', - Show_Unread_Counter_Info: 'Le compteur non-lu est affiché sous forme de badge à droite de la chaîne, dans la liste', - Sign_in_your_server: 'Connectez-vous à votre serveur', - Sign_Up: 'S\'inscrire', - Some_field_is_invalid_or_empty: 'Certains champs sont invalides ou vides', - Sorting_by: 'Tri par {{key}}', - Sound: 'Son', - Star_room: 'Favoriser canal', - Star: 'Favoris', - Starred_Messages: 'Les messages favorisé', - starred: 'favorisé', - Starred: 'Favorisé', - Start_of_conversation: 'Début de conversation', - Start_a_Discussion: 'Lancer une discussion', - Started_discussion: 'A commencé une discussion:', - Started_call: 'Appel lancé par {{userBy}}', - Submit: 'Soumettre', - Table: 'Table', - Tags: 'Mots clés', - Take_a_photo: 'Prendre une photo', - Take_a_video: 'Prendre une vidéo', - Take_it: 'Prends-le!', - tap_to_change_status: 'Appuyez pour changer de statut', - Tap_to_view_servers_list: 'Appuyez pour afficher la liste des serveurs', - Terms_of_Service: ' Conditions d\'utilisation ', - Theme: 'Thème', - The_user_wont_be_able_to_type_in_roomName: 'L\'utilisateur ne pourra pas écrire dans {{roomName}}', - The_user_will_be_able_to_type_in_roomName: 'L\'utilisateur pourra écrire dans {{roomName}}', - There_was_an_error_while_action: 'Il y avait une erreur en {{action}}!', - This_room_is_blocked: 'Cette canal est bloquée', - This_room_is_read_only: 'Cette canal est en lecture seule', - Thread: 'Fil de discutions', - Threads: 'Fils de discutions', - Timezone: 'Fuseau horaire', - To: 'A', - topic: 'sujet', - Topic: 'Sujet', - Translate: 'Traduire', - Try_again: 'Réessayer', - Two_Factor_Authentication: 'Authentification à deux facteurs', - Type_the_channel_name_here: 'Tapez le nom de canal ici', - unarchive: 'désarchiver', - UNARCHIVE: 'DÉSARCHIVER', - Unblock_user: 'Débloquer l\'utilisateur', - Unfavorite: 'Supprimer des favoris', - Unfollowed_thread: 'Ne plus suivre ce fil', - Unmute: 'Rendre La parole', - unmuted: 'Rendu la parole', - Unpin: 'Détacher', - unread_messages: 'non lus', - Unread: 'Non lu', - Unread_on_top: 'Non lu sur le dessus', - Unstar: 'Unstar', - Updating: 'Mise à jour...', - Uploading: 'Téléchargement', - Upload_file_question_mark: 'Télécharger le fichier?', - User: 'Utilisateur', - Users: 'Utilisateurs', - User_added_by: 'L\'utilisateur {{userAdded}} a été ajouté par {{userBy}}', - User_Info: 'Info d\'utilisateur', - User_has_been_key: 'L\'utilisateur a été {{key}}', - User_is_no_longer_role_by_: '{{user}} n\'est plus {{role}} par {{userBy}}', - User_muted_by: 'L\'utilisateur {{userMuted}} a été rendu muet par {{userBy}}', - User_removed_by: 'L\'utilisateur {{userRemoved}} a été retiré par {{userBy}}', - User_sent_an_attachment: '{{user}} envoyé une pièce jointe', - User_unmuted_by: 'L\'utilisateur {{userBy}} a rendu la parole a {{userUnmuted}}', - User_was_set_role_by_: '{{user}} l\'utilisateur a été défini {{role}} par {{userBy}}', - Username_is_empty: 'Nom d\'utilisateur est vide', - Username: 'Nom d\'utilisateur', - Username_or_email: 'Nom d\'utilisateur ou address e-mail', - Uses_server_configuration: 'Utilise la configuration du serveur', - Validating: 'Validation', - Registration_Succeeded: 'Inscription réussie!', - Verify: 'Vérifier', - Verify_email_title: 'Inscription réussie!', - Verify_email_desc: 'Nous vous avons envoyé un e-mail pour confirmer votre inscription. Si vous ne recevez pas d\'e-mail sous peu, veuillez revenir et réessayer.', - Verify_your_email_for_the_code_we_sent: 'Vérifiez votre e-mail pour le code que nous avons envoyé', - Video_call: 'Appel vidéo', - View_Original: 'Voir l\'original', - Voice_call: 'Appel vocal', - Waiting_for_network: 'En attente du réseau ...', - Websocket_disabled: 'Le Websocket est désactivé pour ce serveur.\n{{contact}}', - Welcome: 'Bienvenue', - What_are_you_doing_right_now: 'Qu\'es ce que vous faites actuellement?', - Whats_your_2fa: 'Quel est votre code 2FA?', - Without_Servers: 'Sans serveurs', - Workspaces: 'Espaces de travail', - Would_you_like_to_return_the_inquiry: 'Souhaitez-vous retourner la demande?', - Write_External_Permission_Message: 'Rocket.Chat a besoin d\'accéder à votre galerie pour que vous puissiez enregistrer des images.', - Write_External_Permission: 'Autorisation de la galerie', - Yes: 'Oui', - Yes_action_it: 'Oui, {{action}} le!', - Yesterday: 'Hier', - You_are_in_preview_mode: 'Vous êtes en mode de prévisualisation', - You_are_offline: 'Vous êtes hors ligne', - You_can_search_using_RegExp_eg: 'Vous pouvez rechercher à l\'aide de RegExp. e.g. `/^text$/i`', - You_colon: 'Vous: ', - you_were_mentioned: 'vous avez été mentionné', - You_were_removed_from_channel: 'Vous avez été retiré de{{channel}}', - you: 'vous', - You: 'Vous', - Logged_out_by_server: 'Vous avez été déconnecté par le serveur. Veuillez vous reconnecter.', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Vous devez accéder à au moins un serveur Rocket.Chat pour partager quelque chose.', - Your_certificate: 'Votre Certificat', - Your_invite_link_will_expire_after__usesLeft__uses: 'Votre lien d\'invitation expirera après {{usesLeft}} utilisations.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Votre lien d\'invitation expirera le {{date}} ou après {{usesLeft}} utilisations.', - Your_invite_link_will_expire_on__date__: 'Votre lien d\'invitation expirera le {{date}}.', - Your_invite_link_will_never_expire: 'Votre lien d\'invitation n\'expirera jamais.', - Your_workspace: 'Votre espace de travail', - Version_no: 'Version: {{version}}', - You_will_not_be_able_to_recover_this_message: 'Vous ne pourrez pas récupérer ce message!', - You_will_unset_a_certificate_for_this_server: 'Vous allez annuler un certificat pour ce serveur', - Change_Language: 'Changer la Langue', - Crash_report_disclaimer: 'Nous ne suivons jamais le contenu de vos chats. Le rapport de plantage ne contient que des informations pertinentes pour nous afin d\'identifier les problèmes et de les résoudre.', - Type_message: 'Écrire un message', - Room_search: 'Recherche de salon', - Room_selection: 'Sélection du Salon 1...9', - Next_room: 'Salon Suivant', - Previous_room: 'Salon Précédent', - New_room: 'Nouveau salon', - Upload_room: 'Envoyer sur un salon', - Search_messages: 'Recherche de messages', - Scroll_messages: 'Défiler messages', - Reply_latest: 'Répondre au dernier', - Reply_in_Thread: 'Répondre dans le fil', - Server_selection: 'Sélection du serveur', - Server_selection_numbers: 'Sélection du Serveur 1...9', - Add_server: 'Ajouter serveur', - New_line: 'Nouvelle ligne', - You_will_be_logged_out_of_this_application: 'Vous serez déconnecté de cette application.', - Clear: 'Effacer', - This_will_clear_all_your_offline_data: 'Cela effacera toutes vos données hors-ligne.', - This_will_remove_all_data_from_this_server: 'Cela supprimera toutes les données de ce serveur.', - Mark_unread: 'Marquer comme non lu', - Wait_activation_warning: 'Avant de pouvoir vous connecter, votre compte doit être activé manuellement par un administrateur.', - Screen_lock: 'Verrouillage d\'écran', - Local_authentication_biometry_title: 'Authentifier', - Local_authentication_biometry_fallback: 'Utiliser le mot de passe', - Local_authentication_unlock_option: 'Déverrouiller avec mot de passe', - Local_authentication_change_passcode: 'Changer le code', - Local_authentication_info: 'Remarque: si vous oubliez le code, vous devrez supprimer et réinstaller l\'application.', - Local_authentication_facial_recognition: 'reconnaissance faciale', - Local_authentication_fingerprint: 'empreinte digitale', - Local_authentication_unlock_with_label: 'Déverrouiller avec {{label}}', - Local_authentication_auto_lock_60: 'Après 1 minute', - Local_authentication_auto_lock_300: 'Après 5 minutes', - Local_authentication_auto_lock_900: 'Après 15 minutes', - Local_authentication_auto_lock_1800: 'Après 30 minutes', - Local_authentication_auto_lock_3600: 'Après 1 heure', - Passcode_enter_title: 'Entrez votre mot de passe', - Passcode_choose_title: 'Choisissez votre nouveau mot de passe', - Passcode_choose_confirm_title: 'Confirmez votre nouveau mot de passe', - Passcode_choose_error: 'Les codes secrets ne correspondent pas. Réessayer.', - Passcode_choose_force_set: 'Code d\'accès requis par l\'administrateur', - Passcode_app_locked_title: 'App verrouillée', - Passcode_app_locked_subtitle: 'Réessayez dans {{timeLeft}} secondes', - After_seconds_set_by_admin: 'Après {{seconds}} secondes (défini par l\'administrateur)', - Dont_activate: 'Ne pas activer maintenant', - Queued_chats: 'Discussions en file d\'attente', - Queue_is_empty: 'La file d\'attente est vide' -}; diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json new file mode 100644 index 00000000000..1920045b1f5 --- /dev/null +++ b/app/i18n/locales/fr.json @@ -0,0 +1,623 @@ +{ + "1_person_reacted": "1 personne a réagi", + "1_user": "1 utilisateur", + "error-action-not-allowed": "{{action}} n'est pas autorisé", + "error-application-not-found": "Application non trouvée", + "error-archived-duplicate-name": "Il y a un canal archivé avec nom {{room_name}}", + "error-avatar-invalid-url": "URL d'avatar invalide: {{url}}", + "error-avatar-url-handling": "Erreur lors de la gestion du paramètre d'avatar à partir d'une URL ({{url}}) pour {{username}}", + "error-cant-invite-for-direct-room": "Impossible d'inviter l'utilisateur aux salles direct", + "error-could-not-change-email": "Impossible de changer l'adresse e-mail", + "error-could-not-change-name": "Impossible de changer le nom", + "error-could-not-change-username": "Impossible de changer le nom d'utilisateur", + "error-could-not-change-status": "Impossible de changer le statut", + "error-delete-protected-role": "Impossible de supprimer un rôle protégé", + "error-department-not-found": "Département introuvable", + "error-direct-message-file-upload-not-allowed": "Le partage de fichiers n'est pas autorisé dans les messages directs", + "error-duplicate-channel-name": "un canal avec nom {{channel_name}} existe", + "error-email-domain-blacklisted": "Le domaine de messagerie est sur liste noire", + "error-email-send-failed": "Erreur lors de la tentative d'envoi d'un courrier électronique: {{message}}", + "error-save-image": "Erreur en sauvegardant l'image", + "error-save-video": "Erreur en sauvegardant la video", + "error-field-unavailable": "{{field}} est déjà utilisé: (", + "error-file-too-large": "Le fichier est trop volumineux", + "error-importer-not-defined": "L'importateur n'a pas été défini correctement, il manque la classe import.", + "error-input-is-not-a-valid-field": "{{input}} N'est pas valide {{field}}", + "error-invalid-actionlink": "Lien d'action invalide", + "error-invalid-arguments": "Invalid arguments", + "error-invalid-asset": "élément incorrect", + "error-invalid-channel": "Canal invalide.", + "error-invalid-channel-start-with-chars": "Canal invalide. Commence par @ ou #", + "error-invalid-custom-field": "Champ personnalisé incorrect", + "error-invalid-custom-field-name": "Nom de champ personnalisé non valide. Utilisez uniquement des lettres, des chiffres, des traits d'union et de soulignement.", + "error-invalid-date": "Date fournie invalide.", + "error-invalid-description": "Description invalide", + "error-invalid-domain": "Domaine invalide", + "error-invalid-email": "Adresse e-mail non valide {{emai}}", + "error-invalid-email-address": "Adresse e-mail invalide", + "error-invalid-file-height": "Hauteur de fichier non valide", + "error-invalid-file-type": "Type de fichier invalide", + "error-invalid-file-width": "Largeur de fichier invalide", + "error-invalid-from-address": "Vous avez informé une adresse FROM invalide.", + "error-invalid-integration": "Intégration invalide", + "error-invalid-message": "Message invalide", + "error-invalid-method": "Méthode invalide", + "error-invalid-name": "Nom incorrect", + "error-invalid-password": "Mot de passe incorrect", + "error-invalid-redirectUri": "RedirectUri invalide", + "error-invalid-role": "Rôle invalide", + "error-invalid-room": "Salon invalide", + "error-invalid-room-name": "{{room_name}} n'est pas un nom de salon valide", + "error-invalid-room-type": "{{type}} n'est pas un type de salon valide.", + "error-invalid-settings": "Paramètres fournis non valides", + "error-invalid-subscription": "Subscription invalide", + "error-invalid-token": "Jeton invalide", + "error-invalid-triggerWords": "Mots déclencheurs invalides", + "error-invalid-urls": "URL non valides", + "error-invalid-user": "Utilisateur invalide", + "error-invalid-username": "Nom d'utilisateur invalide", + "error-invalid-webhook-response": "L'URL webhook a répondu avec un statut autre que 200", + "error-message-deleting-blocked": "La suppression du message est bloquée", + "error-message-editing-blocked": "La modification du message est bloquée", + "error-message-size-exceeded": "La taille du message dépasse Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "Vous devez fournir le [unsubscribe] lien.", + "error-no-tokens-for-this-user": "Il n'y a pas de jetons pour cet utilisateur", + "error-not-allowed": "Non autorisé", + "error-not-authorized": "Non autorisé", + "error-push-disabled": "Push est désactivé", + "error-remove-last-owner": "Ceci est le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de supprimer celui-ci.", + "error-role-in-use": "Impossible de supprimer le rôle car est utilisé", + "error-role-name-required": "Le nom du rôle est requis", + "error-the-field-is-required": "Le champ {{field}} est requis.", + "error-too-many-requests": "Erreur, trop de demandes. Ralentissez, s'il vous plaît. Vous devez attendre {{seconds}} secondes avant d'essayer à nouveau.", + "error-user-is-not-activated": "L'utilisateur n'est pas activé", + "error-user-has-no-roles": "L'utilisateur ne dispose pas d'un rôle", + "error-user-limit-exceeded": "Le nombre d'utilisateurs que vous essayez d'inviter à #channel_name dépasse la limite définie par l'administrateur", + "error-user-not-in-room": "L'utilisateur n'est pas dans cette salle", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "L'enregistrement de l'utilisateur est désactivé", + "error-user-registration-secret": "Enregistrement de l'utilisateur est autorisée uniquement via l'URL secret", + "error-you-are-last-owner": "Vous êtes le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de quitter la salle.", + "Actions": "Actions", + "activity": "activité", + "Activity": "Activité", + "Add_Reaction": "Ajouter une réaction", + "Add_Server": "Ajouter un serveur", + "Add_users": "Ajouter des utilisateurs", + "Admin_Panel": "Panneau d'Administration", + "Agent": "Agent", + "Alert": "Alerte", + "alert": "alerte", + "alerts": "alertes", + "All_users_in_the_channel_can_write_new_messages": "Tous les utilisateurs du canal peuvent écrire de nouveaux messages", + "A_meaningful_name_for_the_discussion_room": "Un nom explicite pour la salle de discussion", + "All": "Tout", + "All_Messages": "Tous les messages", + "Allow_Reactions": "Autoriser les réactions", + "Alphabetical": "Alphabétique", + "and_more": "et plus", + "and": "et", + "announcement": "annonce", + "Announcement": "Annonce", + "Apply_Your_Certificate": "Valider le Certificat", + "ARCHIVE": "ARCHIVER", + "archive": "archiver", + "are_typing": "sont en train d'écrire", + "Are_you_sure_question_mark": "Êtes-vous sûr ?", + "Are_you_sure_you_want_to_leave_the_room": "Êtes-vous sûr de vouloir quitter le salon {{room}}?", + "Audio": "Audio", + "Authenticating": "Authentifier", + "Automatic": "Automatique", + "Auto_Translate": "Traduction-Auto", + "Avatar_changed_successfully": "Avatar changé avec succès!", + "Avatar_Url": "URL de l'avatar", + "Away": "absent", + "Back": "Arrière", + "Black": "Noir", + "Block_user": "Bloquer l'Utilisateur", + "Browser": "Navigateur", + "Broadcast_channel_Description": "Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages, mais les autres utilisateurs pourront répondre.", + "Broadcast_Channel": "Canal de diffusion", + "Busy": "Occupé", + "By_proceeding_you_are_agreeing": "En procédant, vous acceptez nos", + "Cancel_editing": "Annuler la modification", + "Cancel_recording": "Annuler l'enregistrement", + "Cancel": "Annuler", + "changing_avatar": "changer d'avatar", + "creating_channel": "créer un canal", + "creating_invite": "création d'une invitation", + "Channel_Name": "Nom du canal", + "Channels": "Canaux", + "Chats": "Chats", + "Call_already_ended": "L'appel a déjà terminé !", + "Click_to_join": "Cliquez pour rejoindre!", + "Close": "Fermer", + "Close_emoji_selector": "Fermer le sélecteur d'emoji", + "Closing_chat": "Fermeture du Salon de discussion", + "Change_language_loading": "Changement de la langue.", + "Chat_closed_by_agent": "Le salon de discussion a été fermé", + "Choose": "Choisir", + "Choose_from_library": "Choisissez parmi la bibliothèque", + "Choose_file": "Choisir un fichier", + "Choose_where_you_want_links_be_opened": "Choisissez ou vous souhaitez ouvrir vos liens", + "Code": "Code", + "Code_or_password_invalid": "Code ou mot de passe invalide", + "Collaborative": "Collaborative", + "Confirm": "Confirmer", + "Connect": "Se connecter", + "Connected": "Connecté", + "connecting_server": "connexion en cours au serveur", + "Connecting": "Connexion ...", + "Contact_us": "Contactez nous", + "Contact_your_server_admin": "Contactez l'administrateur de votre serveur.", + "Continue_with": "Continuer avec", + "Copied_to_clipboard": "Copié dans le presse-papier!", + "Copy": "Copier", + "Conversation": "Conversation", + "Permalink": "Lien permanent", + "Certificate_password": "Mot de passe du Certificat", + "Clear_cache": "Effacer le cache local", + "Clear_cache_loading": "Effacement du cache.", + "Whats_the_password_for_your_certificate": "Quel est le mot de passe du Certificat ?", + "Create_account": "Créer un compte", + "Create_Channel": "Créer un canal", + "Create_Direct_Messages": "Créer un message direct", + "Create_Discussion": "Créer une Discussion", + "Created_snippet": "créé un extrait", + "Create_a_new_workspace": "Créer un nouvel espace de travail", + "Create": "Créer", + "Custom_Status": "Statut Personnalisé", + "Dark": "Sombre", + "Dark_level": "Niveau d'assombrissement", + "Default": "Défaut", + "Default_browser": "Navigateur par défaut", + "Delete_Room_Warning": "Supprimer une salle supprimera tous les messages postés dans la salle. Ça ne peut pas être annulé.", + "Department": "Département", + "delete": "supprimer", + "Delete": "Supprimer", + "DELETE": "SUPPRIMER", + "deleting_room": "effacement de la salle", + "description": "la description", + "Description": "La description", + "Desktop_Options": "Desktop Options", + "Directory": "Répertoire", + "Direct_Messages": "Messages directs", + "Disable_notifications": "Désactiver les notifications", + "Discussions": "Discussions", + "Discussion_Desc": "Aide à garder un aperçu de ce qui se passe! En créant une discussion, un sous-canal de celui que vous avez sélectionné est créé et les deux sont liés.", + "Discussion_name": "Nom de la discussion", + "Done": "Fait", + "Dont_Have_An_Account": "Vous n'avez pas de compte?", + "Do_you_have_an_account": "Avez-vous un compte?", + "Do_you_have_a_certificate": "Avez-vous un certificat?", + "Do_you_really_want_to_key_this_room_question_mark": "Voulez-vous vraiment {{key}} cette salle?", + "edit": "modifier", + "edited": "édité", + "Edit": "Modifier", + "Edit_Status": "Modifier le Statut", + "Edit_Invite": "Modifier l'invitation", + "Email_or_password_field_is_empty": "Le champ e-mail ou mot de passe est vide", + "Email": "E-mail", + "email": "e-mail", + "Empty_title": "Titre vide", + "Enable_Auto_Translate": "Activer la traduction-auto", + "Enable_notifications": "Activer les notifications", + "Everyone_can_access_this_channel": "Tout le monde peut accéder à ce canal", + "Error_uploading": "Erreur lors du téléchargement", + "Expiration_Days": "Expiration (Jours)", + "Favorite": "Favoris", + "Favorites": "Favoris", + "Files": "Fichiers", + "File_description": "Description du fichier", + "File_name": "Nom de fichier", + "Finish_recording": "Terminer l'enregistrement", + "Following_thread": "Suivre le fil", + "For_your_security_you_must_enter_your_current_password_to_continue": "Pour votre sécurité, vous devez entrer votre mot de passe actuel pour continuer.", + "Forgot_password_If_this_email_is_registered": "Si cet e-mail est enregistré, nous vous enverrons des instructions pour réinitialiser votre mot de passe. Si vous ne recevez pas d'e-mail sous peu, veuillez revenir et réessayer.", + "Forgot_password": "Mot de passe oublié", + "Forgot_Password": "Mot de passe oublié", + "Forward": "Faire suivre", + "Forward_Chat": "Faire suivre le canal de discussion", + "Forward_to_department": "Faire suivre au département", + "Forward_to_user": "Faire suivre a l'utilisateur", + "Full_table": "Cliquez pour voir la table complète", + "Generate_New_Link": "Générer un nouveau lien", + "Group_by_favorites": "Grouper par favoris", + "Group_by_type": "Grouper par type", + "Hide": "Cacher", + "Has_joined_the_channel": "a rejoint le canal", + "Has_joined_the_conversation": "a rejoint la conversation", + "Has_left_the_channel": "a quitté la chaîne", + "Hide_System_Messages": "Masquer les messages système", + "Hide_type_messages": "Masquer les messages \"{{type}}\"", + "Message_HideType_uj": "L'utilisateur a rejoint", + "Message_HideType_ul": "L'utilisateur est parti", + "Message_HideType_ru": "Utilisateur éjecté", + "Message_HideType_au": "Utilisateur ajouté", + "Message_HideType_mute_unmute": "Utilisateur rendu muet / a retrouvé la parole", + "Message_HideType_r": "Le nom du salon a été changé", + "Message_HideType_ut": "L'Utilisateur a rejoint la conversation", + "Message_HideType_wm": "Bienvenue", + "Message_HideType_rm": "Message supprimé", + "Message_HideType_subscription_role_added": "a été défini avec ce Rôle", + "Message_HideType_subscription_role_removed": "Ce Rôle n'est plus défini", + "Message_HideType_room_archived": "Salon Archivé", + "Message_HideType_room_unarchived": "Salon Désarchivé", + "IP": "IP", + "In_app": "In-app", + "In_App_And_Desktop": "In-app et Bureau", + "In_App_and_Desktop_Alert_info": "Affiche une bannière en haut de l'écran lorsque l'application est ouverte et affiche une notification sur le bureau", + "Invisible": "Invisible", + "Invite": "Inviter", + "is_a_valid_RocketChat_instance": "est une instance valide de Rocket.Chat", + "is_not_a_valid_RocketChat_instance": "n'est pas une instance valide de Rocket.Chat", + "is_typing": "est en train d'écrire", + "Invalid_or_expired_invite_token": "Jeton d'invitation non valide ou expiré", + "Invalid_server_version": "Le serveur que vous essayez de connecter utilise une version qui n'est plus prise en charge par l'application: {{currentVersion}}.\n\nNous exigeons la version {{minVersion}}", + "Invite_Link": "Lien d'invitation", + "Invite_users": "Inviter utilisateur", + "Join": "Rejoindre", + "Join_our_open_workspace": "Rejoignez notre espace de travail ouvert", + "Join_your_workspace": "Rejoignez votre espace de travail", + "Just_invited_people_can_access_this_channel": "Seuls les invités peuvent accéder à ce canal", + "Language": "Langue", + "last_message": "Dernier message", + "Leave_channel": "Quitter le canal", + "leaving_room": "En quittent le canal", + "leave": "quitter", + "Legal": "Légale", + "Light": "Lumière", + "License": "Licence", + "Livechat": "Livechat", + "Livechat_edit": "Livechat modification", + "Login": "Connexion", + "Login_error": "Vos identifiants ont été rejetés! Veuillez réessayer.", + "Login_with": "Se connecter avec", + "Logging_out": "Déconnexion.", + "Logout": "Se déconnecter", + "Max_number_of_uses": "Nombre maximum d'utilisations", + "Max_number_of_users_allowed_is_number": "Le nombre maximum d'utilisateurs autorisés est {{maxUsers}}", + "members": "membres", + "Members": "Membres", + "Mentioned_Messages": "Messages mentionnés", + "mentioned": "mentionné", + "Mentions": "Mentions", + "Message_accessibility": "message de {{user}} à {{time}}: {{message}}", + "Message_actions": "Actions de message", + "Message_pinned": "Message épinglé", + "Message_removed": "Message supprimé", + "Message_starred": "Message suivi", + "Message_unstarred": "Message non suivi", + "message": "message", + "messages": "messages", + "Message": "Message", + "Messages": "Messages", + "Message_Reported": "Message signalé", + "Microphone_Permission_Message": "Rocket.Chat doit avoir accès à votre microphone pour pouvoir envoyer un message audio.", + "Microphone_Permission": "Permission de microphone", + "Mute": "Rendre muet", + "muted": "Rendu muet", + "My_servers": "Mes serveurs", + "N_people_reacted": "{{n}} personnes ont réagi", + "N_users": "{{n}} utilisateurs", + "name": "nom", + "Name": "Nom", + "Navigation_history": "Historique de navigation", + "Never": "Jamais", + "New_Message": "Nouveau message", + "New_Password": "Nouveau mot de passe", + "New_Server": "Nouveau serveur", + "Next": "Suivant", + "No_files": "Aucun fichier", + "No_limit": "Pas de limites", + "No_mentioned_messages": "Aucun message mentionné", + "No_pinned_messages": "Aucun message épinglé", + "No_results_found": "Aucun résultat trouvé", + "No_starred_messages": "Pas de messages suivis", + "No_thread_messages": "Aucun fil de discussion", + "No_label_provided": "Aucun {{label}} fourni.", + "No_Message": "Aucun message", + "No_messages_yet": "Pas encore de messages", + "No_Reactions": "Aucune réaction", + "No_Read_Receipts": "Pas d'accusé de lecture", + "Not_logged": "Non connecté", + "Not_RC_Server": "Ce n'est pas un serveur Rocket.Chat.\n{{contact}}", + "Nothing": "Rien", + "Nothing_to_save": "Rien à enregistrer!", + "Notify_active_in_this_room": "Notifier les utilisateurs actifs dans cette salle", + "Notify_all_in_this_room": "Notifier tous dans cette salle", + "Notifications": "Notifications", + "Notification_Duration": "Durée de Notification", + "Notification_Preferences": "Préférences de Notification", + "No_available_agents_to_transfer": "Aucun agent disponible à qui transférer", + "Offline": "Hors ligne", + "Oops": "Oops!", + "Omnichannel": "Omnichannel", + "Onboarding_description": "Un espace de travail est l'espace de collaboration de votre équipe ou organisation. Demandez à l'administrateur de l'espace de travail l'adresse pour rejoindre ou créez-en une pour votre équipe.", + "Onboarding_join_workspace": "Rejoindre un espace de travail", + "Onboarding_subtitle": "Au-delà de la collaboration d'équipe", + "Onboarding_title": "Bienvenue sur Rocket.Chat", + "Onboarding_join_open_description": "Rejoignez notre espace de travail ouvert pour discuter avec l'équipe et la communauté Rocket.Chat.", + "Onboarding_agree_terms": "En continuant, vous acceptez Rocket.Chat", + "Onboarding_less_options": "Moins d'options", + "Onboarding_more_options": "Plus d'options", + "Online": "En ligne", + "Only_authorized_users_can_write_new_messages": "Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages.", + "Open_emoji_selector": "Ouvrir sélecteur emoji", + "Open_Source_Communication": "Communication Open Source", + "Open_your_authentication_app_and_enter_the_code": "Ouvrez votre application d'authentification et entrez le code.", + "OR": "OU", + "OS": "OS", + "Overwrites_the_server_configuration_and_use_room_config": "Écrase la configuration du serveur et utilise la configuration du salon", + "Password": "Mot de passe", + "Parent_channel_or_group": "Chaîne ou groupe parent", + "Permalink_copied_to_clipboard": "Lien permanent copié dans le presse-papier!", + "Phone": "Téléphone", + "Pin": "Épingler", + "Pinned_Messages": "Messages épinglés", + "pinned": "épinglé", + "Pinned": "Épinglé", + "Please_add_a_comment": "Veuillez ajouter un commentaire", + "Please_enter_your_password": "Veuillez entrer votre mot de passe", + "Please_wait": "Attendez s'il vous plaît", + "Preferences": "Préférences", + "Preferences_saved": "Préférences sauvegardées!", + "Privacy_Policy": " Politique de confidentialité", + "Private_Channel": "Canal privé", + "Private_Groups": "Groupes privés", + "Private": "Privé", + "Processing": "En traitement...", + "Profile_saved_successfully": "Profil enregistré avec succès!", + "Profile": "Profil", + "Public_Channel": "Canal Public", + "Public": "Public", + "Push_Notifications": "Notifications Push", + "Push_Notifications_Alert_Info": "Ces notifications vous sont livrées lorsque l'application n'est pas ouverte", + "Quote": "Citation", + "Reactions_are_disabled": "Les réactions sont désactivées", + "Reactions_are_enabled": "Les réactions sont activées", + "Reactions": "Réactions", + "Read": "Lecture", + "Read_External_Permission_Message": "Rocket.Chat doit accéder aux photos, aux médias et aux fichiers sur votre appareil", + "Read_External_Permission": "Permission de lecture des fichiers", + "Read_Only_Channel": "Chaîne en lecture seule", + "Read_Only": "Lecture seule", + "Read_Receipt": "Accusé de réception", + "Receive_Group_Mentions": "Recevoir des mentions de groupe", + "Receive_Group_Mentions_Info": "Recevoir les mentions @all et @here", + "Register": "S'inscrire", + "Repeat_Password": "Répéter le mot de passe", + "Replied_on": "Répondu le:", + "replies": "réponses", + "reply": "répondre", + "Reply": "Répondre", + "Report": "Signaler", + "Receive_Notification": "Recevoir une notification", + "Receive_notifications_from": "Recevoir les notifications de {{name}}", + "Resend": "Renvoyer", + "Reset_password": "Réinitialiser le mot de passe", + "resetting_password": "réinitialisation du mot de passe", + "RESET": "RÉINITIALISER", + "Return": "Retour", + "Review_app_title": "Appréciez-vous cette application?", + "Review_app_desc": "Donnez-nous 5 étoiles sur {{store}}", + "Review_app_yes": "Bien sur!", + "Review_app_no": "Non", + "Review_app_later": "plus tard", + "Review_app_unable_store": "Impossible d'ouvrir {{store}}", + "Review_this_app": "Donnez votre avis sur cette application", + "Remove": "Retirer", + "Roles": "Rôles", + "Room_actions": "Actions de canal", + "Room_changed_announcement": "Annonce de canal est changée en: {{announcement}} par {{userBy}}", + "Room_changed_description": "Description de canal est changée en: {{description}} par {{userBy}}", + "Room_changed_privacy": "Type de canal est changé en: {{type}} par {{userBy}}", + "Room_changed_topic": "Le sujet de canal est changé en: {{topic}} par {{userBy}}", + "Room_Files": "Fichiers de canal", + "Room_Info_Edit": "Infos sur le canal Modifier", + "Room_Info": "Info sur le canal", + "Room_Members": "Membres de canal", + "Room_name_changed": "Nom de canal est changé en: {{name}} par {{userBy}}", + "SAVE": "ENREGISTRER", + "Save_Changes": "Sauvegarder les modifications", + "Save": "Sauvegarder", + "Saved": "Sauvé", + "saving_preferences": "sauvegardant les préférences", + "saving_profile": "enregistrement du profil", + "saving_settings": "enregistrement des paramètres", + "saved_to_gallery": "Sauvé dans la galerie", + "Search_Messages": "Rechercher des messages", + "Search": "Recherche", + "Search_by": "Recherche par", + "Search_global_users": "Rechercher des utilisateurs mondiaux", + "Search_global_users_description": "Si vous activez, vous pouvez rechercher n'importe quel utilisateur d'autres sociétés ou serveurs.", + "Seconds": "{{second}} secondes", + "Select_Avatar": "Sélectionnez un avatar", + "Select_Server": "Sélectionnez un serveur", + "Select_Users": "Sélectionner des utilisateurs", + "Select_a_Channel": "Sélectionnez un canal", + "Select_a_Department": "Sélectionnez un département", + "Select_an_option": "Sélectionnez une option", + "Select_a_User": "Sélectionnez un utilisateur", + "Send": "Envoyer", + "Send_audio_message": "Envoyer un message audio", + "Send_crash_report": "Envoyer un rapport de plantage", + "Send_message": "Envoyer un message", + "Send_me_the_code_again": "Envoyez-moi à nouveau le code", + "Send_to": "Envoyer à...", + "Sending_to": "Envoi à", + "Sent_an_attachment": "Envoyé une pièce jointe", + "Server": "Serveur", + "Servers": "Serveurs", + "Server_version": "Version du serveur: {{version}}", + "Set_username_subtitle": "Le nom d'utilisateur est utilisé pour permettre aux autres de vous mentionner dans les messages", + "Set_custom_status": "Définir un statut personnalisé", + "Set_status": "Définir le statut", + "Status_saved_successfully": "Statut enregistré avec succès!", + "Settings": "Paramètres", + "Settings_succesfully_changed": "Paramètres modifiés avec succès!", + "Share": "Partager", + "Share_Link": "Partager le lien", + "Share_this_app": "Partager cette application", + "Show_more": "Afficher plus..", + "Show_Unread_Counter": "Afficher le compteur non lu", + "Show_Unread_Counter_Info": "Le compteur non-lu est affiché sous forme de badge à droite de la chaîne, dans la liste", + "Sign_in_your_server": "Connectez-vous à votre serveur", + "Sign_Up": "S'inscrire", + "Some_field_is_invalid_or_empty": "Certains champs sont invalides ou vides", + "Sorting_by": "Tri par {{key}}", + "Sound": "Son", + "Star_room": "Favoriser canal", + "Star": "Favoris", + "Starred_Messages": "Les messages favorisé", + "starred": "favorisé", + "Starred": "Favorisé", + "Start_of_conversation": "Début de conversation", + "Start_a_Discussion": "Lancer une discussion", + "Started_discussion": "A commencé une discussion:", + "Started_call": "Appel lancé par {{userBy}}", + "Submit": "Soumettre", + "Table": "Table", + "Tags": "Mots clés", + "Take_a_photo": "Prendre une photo", + "Take_a_video": "Prendre une vidéo", + "Take_it": "Prends-le!", + "tap_to_change_status": "Appuyez pour changer de statut", + "Tap_to_view_servers_list": "Appuyez pour afficher la liste des serveurs", + "Terms_of_Service": " Conditions d'utilisation ", + "Theme": "Thème", + "The_user_wont_be_able_to_type_in_roomName": "L'utilisateur ne pourra pas écrire dans {{roomName}}", + "The_user_will_be_able_to_type_in_roomName": "L'utilisateur pourra écrire dans {{roomName}}", + "There_was_an_error_while_action": "Il y avait une erreur en {{action}}!", + "This_room_is_blocked": "Cette canal est bloquée", + "This_room_is_read_only": "Cette canal est en lecture seule", + "Thread": "Fil de discutions", + "Threads": "Fils de discutions", + "Timezone": "Fuseau horaire", + "To": "A", + "topic": "sujet", + "Topic": "Sujet", + "Translate": "Traduire", + "Try_again": "Réessayer", + "Two_Factor_Authentication": "Authentification à deux facteurs", + "Type_the_channel_name_here": "Tapez le nom de canal ici", + "unarchive": "désarchiver", + "UNARCHIVE": "DÉSARCHIVER", + "Unblock_user": "Débloquer l'utilisateur", + "Unfavorite": "Supprimer des favoris", + "Unfollowed_thread": "Ne plus suivre ce fil", + "Unmute": "Rendre La parole", + "unmuted": "Rendu la parole", + "Unpin": "Détacher", + "unread_messages": "non lus", + "Unread": "Non lu", + "Unread_on_top": "Non lu sur le dessus", + "Unstar": "Unstar", + "Updating": "Mise à jour...", + "Uploading": "Téléchargement", + "Upload_file_question_mark": "Télécharger le fichier?", + "User": "Utilisateur", + "Users": "Utilisateurs", + "User_added_by": "L'utilisateur {{userAdded}} a été ajouté par {{userBy}}", + "User_Info": "Info d'utilisateur", + "User_has_been_key": "L'utilisateur a été {{key}}", + "User_is_no_longer_role_by_": "{{user}} n'est plus {{role}} par {{userBy}}", + "User_muted_by": "L'utilisateur {{userMuted}} a été rendu muet par {{userBy}}", + "User_removed_by": "L'utilisateur {{userRemoved}} a été retiré par {{userBy}}", + "User_sent_an_attachment": "{{user}} envoyé une pièce jointe", + "User_unmuted_by": "L'utilisateur {{userBy}} a rendu la parole a {{userUnmuted}}", + "User_was_set_role_by_": "{{user}} l'utilisateur a été défini {{role}} par {{userBy}}", + "Username_is_empty": "Nom d'utilisateur est vide", + "Username": "Nom d'utilisateur", + "Username_or_email": "Nom d'utilisateur ou address e-mail", + "Uses_server_configuration": "Utilise la configuration du serveur", + "Validating": "Validation", + "Registration_Succeeded": "Inscription réussie!", + "Verify": "Vérifier", + "Verify_email_title": "Inscription réussie!", + "Verify_email_desc": "Nous vous avons envoyé un e-mail pour confirmer votre inscription. Si vous ne recevez pas d'e-mail sous peu, veuillez revenir et réessayer.", + "Verify_your_email_for_the_code_we_sent": "Vérifiez votre e-mail pour le code que nous avons envoyé", + "Video_call": "Appel vidéo", + "View_Original": "Voir l'original", + "Voice_call": "Appel vocal", + "Waiting_for_network": "En attente du réseau ...", + "Websocket_disabled": "Le Websocket est désactivé pour ce serveur.\n{{contact}}", + "Welcome": "Bienvenue", + "What_are_you_doing_right_now": "Qu'es ce que vous faites actuellement?", + "Whats_your_2fa": "Quel est votre code 2FA?", + "Without_Servers": "Sans serveurs", + "Workspaces": "Espaces de travail", + "Would_you_like_to_return_the_inquiry": "Souhaitez-vous retourner la demande?", + "Write_External_Permission_Message": "Rocket.Chat a besoin d'accéder à votre galerie pour que vous puissiez enregistrer des images.", + "Write_External_Permission": "Autorisation de la galerie", + "Yes": "Oui", + "Yes_action_it": "Oui, {{action}} le!", + "Yesterday": "Hier", + "You_are_in_preview_mode": "Vous êtes en mode de prévisualisation", + "You_are_offline": "Vous êtes hors ligne", + "You_can_search_using_RegExp_eg": "Vous pouvez rechercher à l'aide de RegExp. e.g. `/^text$/i`", + "You_colon": "Vous: ", + "you_were_mentioned": "vous avez été mentionné", + "You_were_removed_from_channel": "Vous avez été retiré de{{channel}}", + "you": "vous", + "You": "Vous", + "Logged_out_by_server": "Vous avez été déconnecté par le serveur. Veuillez vous reconnecter.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Vous devez accéder à au moins un serveur Rocket.Chat pour partager quelque chose.", + "Your_certificate": "Votre Certificat", + "Your_invite_link_will_expire_after__usesLeft__uses": "Votre lien d'invitation expirera après {{usesLeft}} utilisations.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Votre lien d'invitation expirera le {{date}} ou après {{usesLeft}} utilisations.", + "Your_invite_link_will_expire_on__date__": "Votre lien d'invitation expirera le {{date}}.", + "Your_invite_link_will_never_expire": "Votre lien d'invitation n'expirera jamais.", + "Your_workspace": "Votre espace de travail", + "Version_no": "Version: {{version}}", + "You_will_not_be_able_to_recover_this_message": "Vous ne pourrez pas récupérer ce message!", + "You_will_unset_a_certificate_for_this_server": "Vous allez annuler un certificat pour ce serveur", + "Change_Language": "Changer la Langue", + "Crash_report_disclaimer": "Nous ne suivons jamais le contenu de vos chats. Le rapport de plantage ne contient que des informations pertinentes pour nous afin d'identifier les problèmes et de les résoudre.", + "Type_message": "Écrire un message", + "Room_search": "Recherche de salon", + "Room_selection": "Sélection du Salon 1...9", + "Next_room": "Salon Suivant", + "Previous_room": "Salon Précédent", + "New_room": "Nouveau salon", + "Upload_room": "Envoyer sur un salon", + "Search_messages": "Recherche de messages", + "Scroll_messages": "Défiler messages", + "Reply_latest": "Répondre au dernier", + "Reply_in_Thread": "Répondre dans le fil", + "Server_selection": "Sélection du serveur", + "Server_selection_numbers": "Sélection du Serveur 1...9", + "Add_server": "Ajouter serveur", + "New_line": "Nouvelle ligne", + "You_will_be_logged_out_of_this_application": "Vous serez déconnecté de cette application.", + "Clear": "Effacer", + "This_will_clear_all_your_offline_data": "Cela effacera toutes vos données hors-ligne.", + "This_will_remove_all_data_from_this_server": "Cela supprimera toutes les données de ce serveur.", + "Mark_unread": "Marquer comme non lu", + "Wait_activation_warning": "Avant de pouvoir vous connecter, votre compte doit être activé manuellement par un administrateur.", + "Screen_lock": "Verrouillage d'écran", + "Local_authentication_biometry_title": "Authentifier", + "Local_authentication_biometry_fallback": "Utiliser le mot de passe", + "Local_authentication_unlock_option": "Déverrouiller avec mot de passe", + "Local_authentication_change_passcode": "Changer le code", + "Local_authentication_info": "Remarque: si vous oubliez le code, vous devrez supprimer et réinstaller l'application.", + "Local_authentication_facial_recognition": "reconnaissance faciale", + "Local_authentication_fingerprint": "empreinte digitale", + "Local_authentication_unlock_with_label": "Déverrouiller avec {{label}}", + "Local_authentication_auto_lock_60": "Après 1 minute", + "Local_authentication_auto_lock_300": "Après 5 minutes", + "Local_authentication_auto_lock_900": "Après 15 minutes", + "Local_authentication_auto_lock_1800": "Après 30 minutes", + "Local_authentication_auto_lock_3600": "Après 1 heure", + "Passcode_enter_title": "Entrez votre mot de passe", + "Passcode_choose_title": "Choisissez votre nouveau mot de passe", + "Passcode_choose_confirm_title": "Confirmez votre nouveau mot de passe", + "Passcode_choose_error": "Les codes secrets ne correspondent pas. Réessayer.", + "Passcode_choose_force_set": "Code d'accès requis par l'administrateur", + "Passcode_app_locked_title": "App verrouillée", + "Passcode_app_locked_subtitle": "Réessayez dans {{timeLeft}} secondes", + "After_seconds_set_by_admin": "Après {{seconds}} secondes (défini par l'administrateur)", + "Dont_activate": "Ne pas activer maintenant", + "Queued_chats": "Discussions en file d'attente", + "Queue_is_empty": "La file d'attente est vide" +} \ No newline at end of file diff --git a/app/i18n/locales/it.js b/app/i18n/locales/it.js deleted file mode 100644 index c0a0c245eb9..00000000000 --- a/app/i18n/locales/it.js +++ /dev/null @@ -1,708 +0,0 @@ -export default { - '1_person_reacted': '1 persona ha reagito', - '1_user': '1 utente', - 'error-action-not-allowed': '{{action}} non autorizzata', - 'error-application-not-found': 'Applicazione non trovata', - 'error-archived-duplicate-name': 'Esiste già un canale archiviato con nome {{room_name}}', - 'error-avatar-invalid-url': 'URL avatar non valido: {{url}}', - 'error-avatar-url-handling': 'Errore nella gestione dell\'impostazione avatar dall\'URL ({{url}}) per {{username}}', - 'error-cant-invite-for-direct-room': 'Impossibile invitare l\'utente alle stanze dirette', - 'error-could-not-change-email': 'Impossibile cambiare l\'indirizzo e-mail', - 'error-could-not-change-name': 'Impossibile cambiare nome', - 'error-could-not-change-username': 'Impossibile cambiare username', - 'error-could-not-change-status': 'Impossibile cambiare lo stato', - 'error-delete-protected-role': 'Impossibile eliminare un ruolo protetto', - 'error-department-not-found': 'Reparto non trovato', - 'error-direct-message-file-upload-not-allowed': 'La condivisione di file non è autorizzata nei messaggi diretti', - 'error-duplicate-channel-name': 'Esiste già un canale con nome {{channel_name}}', - 'error-email-domain-blacklisted': 'Il dominio e-mail è nella lista nera', - 'error-email-send-failed': 'Errore nel tentativo di invio e-mail: {{message}}', - 'error-save-image': 'Errore nel salvataggio dell\'immagine', - 'error-save-video': 'Errore nel salvataggio del video', - 'error-field-unavailable': '{{field}} è già in uso :(', - 'error-file-too-large': 'File troppo grande', - 'error-importer-not-defined': 'L\'importatore non è stato definito correttamente: classe Import mancante.', - 'error-input-is-not-a-valid-field': '{{input}} non è valido come {{field}}', - 'error-invalid-actionlink': 'Link azione non valido', - 'error-invalid-arguments': 'Parametri non validi', - 'error-invalid-asset': 'Risorsa non valida', - 'error-invalid-channel': 'Canale non valido.', - 'error-invalid-channel-start-with-chars': 'Canale non valido. Inizia con @ o #', - 'error-invalid-custom-field': 'Campo personalizzato non valido', - 'error-invalid-custom-field-name': 'Nome campo personalizzato non valido. Usa solo lettere, numeri, trattini e underscore.', - 'error-invalid-date': 'Data fornita non valida.', - 'error-invalid-description': 'Descrizione non valida', - 'error-invalid-domain': 'Dominio non valido', - 'error-invalid-email': 'E-mail {{emai}} non valida', - 'error-invalid-email-address': 'Indirizzo e-mail non valido', - 'error-invalid-file-height': 'Altezza del file non valida', - 'error-invalid-file-type': 'Tipo di file non valido', - 'error-invalid-file-width': 'Larghezza del file non valida', - 'error-invalid-from-address': 'Hai informato un indirizzo FROM non valido.', - 'error-invalid-integration': 'Integrazione non valida', - 'error-invalid-message': 'Messaggio non valido', - 'error-invalid-method': 'Metodo o funzione non valida', - 'error-invalid-name': 'Nome non corretto', - 'error-invalid-password': 'Password non corretta', - 'error-invalid-redirectUri': 'redirectUri non valido', - 'error-invalid-role': 'Ruolo non valido', - 'error-invalid-room': 'Stanza non valida', - 'error-invalid-room-name': '{{room_name}} non è un nome di stanza valido', - 'error-invalid-room-type': '{{type}} non è un tipo di stanza valido', - 'error-invalid-settings': 'Impostazioni fornite non valide', - 'error-invalid-subscription': 'Iscrizione non valida', - 'error-invalid-token': 'Token non valido', - 'error-invalid-triggerWords': 'triggerWords non valide', - 'error-invalid-urls': 'URL non validi', - 'error-invalid-user': 'Utente non valido', - 'error-invalid-username': 'Nome utente non valido', - 'error-invalid-webhook-response': 'L\'URL del webhook ha risposto con uno stato diverso da 200', - 'error-message-deleting-blocked': 'Cancellazione di messaggi bloccata', - 'error-message-editing-blocked': 'Modifica di messaggi bloccata', - 'error-message-size-exceeded': 'La dimensione del messaggio supera Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'Devi fornire il link [unsubscribe].', - 'error-no-tokens-for-this-user': 'Non ci sono token per questo utente', - 'error-not-allowed': 'Non permesso', - 'error-not-authorized': 'Non autorizzato', - 'error-push-disabled': 'Push è disabilitato', - 'error-remove-last-owner': 'Questo è l\'ultimo proprietario rimasto. Imposta un nuovo proprietario prima di rimuoverlo.', - 'error-role-in-use': 'Impossibile eliminare il ruolo perchè ancora in uso', - 'error-role-name-required': 'Il nome del ruolo è obbligatorio', - 'error-the-field-is-required': 'Il campo {{field}} è obbligatorio.', - 'error-too-many-requests': 'Errore, troppe richieste effettuate. Rallenta. Devi attendere {{seconds}} secondi prima di riprovare.', - 'error-user-is-not-activated': 'L\'utente non è attivato', - 'error-user-has-no-roles': 'L\'utente non ha ruoli', - 'error-user-limit-exceeded': 'Il numero di utenti che stai invitando in #channel_name supera il limite imposto dall\'amministratore', - 'error-user-not-in-room': 'L\'utente non è in questa stanza', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'Registrazione utente disabilitata', - 'error-user-registration-secret': 'Registrazione utente permessa solo via URL segreto', - 'error-you-are-last-owner': 'Sei l\'ultimo proprietario rimasto. Imposta un nuovo proprietario prima di lasciare la stanza.', - Actions: 'Azioni', - activity: 'attività', - Activity: 'Attività', - Add_Reaction: 'Aggiungi reazione', - Add_Server: 'Aggiungi server', - Add_users: 'Aggiungi utenti', - Admin_Panel: 'Amministrazione', - Agent: 'Agente', - Alert: 'Avviso', - alert: 'avviso', - alerts: 'avvisi', - All_users_in_the_channel_can_write_new_messages: 'Tutti gli utenti nel canale possono scrivere messaggi', - A_meaningful_name_for_the_discussion_room: 'Un nome significativo per il canale di discussione', - All: 'Tutti', - All_Messages: 'Tutti i messaggi', - Allow_Reactions: 'Permetti reazioni', - Alphabetical: 'Alfabetico', - and_more: 'e altro', - and: 'e', - announcement: 'annuncio', - Announcement: 'Annuncio', - Apply_Your_Certificate: 'Applica il tuo certificato', - ARCHIVE: 'ARCHIVIO', - archive: 'archivio', - are_typing: 'stanno scrivendo', - Are_you_sure_question_mark: 'Sei sicuro?', - Are_you_sure_you_want_to_leave_the_room: 'Sei sicuro di voler lasciare la stanza {{room}}?', - Audio: 'Audio', - Authenticating: 'Autenticazione', - Automatic: 'Automatico', - Auto_Translate: 'Traduzione automatica', - Avatar_changed_successfully: 'Avatar aggiornato correttamente!', - Avatar_Url: 'URL avatar', - Away: 'Assente', - Back: 'Indietro', - Black: 'Nero', - Block_user: 'Blocca utente', - Browser: 'Browser', - Broadcast_channel_Description: 'Solo gli utenti autorizzati possono scrivere messaggi, ma gli altri utenti saranno in grado di rispondere', - Broadcast_Channel: 'Canale broadcast', - Busy: 'Occupato', - By_proceeding_you_are_agreeing: 'Procedendo accetti i nostri', - Cancel_editing: 'Annulla modifica', - Cancel_recording: 'Annulla registrazione', - Cancel: 'Annulla', - changing_avatar: 'cambio avatar', - creating_channel: 'creo canale', - creating_invite: 'creo invito', - Channel_Name: 'Nome canale', - Channels: 'Canali', - Chats: 'Chat', - Call_already_ended: 'Chiamata già terminata!', - Clear_cookies_alert: 'Vuoi cancellare tutti i cookie?', - Clear_cookies_desc: 'Questo cancellerà tutti i coockie di login, permettendoti di accedere con altri account.', - Clear_cookies_yes: 'Si, cancella i cookie', - Clear_cookies_no: 'No, mantieni i cookie', - Click_to_join: 'Clicca per unirti!', - Close: 'Chiudi', - Close_emoji_selector: 'Chiudi selettore emoji', - Closing_chat: 'Chiudendo la chat', - Change_language_loading: 'Cambiando la lingua.', - Chat_closed_by_agent: 'Chat chiusa dall\'agente', - Choose: 'Scegli', - Choose_from_library: 'Scegli dalla libreria', - Choose_file: 'Scegli file', - Choose_where_you_want_links_be_opened: 'Scegli dove vuoi che vengano aperti i link', - Code: 'Codice', - Code_or_password_invalid: 'Codice o password non validi', - Collaborative: 'Collaborativo', - Confirm: 'Conferma', - Connect: 'Connetti', - Connected: 'Connesso', - connecting_server: 'connessione al server', - Connecting: 'Connessione...', - Contact_us: 'Contattaci', - Contact_your_server_admin: 'Contatta l\'amministratore.', - Continue_with: 'Continua con', - Copied_to_clipboard: 'Copiato negli appunti!', - Copy: 'Copia', - Permalink: 'Permalink', - Conversation: 'Conversazione', - Certificate_password: 'Password certificato', - Clear_cache: 'Cancella la cache locale', - Clear_cache_loading: 'Cancellando la cache.', - Whats_the_password_for_your_certificate: 'Qual\'è la password del tuo certificato?', - Create_account: 'Crea un account', - Create_Channel: 'Crea canale', - Create_Direct_Messages: 'Crea Messaggi Privati', - Create_Discussion: 'Crea una Discussione', - Created_snippet: 'Snippet creato', - Create_a_new_workspace: 'Crea un nuovo workspace', - Create: 'Crea', - Custom_Status: 'Stato personalizzato', - Dark: 'Scuro', - Dark_level: 'Contrasto', - Default: 'Predefinito', - Default_browser: 'Browser predefinito', - Delete_Room_Warning: 'Eliminare una stanza cancellerà tutti i messaggi in essa contenuti. Questa azione non può essere annullata.', - Department: 'Dipartimento', - delete: 'elimina', - Delete: 'Elimina', - DELETE: 'ELIMINA', - deleting_room: 'cancellazione stanza', - description: 'descrizione', - Description: 'Descrizione', - Desktop_Options: 'Opzioni Desktop', - Desktop_Notifications: 'Notifiche Desktop', - Desktop_Alert_info: 'Queste notifiche vengono inviate sul client desktop', - Directory: 'Rubrica', - Direct_Messages: 'Messaggi diretti', - Disable_notifications: 'Disabilita notifiche', - Discussions: 'Discussioni', - Discussion_Desc: 'Aiuta a mantenere una panoramica di ciò che sta succedendo! Creando una discussione verrà creato un sotto-canale di quello selezionato ed entrambi saranno collegati', - Discussion_name: 'Nome della discussione', - Done: 'Fatto', - Dont_Have_An_Account: 'Non hai un account?', - Do_you_have_an_account: 'Hai un account?', - Do_you_have_a_certificate: 'Hai un certificato?', - Do_you_really_want_to_key_this_room_question_mark: 'Sei sicuro di voler {{key}} questa stanza?', - E2E_Encryption: 'Crittografia E2E', - E2E_How_It_Works_info1: 'Ora puoi creare gruppi e messaggi privati crittografati. Puoi anche crittografare quelli già esistenti.', - E2E_How_It_Works_info2: 'Questa è *crittografia end-to-end*, quindi la chiave per cifrare/decifrare i messaggi non verrà salvata sul server. Per questo motivo *devi salvare questa password in un luogo sicuro* dove poterla recuperare in seguito qualora necessario.', - E2E_How_It_Works_info3: 'Procedendo verrà generata automaticamente una password E2E.', - E2E_How_It_Works_info4: 'Puoi impostare una nuova password per la chiave di cifratura in qualsiasi momento da uno dei browser dove hai inserito la password E2E esistente.', - edit: 'modifica', - edited: 'modificato', - Edit: 'Modifica', - Edit_Status: 'Modifica Stato', - Edit_Invite: 'Modifica invito', - End_to_end_encrypted_room: 'Stanza crittografata end to end', - end_to_end_encryption: 'Crittografia end to end', - Email_Notification_Mode_All: 'Ogni Menzione/Messaggio Privato', - Email_Notification_Mode_Disabled: 'Disabilitato', - Email_or_password_field_is_empty: 'Il campo e-mail o password sono vuoti', - Email: 'E-mail', - email: 'e-mail', - Empty_title: 'Titolo vuoto', - Enable_Auto_Translate: 'Abilita traduzione automatica', - Enable_notifications: 'Abilita notifiche', - Encrypted: 'Crittografato', - Encrypted_message: 'Messaggio crittografato', - Enter_Your_E2E_Password: 'Inserisci la tua password E2E', - Enter_Your_Encryption_Password_desc1: 'Potrai così accedere ai tuoi gruppi privati e messaggi privati crittografati.', - Enter_Your_Encryption_Password_desc2: 'Devi inserire la password per cifrare/decifrare i messaggi ovunque usi la chat.', - Encryption_error_title: 'La tua password di cifratura sembra errata', - Encryption_error_desc: 'Non è stato possibile importare la tua chiave di cifratura.', - Everyone_can_access_this_channel: 'Tutti hanno accesso a questo canale', - Error_uploading: 'Errore nel caricamento di', - Expiration_Days: 'Scadenza (giorni)', - Favorite: 'Preferito', - Favorites: 'Preferiti', - Files: 'File', - File_description: 'Descrizione file', - File_name: 'Nome file', - Finish_recording: 'Termina registrazione', - Following_thread: 'Thread seguito', - For_your_security_you_must_enter_your_current_password_to_continue: 'Per garantire la sicurezza del tuo account, inserisci la password per continuare.', - Forgot_password_If_this_email_is_registered: 'Se questa e-mail è registrata, manderemo istruzioni su come resettare la tua password. Se non ricevi nulla, torna qui e riprova di nuovo.', - Forgot_password: 'Password dimenticata', - Forgot_Password: 'Password dimenticata', - Forward: 'Inoltra', - Forward_Chat: 'Inoltra Chat', - Forward_to_department: 'Inoltra a dipartimento', - Forward_to_user: 'Inoltra ad udente', - Full_table: 'Clicca per la tabella completa', - Generate_New_Link: 'Genera nuovo link', - Group_by_favorites: 'Raggruppa per preferiti', - Group_by_type: 'Raggruppa per tipo', - Hide: 'Nascondi', - Has_joined_the_channel: 'si è unito al canale', - Has_joined_the_conversation: 'si è unito alla conversazione', - Has_left_the_channel: 'ha lasciato il canale', - Hide_System_Messages: 'Nascondi messaggi di sistema', - Hide_type_messages: 'Nascondi messaggi di "{{type}}"', - How_It_Works: 'Come funziona', - Message_HideType_uj: 'Ingresso Utente', - Message_HideType_ul: 'Uscita Utente', - Message_HideType_ru: 'Rimozione Utente', - Message_HideType_au: 'Aggiunta Utente', - Message_HideType_mute_unmute: 'Microfono Utente attivato / disattivato', - Message_HideType_r: 'Nome Stanza cambiato', - Message_HideType_ut: 'Ingresso Utente in Conversazione', - Message_HideType_wm: 'Benvenuto', - Message_HideType_rm: 'Rimozione Messaggio', - Message_HideType_subscription_role_added: 'Creazione ruolo', - Message_HideType_subscription_role_removed: 'Rimozione ruolo', - Message_HideType_room_archived: 'Stanza archiviata', - Message_HideType_room_unarchived: 'Stanza ripristinata dall\'archivio', - I_Saved_My_E2E_Password: 'Ho salvato la mia Password E2E', - IP: 'Indirizzo IP', - In_app: 'In-app', - In_App_And_Desktop: 'In-app e Desktop', - In_App_and_Desktop_Alert_info: 'Mostra una notifica in cima allo schermo quando l\'app è aperta, e mostra una notifica sul desktop', - Invisible: 'Invisibile', - Invite: 'Invita', - is_a_valid_RocketChat_instance: 'è un\'istanza di Rocket.Chat valida', - is_not_a_valid_RocketChat_instance: 'non è una valida istanza di Rocket.Chat', - is_typing: 'sta scrivendo', - Invalid_or_expired_invite_token: 'Token di invito non valido o scaduto', - Invalid_server_version: 'Il server a cui stai cercando di connetterti sta utilizzando una versione non più supportata dall\'app: {{currentVersion}}.\n\nVersione minima richiesta: {{minVersion}}', - Invite_Link: 'Link di invito', - Invite_users: 'Invita utenti', - Join: 'Entra', - Join_Code: 'Codice d\'accesso', - Insert_Join_Code: 'Inserisci il codice d\'accesso', - Join_our_open_workspace: 'Unisciti al nostro workspace', - Join_your_workspace: 'Unisciti al tuo workspace', - Just_invited_people_can_access_this_channel: 'Solo le persone invitate possono accedere a questo canale', - Language: 'Lingua', - last_message: 'ultimo messaggio', - Leave_channel: 'Abbandona canale', - leaving_room: 'abbandonando stanza', - leave: 'abbandona', - Legal: 'Informazioni', - Light: 'Chiaro', - License: 'Licenza', - Livechat: 'Livechat', - Livechat_edit: 'Modifica Livechat', - Login: 'Accedi', - Login_error: 'Le tue credenziali sono state rifiutate! Prova di nuovo.', - Login_with: 'Accedi con', - Logging_out: 'Disconnettendo.', - Logout: 'Disconnetti', - Max_number_of_uses: 'Max numero di utilizzi', - Max_number_of_users_allowed_is_number: 'Il numero massimo di utenti ammessi è {{maxUsers}}', - members: 'membri', - Members: 'Membri', - Mentioned_Messages: 'Messaggi menzionati', - mentioned: 'menzionato', - Mentions: 'Menzioni', - Message_accessibility: 'Messaggio da {{user}} alle {{time}}: {{message}}', - Message_actions: 'Azioni messaggio', - Message_pinned: 'Messaggio appuntato', - Message_removed: 'Messaggio rimosso', - Message_starred: 'Messaggio importante', - Message_unstarred: 'Messaggio non importante', - message: 'messaggio', - messages: 'messaggi', - Message: 'Messaggio', - Messages: 'Messaggi', - Message_Reported: 'Messaggio segnalato', - Microphone_Permission_Message: 'Rocket.Chat richiede l\'accesso al microfono per inviare messaggi audio.', - Microphone_Permission: 'Permesso microfono', - Mute: 'Silenzia', - muted: 'silenziato', - My_servers: 'I miei server', - N_people_reacted: '{{n}} persone hanno reagito', - N_users: '{{n}} utenti', - name: 'nome', - Name: 'Nome', - Navigation_history: 'Cronologia di navigazione', - Never: 'Mai', - New_Message: 'Nuovo messaggio', - New_Password: 'Nuova password', - New_Server: 'Nuovo server', - Next: 'Successivo', - No_files: 'Nessun file', - No_limit: 'Nessun limite', - No_mentioned_messages: 'Nessun messaggio menzionato', - No_pinned_messages: 'Nessun messaggio attaccato', - No_results_found: 'Nessun risultato', - No_starred_messages: 'Nessun messaggio preferito', - No_thread_messages: 'Nessun messaggio thread', - No_label_provided: 'Nessun {{label}} fornito.', - No_Message: 'Nessun messaggio', - No_messages_yet: 'Non ci sono ancora messaggi', - No_Reactions: 'Nessuna reazione', - No_Read_Receipts: 'Nessuna conferma di lettura', - Not_logged: 'Non loggato', - Not_RC_Server: 'Questo non è un server di Rocket.Chat.\n{{contact}}', - Nothing: 'Niente', - Nothing_to_save: 'Niente da salvare!', - Notify_active_in_this_room: 'Notifica solo gli utenti attivi in questa stanza', - Notify_all_in_this_room: 'Notifica tutti gli utenti in questa stanza', - Notifications: 'Notifiche', - Notification_Duration: 'Durata notifiche', - Notification_Preferences: 'Impostazioni notifiche', - No_available_agents_to_transfer: 'Nessun agente disponibile a cui trasferire', - Offline: 'Offline', - Oops: 'Oops!', - Omnichannel: 'Omnichannel', - Open_Livechats: 'Chat in corso', - Omnichannel_enable_alert: 'Non sei ancora su Onmichannel. Vuoi attivarlo?', - Onboarding_description: 'Un workspace è lo spazio dove il tuo team o la tua organizzazione possono collaborare. Chiedi l\'indirizzo all\'amministratore del tuo workspace oppure creane uno per il tuo team.', - Onboarding_join_workspace: 'Unisciti', - Onboarding_subtitle: 'Oltre la collaborazione di gruppo', - Onboarding_title: 'Benvenuto in Rocket.Chat', - Onboarding_join_open_description: 'Unisciti al nostro workspace per parlare con il team e la community di Rocket.Chat.', - Onboarding_agree_terms: 'Procedendo, accetti Rocket.Chat', - Onboarding_less_options: 'Meno opzioni', - Onboarding_more_options: 'Più opzioni', - Online: 'Online', - Only_authorized_users_can_write_new_messages: 'Solo gli utenti autorizzati possono scrivere nuovi messaggi', - Open_emoji_selector: 'Apri selettore emoji', - Open_Source_Communication: 'Comunicazione open-source', - Open_your_authentication_app_and_enter_the_code: 'Apri l\'app di autenticazione e inserisci il codice.', - OR: 'O', - OS: 'SO', - Overwrites_the_server_configuration_and_use_room_config: 'Sovrascrive la configurazione del server in favore di quella della stanza', - Password: 'Password', - Parent_channel_or_group: 'Gruppo o canale originario', - Permalink_copied_to_clipboard: 'Permalink copiato negli appunti!', - Phone: 'Telefono', - Pin: 'Appunta', - Pinned_Messages: 'Messaggi appuntati', - pinned: 'appuntati', - Pinned: 'Appuntati', - Please_add_a_comment: 'Per favore, aggiungi un commento', - Please_enter_your_password: 'Per favore, inserisci la tua password', - Please_wait: 'Si prega di attendere.', - Preferences: 'Impostazioni', - Preferences_saved: 'Impostazioni salvate!', - Privacy_Policy: ' Privacy Policy', - Private_Channel: 'Canale privato', - Private_Groups: 'Gruppi privati', - Private: 'Privato', - Processing: 'Elaborazione...', - Profile_saved_successfully: 'Profilo salvato correttamente!', - Profile: 'Profilo', - Public_Channel: 'Canale pubblico', - Public: 'Pubblico', - Push_Notifications: 'Notifiche Push', - Push_Notifications_Alert_Info: 'Queste notifiche ti vengono recapitate quando l\'app non è aperta', - Quote: 'Cita', - Reactions_are_disabled: 'Le reazioni sono disabilitate', - Reactions_are_enabled: 'Le reazioni sono abilitate', - Reactions: 'Reazioni', - Read: 'Letto', - Read_External_Permission_Message: 'Rocket.Chat deve accedere alle foto, media, e documenti sul tuo dispositivo', - Read_External_Permission: 'Permesso di Lettura della Memoria', - Read_Only_Channel: 'Canale in sola lettura', - Read_Only: 'Sola lettura', - Read_Receipt: 'Conferma di lettura', - Receive_Group_Mentions: 'Ricevi menzioni di gruppo', - Receive_Group_Mentions_Info: 'Ricevi menzioni @all e @here', - Register: 'Registrati', - Repeat_Password: 'Conferma password', - Replied_on: 'Risposto il:', - replies: 'risposte', - reply: 'risposta', - Reply: 'Rispondi', - Report: 'Segnala', - Receive_Notification: 'Ricevi notifiche', - Receive_notifications_from: 'Ricevi notifiche da {{name}}', - Resend: 'Invia di nuovo', - Reset_password: 'Ripristina password', - resetting_password: 'ripristinando password', - RESET: 'RIPRISTINA', - Return: 'Ritorno', - Review_app_title: 'Ti piace questa app?', - Review_app_desc: 'Dacci 5 stesse su {{store}}', - Review_app_yes: 'Certo!', - Review_app_no: 'No', - Review_app_later: 'In seguito', - Review_app_unable_store: 'Impossibile aprire {{store}}', - Review_this_app: 'Recensisci questa app', - Remove: 'Rimuovi', - Roles: 'Ruoli', - Room_actions: 'Azioni stanza', - Room_changed_announcement: 'Annuncio stanza cambiato in: {{announcement}} da {{userBy}}', - Room_changed_avatar: 'Immagine stanza cambiata da {{userBy}}', - Room_changed_description: 'Descrizione stanza cambiata in: {{description}} da {{userBy}}', - Room_changed_privacy: 'Tipo stanza cambiato in: {{type}} da {{userBy}}', - Room_changed_topic: 'Argomento stanza cambiato in: {{topic}} da {{userBy}}', - Room_Files: 'File stanza', - Room_Info_Edit: 'Modifica informazioni stanza', - Room_Info: 'Informazioni stanza', - Room_Members: 'Membri stanza', - Room_name_changed: 'Nome stanza cambiato in: {{name}} da {{userBy}}', - SAVE: 'SALVA', - Save_Changes: 'Salva cambiamenti', - Save: 'Salva', - Saved: 'Salvato', - saving_preferences: 'salvataggio impostazioni', - saving_profile: 'salvataggio profilo', - saving_settings: 'salvataggio impostazioni', - saved_to_gallery: 'Salvato in Galleria', - Save_Your_E2E_Password: 'Salva la tua Password E2E', - Save_Your_Encryption_Password: 'Salva la tua Password di cifratura', - Save_Your_Encryption_Password_warning: 'Questa password non è salvata da nessuna parte, conservala con cura.', - Save_Your_Encryption_Password_info: 'Nota: se dovessi perdere la tua password, non c\'è alcun modo per recuperarla e perderesti l\'accesso ai tuoi messaggi.', - Search_Messages: 'Cerca messaggi', - Search: 'Cerca', - Search_by: 'Cerca per', - Search_global_users: 'Cerca utenti globali', - Search_global_users_description: 'Se attivi questa opzione, puoi cercare qualsiasi utente da altre aziende o server.', - Seconds: '{{second}} secondi', - Security_and_privacy: 'Sicurezza e privacy', - Select_Avatar: 'Seleziona avatar', - Select_Server: 'Seleziona server', - Select_Users: 'Seleziona utenti', - Select_a_Channel: 'Seleziona un Canale', - Select_a_Department: 'Seleziona un Dipartimento', - Select_an_option: 'Seleziona un\' opzione', - Select_a_User: 'Seleziona un Utente', - Send: 'Invia', - Send_audio_message: 'Invia messaggio audio', - Send_crash_report: 'Invia report sui crash', - Send_message: 'Invia messaggio', - Send_me_the_code_again: 'Inviami nuovamente il codice', - Send_to: 'Invia a...', - Sending_to: 'Invio a', - Sent_an_attachment: 'Inviato un allegato', - Server: 'Server', - Servers: 'Servers', - Server_version: 'Versione server: {{version}}', - Set_username_subtitle: 'Il nome utente viene utilizzato per permettere ad altri di menzionarti nei messaggi', - Set_custom_status: 'Imposta stato personalizzato', - Set_status: 'Imposta stato', - Status_saved_successfully: 'Stato salvato correttamente!', - Settings: 'Impostazioni', - Settings_succesfully_changed: 'Impostazioni modificate correttamente!', - Share: 'Condividi', - Share_Link: 'Condividi link', - Share_this_app: 'Condividi questa app', - Show_more: 'Mostra altri..', - Show_Unread_Counter: 'Mostra contatore messaggi non letti', - Show_Unread_Counter_Info: 'Il contatore viene mostrato come un\'etichetta alla destra del canale, nella lista', - Sign_in_your_server: 'Accedi al tuo server', - Sign_Up: 'Registrati', - Some_field_is_invalid_or_empty: 'Un campo non è valido o è vuoto', - Sorting_by: 'Ordina per {{key}}', - Sound: 'Suono', - Star_room: 'Aggiungi stanza ai preferiti', - Star: 'Aggiungi ai preferiti', - Starred_Messages: 'Messaggi preferiti', - starred: 'preferiti', - Starred: 'Preferiti', - Start_of_conversation: 'Inizio della conversazione', - Start_a_Discussion: 'Avvia una Discussione', - Started_discussion: 'Discussione iniziata:', - Started_call: 'Chiamata iniziata da {{userBy}}', - Submit: 'Invia', - Table: 'Tabella', - Tags: 'Tag', - Take_a_photo: 'Scatta una foto', - Take_a_video: 'Registra un video', - Take_it: 'Prendi!', - tap_to_change_status: 'tocca per cambiare stato', - Tap_to_view_servers_list: 'Tocca per vedere la lista server', - Terms_of_Service: ' Termini di servizio ', - Theme: 'Tema', - The_user_wont_be_able_to_type_in_roomName: 'L\'utente non potrà scrivere in {{roomName}}', - The_user_will_be_able_to_type_in_roomName: 'L\'utente potrà scrivere in {{roomName}}', - There_was_an_error_while_action: 'Si è verificato un errore nel {{action}}!', - This_room_is_blocked: 'Questa stanza è bloccata', - This_room_is_read_only: 'Questa stanza è in sola lettura', - Thread: 'Thread', - Threads: 'Threads', - Timezone: 'Fuso orario', - To: 'A', - topic: 'argomento', - Topic: 'Argomento', - Translate: 'Traduci', - Try_again: 'Riprova', - Two_Factor_Authentication: 'Autenticazione a due fattori', - Type_the_channel_name_here: 'Scrivi il nome del canale qui', - unarchive: 'rimuovi dall\'archivio', - UNARCHIVE: 'RIMUOVI DALL\'ARCHIVIO', - Unblock_user: 'Sblocca utente', - Unfavorite: 'Rimuovi preferito', - Unfollowed_thread: 'Non segui più il thread', - Unmute: 'Attiva notifiche', - unmuted: 'notifiche attivate', - Unpin: 'Stacca', - unread_messages: 'non letti', - Unread: 'Non letto', - Unread_on_top: 'Non letti sopra', - Unstar: 'Rimuovi dai preferiti', - Updating: 'Aggiornamento...', - Uploading: 'Caricamento', - Upload_file_question_mark: 'Carica file?', - User: 'Utente', - Users: 'Utenti', - User_added_by: 'Utente {{userAdded}} aggiunto da {{userBy}}', - User_Info: 'Informazioni utente', - User_has_been_key: 'Utente {{key}}', - User_is_no_longer_role_by_: '{{user}} non è più {{role}} da {{userBy}}', - User_muted_by: 'Utente {{userMuted}} silenziato da {{userBy}}', - User_removed_by: 'Utente {{userRemoved}} rimosso da {{userBy}}', - User_sent_an_attachment: '{{user}} ha inviato un allegato', - User_unmuted_by: 'Utente {{userUnmuted}} de-silenziato da {{userBy}}', - User_was_set_role_by_: '{{user}} è stato impostato come {{role}} da {{userBy}}', - Username_is_empty: 'Username vuoto', - Username: 'Username', - Username_or_email: 'Username o email', - Uses_server_configuration: 'Usa la configurazione del server', - Validating: 'Validazione', - Registration_Succeeded: 'Registrazione completata!', - Verify: 'Verifica', - Verify_email_title: 'Verifica completata!', - Verify_email_desc: 'Ti abbiamo inviato una e-mail per confermare la tua registrazione. Se non la ricevi, ritorna qui e riprova', - Verify_your_email_for_the_code_we_sent: 'Controlla l\'e-mail con il codice che ti abbiamo inviato', - Video_call: 'Videochiamata', - View_Original: 'Mostra originale', - Voice_call: 'Chiamata vocale', - Waiting_for_network: 'In attesa di connessione ...', - Websocket_disabled: 'Websocket disabilitata per questo server.\n{{contact}}', - Welcome: 'Benvenuto', - What_are_you_doing_right_now: 'Cosa stai facendo in questo momento?', - Whats_your_2fa: 'Qual\'è il tuo codice 2FA?', - Without_Servers: 'Senza server', - Workspaces: 'Workspace', - Would_you_like_to_return_the_inquiry: 'Vorresti ritirare la tua domanda?', - Write_External_Permission_Message: 'Rocket.Chat ha bisogno dell\'accesso alla galleria per salvare le immagini.', - Write_External_Permission: 'Permesso galleria', - Yes: 'Si', - Yes_action_it: 'Sì, {{action}}!', - Yesterday: 'Ieri', - You_are_in_preview_mode: 'Sei in modalità anteprima', - You_are_offline: 'Sei offline', - You_can_search_using_RegExp_eg: 'Puoi usare espressioni regolari. es. `/^testo$/i`', - You_colon: 'Tu: ', - you_were_mentioned: 'sei stato menzionato', - You_were_removed_from_channel: 'Sei stato rimosso da {{channel}}', - you: 'tu', - You: 'Tu', - Logged_out_by_server: 'Sei stato disconnesso dal server. Esegui nuovamente l\'accesso.', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Devi accedere ad almeno un server Rocket.Chat prima di condividere qualcosa.', - You_need_to_verifiy_your_email_address_to_get_notications: 'Devi verificare il tuo indirizzo e-mail per ricevere le notifiche', - Your_certificate: 'Il tuo certificato', - Your_invite_link_will_expire_after__usesLeft__uses: 'Il tuo link di invito scadrà dopo {{usesLeft}} utilizzi.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Il tuo link di invito scadrà il {{date}} oppure dopo {{usesLeft}} utilizzi.', - Your_invite_link_will_expire_on__date__: 'Il tuo link di invito scadrà il {{date}}.', - Your_invite_link_will_never_expire: 'Il tuo link di invito non scadrà mai.', - Your_workspace: 'Il tuo workspace', - Your_password_is: 'La tua password è', - Version_no: 'Versione: {{version}}', - You_will_not_be_able_to_recover_this_message: 'Non sarai in grado di ripristinare questo messaggio!', - You_will_unset_a_certificate_for_this_server: 'Rimuoverai un certificato per questo server', - Change_Language: 'Cambia lingua', - Crash_report_disclaimer: 'Non registreremo mai il contenuto delle tue chat. Il crash report contiene solo informazioni necessarie per l\'identificazione e la risoluzione dei problemi.', - Type_message: 'Scrivi messaggio', - Room_search: 'Ricerca stanze', - Room_selection: 'Selezione stanza 1...9', - Next_room: 'Prossima stanza', - Previous_room: 'Stanza precedente', - New_room: 'Nuova stanza', - Upload_room: 'Carica nella stanza', - Search_messages: 'Cerca messaggi', - Scroll_messages: 'Scorri i messaggi', - Reply_latest: 'Rispondi all\'ultimo', - Reply_in_Thread: 'Rispondi nella discussione', - Server_selection: 'Selezione server', - Server_selection_numbers: 'Selezione server 1...9', - Add_server: 'Aggiungi server', - New_line: 'Nuova linea', - You_will_be_logged_out_of_this_application: 'Verrai disconnesso da questa applicazione.', - Clear: 'Cancella', - This_will_clear_all_your_offline_data: 'Questo cancellerà tutti i tuoi dati offline.', - This_will_remove_all_data_from_this_server: 'Questo rimuoverà tutti i dati dal server.', - Mark_unread: 'Segna come non letto', - Wait_activation_warning: 'Prima di poter accedere, il tuo account deve essere attivato manualmente da un amministratore.', - Screen_lock: 'Blocco schermo', - Local_authentication_biometry_title: 'Autenticazione', - Local_authentication_biometry_fallback: 'Usa passcode', - Local_authentication_unlock_option: 'Sblocca con Passcode', - Local_authentication_change_passcode: 'Cambia Passcode', - Local_authentication_info: 'Nota: se dimentichi il Passcode, dovrai cancellare e installare nuovamente l\'app.', - Local_authentication_facial_recognition: 'riconoscimento facciale', - Local_authentication_fingerprint: 'impronta digitale', - Local_authentication_unlock_with_label: 'Sblocca con {{label}}', - Local_authentication_auto_lock_60: 'Dopo 1 minuto', - Local_authentication_auto_lock_300: 'Dopo 5 minuti', - Local_authentication_auto_lock_900: 'Dopo 15 minuti', - Local_authentication_auto_lock_1800: 'Dopo 30 minuti', - Local_authentication_auto_lock_3600: 'Dopo 1 ora', - Passcode_enter_title: 'Inserisci il passcode', - Passcode_choose_title: 'Scegli il tuo nuovo passcode', - Passcode_choose_confirm_title: 'Conferma il tuo nuovo passcode', - Passcode_choose_error: 'I passcode non corrispondono. Riprova.', - Passcode_choose_force_set: 'Passcode richiesto dall\'admin', - Passcode_app_locked_title: 'App bloccata', - Passcode_app_locked_subtitle: 'Riprova tra {{timeLeft}} secondi', - After_seconds_set_by_admin: 'Dopo {{seconds}} secondi (impostati dall\'admin)', - Dont_activate: 'Non attivare ora', - Queued_chats: 'Chat in coda', - Queue_is_empty: 'La coda è vuota', - Logout_from_other_logged_in_locations: 'Disconnetti da altre postazioni', - You_will_be_logged_out_from_other_locations: 'Verrai disconnesso dalle altre postazioni.', - Logged_out_of_other_clients_successfully: 'Disconnesso dalle altre postazioni con successo', - Logout_failed: 'Disconnessione fallita!', - Log_analytics_events: 'Invia statistiche anonime', - E2E_encryption_change_password_title: 'Cambia la password di cifratura', - E2E_encryption_change_password_description: 'Ora puoi creare gruppi e messaggi privati crittografati. Potrai, inoltre, crittografare i tuoi gruppi e messaggi privati esistenti. \nQuesta è crittografia end-to-end, la chiave per codificare/decodificare i tuoi messaggi non verrà salvata sul server. Per questo motivo devi salvarla in un luogo sicuro. Ti verrà richiesto di inserirla sugli altri dispositivi sui quali vuoi usare la crittografia e2e.', - E2E_encryption_change_password_error: 'Si è verificato un errore durante il cambio della password della chiave E2E!', - E2E_encryption_change_password_success: 'La password della chiave E2E è stata cambiata con successo!', - E2E_encryption_change_password_message: 'Assicurati di salvarla in un posto sicuro.', - E2E_encryption_change_password_confirmation: 'Si, cambiala', - E2E_encryption_reset_title: 'Ripristina la Chiave E2E', - E2E_encryption_reset_description: 'Questa opzione rimuoverà la tua chiave E2E corrente e sarai disconnesso. \nAl prossimo login, Rocket.Chat genererà una nuova chiave e ripristinerà l\'accesso a tutte le stanze crittografate con uno o più membri online. \nA causa della natura della crittografia E2E, Rocket.Chat non sarà in grado di ripristinare l\'accesso alle stanze senza membri online.', - E2E_encryption_reset_button: 'Ripristina', - E2E_encryption_reset_error: 'Si è verificato un errore durante il ripristino della chiave E2E!', - E2E_encryption_reset_message: 'Stai per essere disconnesso.', - E2E_encryption_reset_confirmation: 'Si, resettala', - Following: 'Seguiti', - Threads_displaying_all: 'Visualizza Tutti', - Threads_displaying_following: 'Visualizza Seguiti', - Threads_displaying_unread: 'Visualizza Non letti', - No_threads: 'Non ci sono thread', - No_threads_following: 'Non stai seguendo alcun thread', - No_threads_unread: 'Non ci sono thread non letti', - Messagebox_Send_to_channel: 'Invia sul canale', - Set_as_leader: 'Rendi leader', - Set_as_moderator: 'Rendi moderatore', - Set_as_owner: 'Rendi proprietario', - Remove_as_leader: 'Rimuovi come leader', - Remove_as_moderator: 'Rimuovi come moderatore', - Remove_as_owner: 'Rimuovi come proprietario', - Remove_from_room: 'Rimuovi dalla stanza', - Ignore: 'Ignora', - Unignore: 'Non ignorare', - User_has_been_ignored: 'Utente ignorato', - User_has_been_unignored: 'Utente non ignorato', - User_has_been_removed_from_s: 'L\'utente è stato rimosso da {{s}}', - User__username__is_now_a_leader_of__room_name_: 'L\'utente {{username}} è ora un leader di {{room_name}}', - User__username__is_now_a_moderator_of__room_name_: 'L\'utente {{username}} è ora un moderatore di {{room_name}}', - User__username__is_now_a_owner_of__room_name_: 'L\'utente {{username}} è ora un proprietario di {{room_name}}', - User__username__removed_from__room_name__leaders: 'L\'utente {{username}} non è più un leader di {{room_name}}', - User__username__removed_from__room_name__moderators: 'L\'utente {{username}} non è più un moderatore di {{room_name}}', - User__username__removed_from__room_name__owners: 'L\'utente {{username}} non è più un proprietario di {{room_name}}', - The_user_will_be_removed_from_s: 'L\'utente sarà rimosso da {{s}}', - Yes_remove_user: 'Si, rimuovi utente!', - Direct_message: 'Messaggio diretto', - Message_Ignored: 'Messaggio ignorato. Tocca per visualizzarlo.', - Enter_workspace_URL: 'Inserisci la url del workspace', - Workspace_URL_Example: 'Es. tua-azienda.rocket.chat' -}; diff --git a/app/i18n/locales/it.json b/app/i18n/locales/it.json new file mode 100644 index 00000000000..12e02e3a31d --- /dev/null +++ b/app/i18n/locales/it.json @@ -0,0 +1,708 @@ +{ + "1_person_reacted": "1 persona ha reagito", + "1_user": "1 utente", + "error-action-not-allowed": "{{action}} non autorizzata", + "error-application-not-found": "Applicazione non trovata", + "error-archived-duplicate-name": "Esiste già un canale archiviato con nome {{room_name}}", + "error-avatar-invalid-url": "URL avatar non valido: {{url}}", + "error-avatar-url-handling": "Errore nella gestione dell'impostazione avatar dall'URL ({{url}}) per {{username}}", + "error-cant-invite-for-direct-room": "Impossibile invitare l'utente alle stanze dirette", + "error-could-not-change-email": "Impossibile cambiare l'indirizzo e-mail", + "error-could-not-change-name": "Impossibile cambiare nome", + "error-could-not-change-username": "Impossibile cambiare username", + "error-could-not-change-status": "Impossibile cambiare lo stato", + "error-delete-protected-role": "Impossibile eliminare un ruolo protetto", + "error-department-not-found": "Reparto non trovato", + "error-direct-message-file-upload-not-allowed": "La condivisione di file non è autorizzata nei messaggi diretti", + "error-duplicate-channel-name": "Esiste già un canale con nome {{channel_name}}", + "error-email-domain-blacklisted": "Il dominio e-mail è nella lista nera", + "error-email-send-failed": "Errore nel tentativo di invio e-mail: {{message}}", + "error-save-image": "Errore nel salvataggio dell'immagine", + "error-save-video": "Errore nel salvataggio del video", + "error-field-unavailable": "{{field}} è già in uso :(", + "error-file-too-large": "File troppo grande", + "error-importer-not-defined": "L'importatore non è stato definito correttamente: classe Import mancante.", + "error-input-is-not-a-valid-field": "{{input}} non è valido come {{field}}", + "error-invalid-actionlink": "Link azione non valido", + "error-invalid-arguments": "Parametri non validi", + "error-invalid-asset": "Risorsa non valida", + "error-invalid-channel": "Canale non valido.", + "error-invalid-channel-start-with-chars": "Canale non valido. Inizia con @ o #", + "error-invalid-custom-field": "Campo personalizzato non valido", + "error-invalid-custom-field-name": "Nome campo personalizzato non valido. Usa solo lettere, numeri, trattini e underscore.", + "error-invalid-date": "Data fornita non valida.", + "error-invalid-description": "Descrizione non valida", + "error-invalid-domain": "Dominio non valido", + "error-invalid-email": "E-mail {{emai}} non valida", + "error-invalid-email-address": "Indirizzo e-mail non valido", + "error-invalid-file-height": "Altezza del file non valida", + "error-invalid-file-type": "Tipo di file non valido", + "error-invalid-file-width": "Larghezza del file non valida", + "error-invalid-from-address": "Hai informato un indirizzo FROM non valido.", + "error-invalid-integration": "Integrazione non valida", + "error-invalid-message": "Messaggio non valido", + "error-invalid-method": "Metodo o funzione non valida", + "error-invalid-name": "Nome non corretto", + "error-invalid-password": "Password non corretta", + "error-invalid-redirectUri": "redirectUri non valido", + "error-invalid-role": "Ruolo non valido", + "error-invalid-room": "Stanza non valida", + "error-invalid-room-name": "{{room_name}} non è un nome di stanza valido", + "error-invalid-room-type": "{{type}} non è un tipo di stanza valido", + "error-invalid-settings": "Impostazioni fornite non valide", + "error-invalid-subscription": "Iscrizione non valida", + "error-invalid-token": "Token non valido", + "error-invalid-triggerWords": "triggerWords non valide", + "error-invalid-urls": "URL non validi", + "error-invalid-user": "Utente non valido", + "error-invalid-username": "Nome utente non valido", + "error-invalid-webhook-response": "L'URL del webhook ha risposto con uno stato diverso da 200", + "error-message-deleting-blocked": "Cancellazione di messaggi bloccata", + "error-message-editing-blocked": "Modifica di messaggi bloccata", + "error-message-size-exceeded": "La dimensione del messaggio supera Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "Devi fornire il link [unsubscribe].", + "error-no-tokens-for-this-user": "Non ci sono token per questo utente", + "error-not-allowed": "Non permesso", + "error-not-authorized": "Non autorizzato", + "error-push-disabled": "Push è disabilitato", + "error-remove-last-owner": "Questo è l'ultimo proprietario rimasto. Imposta un nuovo proprietario prima di rimuoverlo.", + "error-role-in-use": "Impossibile eliminare il ruolo perchè ancora in uso", + "error-role-name-required": "Il nome del ruolo è obbligatorio", + "error-the-field-is-required": "Il campo {{field}} è obbligatorio.", + "error-too-many-requests": "Errore, troppe richieste effettuate. Rallenta. Devi attendere {{seconds}} secondi prima di riprovare.", + "error-user-is-not-activated": "L'utente non è attivato", + "error-user-has-no-roles": "L'utente non ha ruoli", + "error-user-limit-exceeded": "Il numero di utenti che stai invitando in #channel_name supera il limite imposto dall'amministratore", + "error-user-not-in-room": "L'utente non è in questa stanza", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "Registrazione utente disabilitata", + "error-user-registration-secret": "Registrazione utente permessa solo via URL segreto", + "error-you-are-last-owner": "Sei l'ultimo proprietario rimasto. Imposta un nuovo proprietario prima di lasciare la stanza.", + "Actions": "Azioni", + "activity": "attività", + "Activity": "Attività", + "Add_Reaction": "Aggiungi reazione", + "Add_Server": "Aggiungi server", + "Add_users": "Aggiungi utenti", + "Admin_Panel": "Amministrazione", + "Agent": "Agente", + "Alert": "Avviso", + "alert": "avviso", + "alerts": "avvisi", + "All_users_in_the_channel_can_write_new_messages": "Tutti gli utenti nel canale possono scrivere messaggi", + "A_meaningful_name_for_the_discussion_room": "Un nome significativo per il canale di discussione", + "All": "Tutti", + "All_Messages": "Tutti i messaggi", + "Allow_Reactions": "Permetti reazioni", + "Alphabetical": "Alfabetico", + "and_more": "e altro", + "and": "e", + "announcement": "annuncio", + "Announcement": "Annuncio", + "Apply_Your_Certificate": "Applica il tuo certificato", + "ARCHIVE": "ARCHIVIO", + "archive": "archivio", + "are_typing": "stanno scrivendo", + "Are_you_sure_question_mark": "Sei sicuro?", + "Are_you_sure_you_want_to_leave_the_room": "Sei sicuro di voler lasciare la stanza {{room}}?", + "Audio": "Audio", + "Authenticating": "Autenticazione", + "Automatic": "Automatico", + "Auto_Translate": "Traduzione automatica", + "Avatar_changed_successfully": "Avatar aggiornato correttamente!", + "Avatar_Url": "URL avatar", + "Away": "Assente", + "Back": "Indietro", + "Black": "Nero", + "Block_user": "Blocca utente", + "Browser": "Browser", + "Broadcast_channel_Description": "Solo gli utenti autorizzati possono scrivere messaggi, ma gli altri utenti saranno in grado di rispondere", + "Broadcast_Channel": "Canale broadcast", + "Busy": "Occupato", + "By_proceeding_you_are_agreeing": "Procedendo accetti i nostri", + "Cancel_editing": "Annulla modifica", + "Cancel_recording": "Annulla registrazione", + "Cancel": "Annulla", + "changing_avatar": "cambio avatar", + "creating_channel": "creo canale", + "creating_invite": "creo invito", + "Channel_Name": "Nome canale", + "Channels": "Canali", + "Chats": "Chat", + "Call_already_ended": "Chiamata già terminata!", + "Clear_cookies_alert": "Vuoi cancellare tutti i cookie?", + "Clear_cookies_desc": "Questo cancellerà tutti i coockie di login, permettendoti di accedere con altri account.", + "Clear_cookies_yes": "Si, cancella i cookie", + "Clear_cookies_no": "No, mantieni i cookie", + "Click_to_join": "Clicca per unirti!", + "Close": "Chiudi", + "Close_emoji_selector": "Chiudi selettore emoji", + "Closing_chat": "Chiudendo la chat", + "Change_language_loading": "Cambiando la lingua.", + "Chat_closed_by_agent": "Chat chiusa dall'agente", + "Choose": "Scegli", + "Choose_from_library": "Scegli dalla libreria", + "Choose_file": "Scegli file", + "Choose_where_you_want_links_be_opened": "Scegli dove vuoi che vengano aperti i link", + "Code": "Codice", + "Code_or_password_invalid": "Codice o password non validi", + "Collaborative": "Collaborativo", + "Confirm": "Conferma", + "Connect": "Connetti", + "Connected": "Connesso", + "connecting_server": "connessione al server", + "Connecting": "Connessione...", + "Contact_us": "Contattaci", + "Contact_your_server_admin": "Contatta l'amministratore.", + "Continue_with": "Continua con", + "Copied_to_clipboard": "Copiato negli appunti!", + "Copy": "Copia", + "Permalink": "Permalink", + "Conversation": "Conversazione", + "Certificate_password": "Password certificato", + "Clear_cache": "Cancella la cache locale", + "Clear_cache_loading": "Cancellando la cache.", + "Whats_the_password_for_your_certificate": "Qual'è la password del tuo certificato?", + "Create_account": "Crea un account", + "Create_Channel": "Crea canale", + "Create_Direct_Messages": "Crea Messaggi Privati", + "Create_Discussion": "Crea una Discussione", + "Created_snippet": "Snippet creato", + "Create_a_new_workspace": "Crea un nuovo workspace", + "Create": "Crea", + "Custom_Status": "Stato personalizzato", + "Dark": "Scuro", + "Dark_level": "Contrasto", + "Default": "Predefinito", + "Default_browser": "Browser predefinito", + "Delete_Room_Warning": "Eliminare una stanza cancellerà tutti i messaggi in essa contenuti. Questa azione non può essere annullata.", + "Department": "Dipartimento", + "delete": "elimina", + "Delete": "Elimina", + "DELETE": "ELIMINA", + "deleting_room": "cancellazione stanza", + "description": "descrizione", + "Description": "Descrizione", + "Desktop_Options": "Opzioni Desktop", + "Desktop_Notifications": "Notifiche Desktop", + "Desktop_Alert_info": "Queste notifiche vengono inviate sul client desktop", + "Directory": "Rubrica", + "Direct_Messages": "Messaggi diretti", + "Disable_notifications": "Disabilita notifiche", + "Discussions": "Discussioni", + "Discussion_Desc": "Aiuta a mantenere una panoramica di ciò che sta succedendo! Creando una discussione verrà creato un sotto-canale di quello selezionato ed entrambi saranno collegati", + "Discussion_name": "Nome della discussione", + "Done": "Fatto", + "Dont_Have_An_Account": "Non hai un account?", + "Do_you_have_an_account": "Hai un account?", + "Do_you_have_a_certificate": "Hai un certificato?", + "Do_you_really_want_to_key_this_room_question_mark": "Sei sicuro di voler {{key}} questa stanza?", + "E2E_Encryption": "Crittografia E2E", + "E2E_How_It_Works_info1": "Ora puoi creare gruppi e messaggi privati crittografati. Puoi anche crittografare quelli già esistenti.", + "E2E_How_It_Works_info2": "Questa è *crittografia end-to-end*, quindi la chiave per cifrare/decifrare i messaggi non verrà salvata sul server. Per questo motivo *devi salvare questa password in un luogo sicuro* dove poterla recuperare in seguito qualora necessario.", + "E2E_How_It_Works_info3": "Procedendo verrà generata automaticamente una password E2E.", + "E2E_How_It_Works_info4": "Puoi impostare una nuova password per la chiave di cifratura in qualsiasi momento da uno dei browser dove hai inserito la password E2E esistente.", + "edit": "modifica", + "edited": "modificato", + "Edit": "Modifica", + "Edit_Status": "Modifica Stato", + "Edit_Invite": "Modifica invito", + "End_to_end_encrypted_room": "Stanza crittografata end to end", + "end_to_end_encryption": "Crittografia end to end", + "Email_Notification_Mode_All": "Ogni Menzione/Messaggio Privato", + "Email_Notification_Mode_Disabled": "Disabilitato", + "Email_or_password_field_is_empty": "Il campo e-mail o password sono vuoti", + "Email": "E-mail", + "email": "e-mail", + "Empty_title": "Titolo vuoto", + "Enable_Auto_Translate": "Abilita traduzione automatica", + "Enable_notifications": "Abilita notifiche", + "Encrypted": "Crittografato", + "Encrypted_message": "Messaggio crittografato", + "Enter_Your_E2E_Password": "Inserisci la tua password E2E", + "Enter_Your_Encryption_Password_desc1": "Potrai così accedere ai tuoi gruppi privati e messaggi privati crittografati.", + "Enter_Your_Encryption_Password_desc2": "Devi inserire la password per cifrare/decifrare i messaggi ovunque usi la chat.", + "Encryption_error_title": "La tua password di cifratura sembra errata", + "Encryption_error_desc": "Non è stato possibile importare la tua chiave di cifratura.", + "Everyone_can_access_this_channel": "Tutti hanno accesso a questo canale", + "Error_uploading": "Errore nel caricamento di", + "Expiration_Days": "Scadenza (giorni)", + "Favorite": "Preferito", + "Favorites": "Preferiti", + "Files": "File", + "File_description": "Descrizione file", + "File_name": "Nome file", + "Finish_recording": "Termina registrazione", + "Following_thread": "Thread seguito", + "For_your_security_you_must_enter_your_current_password_to_continue": "Per garantire la sicurezza del tuo account, inserisci la password per continuare.", + "Forgot_password_If_this_email_is_registered": "Se questa e-mail è registrata, manderemo istruzioni su come resettare la tua password. Se non ricevi nulla, torna qui e riprova di nuovo.", + "Forgot_password": "Password dimenticata", + "Forgot_Password": "Password dimenticata", + "Forward": "Inoltra", + "Forward_Chat": "Inoltra Chat", + "Forward_to_department": "Inoltra a dipartimento", + "Forward_to_user": "Inoltra ad udente", + "Full_table": "Clicca per la tabella completa", + "Generate_New_Link": "Genera nuovo link", + "Group_by_favorites": "Raggruppa per preferiti", + "Group_by_type": "Raggruppa per tipo", + "Hide": "Nascondi", + "Has_joined_the_channel": "si è unito al canale", + "Has_joined_the_conversation": "si è unito alla conversazione", + "Has_left_the_channel": "ha lasciato il canale", + "Hide_System_Messages": "Nascondi messaggi di sistema", + "Hide_type_messages": "Nascondi messaggi di \"{{type}}\"", + "How_It_Works": "Come funziona", + "Message_HideType_uj": "Ingresso Utente", + "Message_HideType_ul": "Uscita Utente", + "Message_HideType_ru": "Rimozione Utente", + "Message_HideType_au": "Aggiunta Utente", + "Message_HideType_mute_unmute": "Microfono Utente attivato / disattivato", + "Message_HideType_r": "Nome Stanza cambiato", + "Message_HideType_ut": "Ingresso Utente in Conversazione", + "Message_HideType_wm": "Benvenuto", + "Message_HideType_rm": "Rimozione Messaggio", + "Message_HideType_subscription_role_added": "Creazione ruolo", + "Message_HideType_subscription_role_removed": "Rimozione ruolo", + "Message_HideType_room_archived": "Stanza archiviata", + "Message_HideType_room_unarchived": "Stanza ripristinata dall'archivio", + "I_Saved_My_E2E_Password": "Ho salvato la mia Password E2E", + "IP": "Indirizzo IP", + "In_app": "In-app", + "In_App_And_Desktop": "In-app e Desktop", + "In_App_and_Desktop_Alert_info": "Mostra una notifica in cima allo schermo quando l'app è aperta, e mostra una notifica sul desktop", + "Invisible": "Invisibile", + "Invite": "Invita", + "is_a_valid_RocketChat_instance": "è un'istanza di Rocket.Chat valida", + "is_not_a_valid_RocketChat_instance": "non è una valida istanza di Rocket.Chat", + "is_typing": "sta scrivendo", + "Invalid_or_expired_invite_token": "Token di invito non valido o scaduto", + "Invalid_server_version": "Il server a cui stai cercando di connetterti sta utilizzando una versione non più supportata dall'app: {{currentVersion}}.\n\nVersione minima richiesta: {{minVersion}}", + "Invite_Link": "Link di invito", + "Invite_users": "Invita utenti", + "Join": "Entra", + "Join_Code": "Codice d'accesso", + "Insert_Join_Code": "Inserisci il codice d'accesso", + "Join_our_open_workspace": "Unisciti al nostro workspace", + "Join_your_workspace": "Unisciti al tuo workspace", + "Just_invited_people_can_access_this_channel": "Solo le persone invitate possono accedere a questo canale", + "Language": "Lingua", + "last_message": "ultimo messaggio", + "Leave_channel": "Abbandona canale", + "leaving_room": "abbandonando stanza", + "leave": "abbandona", + "Legal": "Informazioni", + "Light": "Chiaro", + "License": "Licenza", + "Livechat": "Livechat", + "Livechat_edit": "Modifica Livechat", + "Login": "Accedi", + "Login_error": "Le tue credenziali sono state rifiutate! Prova di nuovo.", + "Login_with": "Accedi con", + "Logging_out": "Disconnettendo.", + "Logout": "Disconnetti", + "Max_number_of_uses": "Max numero di utilizzi", + "Max_number_of_users_allowed_is_number": "Il numero massimo di utenti ammessi è {{maxUsers}}", + "members": "membri", + "Members": "Membri", + "Mentioned_Messages": "Messaggi menzionati", + "mentioned": "menzionato", + "Mentions": "Menzioni", + "Message_accessibility": "Messaggio da {{user}} alle {{time}}: {{message}}", + "Message_actions": "Azioni messaggio", + "Message_pinned": "Messaggio appuntato", + "Message_removed": "Messaggio rimosso", + "Message_starred": "Messaggio importante", + "Message_unstarred": "Messaggio non importante", + "message": "messaggio", + "messages": "messaggi", + "Message": "Messaggio", + "Messages": "Messaggi", + "Message_Reported": "Messaggio segnalato", + "Microphone_Permission_Message": "Rocket.Chat richiede l'accesso al microfono per inviare messaggi audio.", + "Microphone_Permission": "Permesso microfono", + "Mute": "Silenzia", + "muted": "silenziato", + "My_servers": "I miei server", + "N_people_reacted": "{{n}} persone hanno reagito", + "N_users": "{{n}} utenti", + "name": "nome", + "Name": "Nome", + "Navigation_history": "Cronologia di navigazione", + "Never": "Mai", + "New_Message": "Nuovo messaggio", + "New_Password": "Nuova password", + "New_Server": "Nuovo server", + "Next": "Successivo", + "No_files": "Nessun file", + "No_limit": "Nessun limite", + "No_mentioned_messages": "Nessun messaggio menzionato", + "No_pinned_messages": "Nessun messaggio attaccato", + "No_results_found": "Nessun risultato", + "No_starred_messages": "Nessun messaggio preferito", + "No_thread_messages": "Nessun messaggio thread", + "No_label_provided": "Nessun {{label}} fornito.", + "No_Message": "Nessun messaggio", + "No_messages_yet": "Non ci sono ancora messaggi", + "No_Reactions": "Nessuna reazione", + "No_Read_Receipts": "Nessuna conferma di lettura", + "Not_logged": "Non loggato", + "Not_RC_Server": "Questo non è un server di Rocket.Chat.\n{{contact}}", + "Nothing": "Niente", + "Nothing_to_save": "Niente da salvare!", + "Notify_active_in_this_room": "Notifica solo gli utenti attivi in questa stanza", + "Notify_all_in_this_room": "Notifica tutti gli utenti in questa stanza", + "Notifications": "Notifiche", + "Notification_Duration": "Durata notifiche", + "Notification_Preferences": "Impostazioni notifiche", + "No_available_agents_to_transfer": "Nessun agente disponibile a cui trasferire", + "Offline": "Offline", + "Oops": "Oops!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Chat in corso", + "Omnichannel_enable_alert": "Non sei ancora su Onmichannel. Vuoi attivarlo?", + "Onboarding_description": "Un workspace è lo spazio dove il tuo team o la tua organizzazione possono collaborare. Chiedi l'indirizzo all'amministratore del tuo workspace oppure creane uno per il tuo team.", + "Onboarding_join_workspace": "Unisciti", + "Onboarding_subtitle": "Oltre la collaborazione di gruppo", + "Onboarding_title": "Benvenuto in Rocket.Chat", + "Onboarding_join_open_description": "Unisciti al nostro workspace per parlare con il team e la community di Rocket.Chat.", + "Onboarding_agree_terms": "Procedendo, accetti Rocket.Chat", + "Onboarding_less_options": "Meno opzioni", + "Onboarding_more_options": "Più opzioni", + "Online": "Online", + "Only_authorized_users_can_write_new_messages": "Solo gli utenti autorizzati possono scrivere nuovi messaggi", + "Open_emoji_selector": "Apri selettore emoji", + "Open_Source_Communication": "Comunicazione open-source", + "Open_your_authentication_app_and_enter_the_code": "Apri l'app di autenticazione e inserisci il codice.", + "OR": "O", + "OS": "SO", + "Overwrites_the_server_configuration_and_use_room_config": "Sovrascrive la configurazione del server in favore di quella della stanza", + "Password": "Password", + "Parent_channel_or_group": "Gruppo o canale originario", + "Permalink_copied_to_clipboard": "Permalink copiato negli appunti!", + "Phone": "Telefono", + "Pin": "Appunta", + "Pinned_Messages": "Messaggi appuntati", + "pinned": "appuntati", + "Pinned": "Appuntati", + "Please_add_a_comment": "Per favore, aggiungi un commento", + "Please_enter_your_password": "Per favore, inserisci la tua password", + "Please_wait": "Si prega di attendere.", + "Preferences": "Impostazioni", + "Preferences_saved": "Impostazioni salvate!", + "Privacy_Policy": " Privacy Policy", + "Private_Channel": "Canale privato", + "Private_Groups": "Gruppi privati", + "Private": "Privato", + "Processing": "Elaborazione...", + "Profile_saved_successfully": "Profilo salvato correttamente!", + "Profile": "Profilo", + "Public_Channel": "Canale pubblico", + "Public": "Pubblico", + "Push_Notifications": "Notifiche Push", + "Push_Notifications_Alert_Info": "Queste notifiche ti vengono recapitate quando l'app non è aperta", + "Quote": "Cita", + "Reactions_are_disabled": "Le reazioni sono disabilitate", + "Reactions_are_enabled": "Le reazioni sono abilitate", + "Reactions": "Reazioni", + "Read": "Letto", + "Read_External_Permission_Message": "Rocket.Chat deve accedere alle foto, media, e documenti sul tuo dispositivo", + "Read_External_Permission": "Permesso di Lettura della Memoria", + "Read_Only_Channel": "Canale in sola lettura", + "Read_Only": "Sola lettura", + "Read_Receipt": "Conferma di lettura", + "Receive_Group_Mentions": "Ricevi menzioni di gruppo", + "Receive_Group_Mentions_Info": "Ricevi menzioni @all e @here", + "Register": "Registrati", + "Repeat_Password": "Conferma password", + "Replied_on": "Risposto il:", + "replies": "risposte", + "reply": "risposta", + "Reply": "Rispondi", + "Report": "Segnala", + "Receive_Notification": "Ricevi notifiche", + "Receive_notifications_from": "Ricevi notifiche da {{name}}", + "Resend": "Invia di nuovo", + "Reset_password": "Ripristina password", + "resetting_password": "ripristinando password", + "RESET": "RIPRISTINA", + "Return": "Ritorno", + "Review_app_title": "Ti piace questa app?", + "Review_app_desc": "Dacci 5 stesse su {{store}}", + "Review_app_yes": "Certo!", + "Review_app_no": "No", + "Review_app_later": "In seguito", + "Review_app_unable_store": "Impossibile aprire {{store}}", + "Review_this_app": "Recensisci questa app", + "Remove": "Rimuovi", + "Roles": "Ruoli", + "Room_actions": "Azioni stanza", + "Room_changed_announcement": "Annuncio stanza cambiato in: {{announcement}} da {{userBy}}", + "Room_changed_avatar": "Immagine stanza cambiata da {{userBy}}", + "Room_changed_description": "Descrizione stanza cambiata in: {{description}} da {{userBy}}", + "Room_changed_privacy": "Tipo stanza cambiato in: {{type}} da {{userBy}}", + "Room_changed_topic": "Argomento stanza cambiato in: {{topic}} da {{userBy}}", + "Room_Files": "File stanza", + "Room_Info_Edit": "Modifica informazioni stanza", + "Room_Info": "Informazioni stanza", + "Room_Members": "Membri stanza", + "Room_name_changed": "Nome stanza cambiato in: {{name}} da {{userBy}}", + "SAVE": "SALVA", + "Save_Changes": "Salva cambiamenti", + "Save": "Salva", + "Saved": "Salvato", + "saving_preferences": "salvataggio impostazioni", + "saving_profile": "salvataggio profilo", + "saving_settings": "salvataggio impostazioni", + "saved_to_gallery": "Salvato in Galleria", + "Save_Your_E2E_Password": "Salva la tua Password E2E", + "Save_Your_Encryption_Password": "Salva la tua Password di cifratura", + "Save_Your_Encryption_Password_warning": "Questa password non è salvata da nessuna parte, conservala con cura.", + "Save_Your_Encryption_Password_info": "Nota: se dovessi perdere la tua password, non c'è alcun modo per recuperarla e perderesti l'accesso ai tuoi messaggi.", + "Search_Messages": "Cerca messaggi", + "Search": "Cerca", + "Search_by": "Cerca per", + "Search_global_users": "Cerca utenti globali", + "Search_global_users_description": "Se attivi questa opzione, puoi cercare qualsiasi utente da altre aziende o server.", + "Seconds": "{{second}} secondi", + "Security_and_privacy": "Sicurezza e privacy", + "Select_Avatar": "Seleziona avatar", + "Select_Server": "Seleziona server", + "Select_Users": "Seleziona utenti", + "Select_a_Channel": "Seleziona un Canale", + "Select_a_Department": "Seleziona un Dipartimento", + "Select_an_option": "Seleziona un' opzione", + "Select_a_User": "Seleziona un Utente", + "Send": "Invia", + "Send_audio_message": "Invia messaggio audio", + "Send_crash_report": "Invia report sui crash", + "Send_message": "Invia messaggio", + "Send_me_the_code_again": "Inviami nuovamente il codice", + "Send_to": "Invia a...", + "Sending_to": "Invio a", + "Sent_an_attachment": "Inviato un allegato", + "Server": "Server", + "Servers": "Servers", + "Server_version": "Versione server: {{version}}", + "Set_username_subtitle": "Il nome utente viene utilizzato per permettere ad altri di menzionarti nei messaggi", + "Set_custom_status": "Imposta stato personalizzato", + "Set_status": "Imposta stato", + "Status_saved_successfully": "Stato salvato correttamente!", + "Settings": "Impostazioni", + "Settings_succesfully_changed": "Impostazioni modificate correttamente!", + "Share": "Condividi", + "Share_Link": "Condividi link", + "Share_this_app": "Condividi questa app", + "Show_more": "Mostra altri..", + "Show_Unread_Counter": "Mostra contatore messaggi non letti", + "Show_Unread_Counter_Info": "Il contatore viene mostrato come un'etichetta alla destra del canale, nella lista", + "Sign_in_your_server": "Accedi al tuo server", + "Sign_Up": "Registrati", + "Some_field_is_invalid_or_empty": "Un campo non è valido o è vuoto", + "Sorting_by": "Ordina per {{key}}", + "Sound": "Suono", + "Star_room": "Aggiungi stanza ai preferiti", + "Star": "Aggiungi ai preferiti", + "Starred_Messages": "Messaggi preferiti", + "starred": "preferiti", + "Starred": "Preferiti", + "Start_of_conversation": "Inizio della conversazione", + "Start_a_Discussion": "Avvia una Discussione", + "Started_discussion": "Discussione iniziata:", + "Started_call": "Chiamata iniziata da {{userBy}}", + "Submit": "Invia", + "Table": "Tabella", + "Tags": "Tag", + "Take_a_photo": "Scatta una foto", + "Take_a_video": "Registra un video", + "Take_it": "Prendi!", + "tap_to_change_status": "tocca per cambiare stato", + "Tap_to_view_servers_list": "Tocca per vedere la lista server", + "Terms_of_Service": " Termini di servizio ", + "Theme": "Tema", + "The_user_wont_be_able_to_type_in_roomName": "L'utente non potrà scrivere in {{roomName}}", + "The_user_will_be_able_to_type_in_roomName": "L'utente potrà scrivere in {{roomName}}", + "There_was_an_error_while_action": "Si è verificato un errore nel {{action}}!", + "This_room_is_blocked": "Questa stanza è bloccata", + "This_room_is_read_only": "Questa stanza è in sola lettura", + "Thread": "Thread", + "Threads": "Threads", + "Timezone": "Fuso orario", + "To": "A", + "topic": "argomento", + "Topic": "Argomento", + "Translate": "Traduci", + "Try_again": "Riprova", + "Two_Factor_Authentication": "Autenticazione a due fattori", + "Type_the_channel_name_here": "Scrivi il nome del canale qui", + "unarchive": "rimuovi dall'archivio", + "UNARCHIVE": "RIMUOVI DALL'ARCHIVIO", + "Unblock_user": "Sblocca utente", + "Unfavorite": "Rimuovi preferito", + "Unfollowed_thread": "Non segui più il thread", + "Unmute": "Attiva notifiche", + "unmuted": "notifiche attivate", + "Unpin": "Stacca", + "unread_messages": "non letti", + "Unread": "Non letto", + "Unread_on_top": "Non letti sopra", + "Unstar": "Rimuovi dai preferiti", + "Updating": "Aggiornamento...", + "Uploading": "Caricamento", + "Upload_file_question_mark": "Carica file?", + "User": "Utente", + "Users": "Utenti", + "User_added_by": "Utente {{userAdded}} aggiunto da {{userBy}}", + "User_Info": "Informazioni utente", + "User_has_been_key": "Utente {{key}}", + "User_is_no_longer_role_by_": "{{user}} non è più {{role}} da {{userBy}}", + "User_muted_by": "Utente {{userMuted}} silenziato da {{userBy}}", + "User_removed_by": "Utente {{userRemoved}} rimosso da {{userBy}}", + "User_sent_an_attachment": "{{user}} ha inviato un allegato", + "User_unmuted_by": "Utente {{userUnmuted}} de-silenziato da {{userBy}}", + "User_was_set_role_by_": "{{user}} è stato impostato come {{role}} da {{userBy}}", + "Username_is_empty": "Username vuoto", + "Username": "Username", + "Username_or_email": "Username o email", + "Uses_server_configuration": "Usa la configurazione del server", + "Validating": "Validazione", + "Registration_Succeeded": "Registrazione completata!", + "Verify": "Verifica", + "Verify_email_title": "Verifica completata!", + "Verify_email_desc": "Ti abbiamo inviato una e-mail per confermare la tua registrazione. Se non la ricevi, ritorna qui e riprova", + "Verify_your_email_for_the_code_we_sent": "Controlla l'e-mail con il codice che ti abbiamo inviato", + "Video_call": "Videochiamata", + "View_Original": "Mostra originale", + "Voice_call": "Chiamata vocale", + "Waiting_for_network": "In attesa di connessione ...", + "Websocket_disabled": "Websocket disabilitata per questo server.\n{{contact}}", + "Welcome": "Benvenuto", + "What_are_you_doing_right_now": "Cosa stai facendo in questo momento?", + "Whats_your_2fa": "Qual'è il tuo codice 2FA?", + "Without_Servers": "Senza server", + "Workspaces": "Workspace", + "Would_you_like_to_return_the_inquiry": "Vorresti ritirare la tua domanda?", + "Write_External_Permission_Message": "Rocket.Chat ha bisogno dell'accesso alla galleria per salvare le immagini.", + "Write_External_Permission": "Permesso galleria", + "Yes": "Si", + "Yes_action_it": "Sì, {{action}}!", + "Yesterday": "Ieri", + "You_are_in_preview_mode": "Sei in modalità anteprima", + "You_are_offline": "Sei offline", + "You_can_search_using_RegExp_eg": "Puoi usare espressioni regolari. es. `/^testo$/i`", + "You_colon": "Tu: ", + "you_were_mentioned": "sei stato menzionato", + "You_were_removed_from_channel": "Sei stato rimosso da {{channel}}", + "you": "tu", + "You": "Tu", + "Logged_out_by_server": "Sei stato disconnesso dal server. Esegui nuovamente l'accesso.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Devi accedere ad almeno un server Rocket.Chat prima di condividere qualcosa.", + "You_need_to_verifiy_your_email_address_to_get_notications": "Devi verificare il tuo indirizzo e-mail per ricevere le notifiche", + "Your_certificate": "Il tuo certificato", + "Your_invite_link_will_expire_after__usesLeft__uses": "Il tuo link di invito scadrà dopo {{usesLeft}} utilizzi.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Il tuo link di invito scadrà il {{date}} oppure dopo {{usesLeft}} utilizzi.", + "Your_invite_link_will_expire_on__date__": "Il tuo link di invito scadrà il {{date}}.", + "Your_invite_link_will_never_expire": "Il tuo link di invito non scadrà mai.", + "Your_workspace": "Il tuo workspace", + "Your_password_is": "La tua password è", + "Version_no": "Versione: {{version}}", + "You_will_not_be_able_to_recover_this_message": "Non sarai in grado di ripristinare questo messaggio!", + "You_will_unset_a_certificate_for_this_server": "Rimuoverai un certificato per questo server", + "Change_Language": "Cambia lingua", + "Crash_report_disclaimer": "Non registreremo mai il contenuto delle tue chat. Il crash report contiene solo informazioni necessarie per l'identificazione e la risoluzione dei problemi.", + "Type_message": "Scrivi messaggio", + "Room_search": "Ricerca stanze", + "Room_selection": "Selezione stanza 1...9", + "Next_room": "Prossima stanza", + "Previous_room": "Stanza precedente", + "New_room": "Nuova stanza", + "Upload_room": "Carica nella stanza", + "Search_messages": "Cerca messaggi", + "Scroll_messages": "Scorri i messaggi", + "Reply_latest": "Rispondi all'ultimo", + "Reply_in_Thread": "Rispondi nella discussione", + "Server_selection": "Selezione server", + "Server_selection_numbers": "Selezione server 1...9", + "Add_server": "Aggiungi server", + "New_line": "Nuova linea", + "You_will_be_logged_out_of_this_application": "Verrai disconnesso da questa applicazione.", + "Clear": "Cancella", + "This_will_clear_all_your_offline_data": "Questo cancellerà tutti i tuoi dati offline.", + "This_will_remove_all_data_from_this_server": "Questo rimuoverà tutti i dati dal server.", + "Mark_unread": "Segna come non letto", + "Wait_activation_warning": "Prima di poter accedere, il tuo account deve essere attivato manualmente da un amministratore.", + "Screen_lock": "Blocco schermo", + "Local_authentication_biometry_title": "Autenticazione", + "Local_authentication_biometry_fallback": "Usa passcode", + "Local_authentication_unlock_option": "Sblocca con Passcode", + "Local_authentication_change_passcode": "Cambia Passcode", + "Local_authentication_info": "Nota: se dimentichi il Passcode, dovrai cancellare e installare nuovamente l'app.", + "Local_authentication_facial_recognition": "riconoscimento facciale", + "Local_authentication_fingerprint": "impronta digitale", + "Local_authentication_unlock_with_label": "Sblocca con {{label}}", + "Local_authentication_auto_lock_60": "Dopo 1 minuto", + "Local_authentication_auto_lock_300": "Dopo 5 minuti", + "Local_authentication_auto_lock_900": "Dopo 15 minuti", + "Local_authentication_auto_lock_1800": "Dopo 30 minuti", + "Local_authentication_auto_lock_3600": "Dopo 1 ora", + "Passcode_enter_title": "Inserisci il passcode", + "Passcode_choose_title": "Scegli il tuo nuovo passcode", + "Passcode_choose_confirm_title": "Conferma il tuo nuovo passcode", + "Passcode_choose_error": "I passcode non corrispondono. Riprova.", + "Passcode_choose_force_set": "Passcode richiesto dall'admin", + "Passcode_app_locked_title": "App bloccata", + "Passcode_app_locked_subtitle": "Riprova tra {{timeLeft}} secondi", + "After_seconds_set_by_admin": "Dopo {{seconds}} secondi (impostati dall'admin)", + "Dont_activate": "Non attivare ora", + "Queued_chats": "Chat in coda", + "Queue_is_empty": "La coda è vuota", + "Logout_from_other_logged_in_locations": "Disconnetti da altre postazioni", + "You_will_be_logged_out_from_other_locations": "Verrai disconnesso dalle altre postazioni.", + "Logged_out_of_other_clients_successfully": "Disconnesso dalle altre postazioni con successo", + "Logout_failed": "Disconnessione fallita!", + "Log_analytics_events": "Invia statistiche anonime", + "E2E_encryption_change_password_title": "Cambia la password di cifratura", + "E2E_encryption_change_password_description": "Ora puoi creare gruppi e messaggi privati crittografati. Potrai, inoltre, crittografare i tuoi gruppi e messaggi privati esistenti. \nQuesta è crittografia end-to-end, la chiave per codificare/decodificare i tuoi messaggi non verrà salvata sul server. Per questo motivo devi salvarla in un luogo sicuro. Ti verrà richiesto di inserirla sugli altri dispositivi sui quali vuoi usare la crittografia e2e.", + "E2E_encryption_change_password_error": "Si è verificato un errore durante il cambio della password della chiave E2E!", + "E2E_encryption_change_password_success": "La password della chiave E2E è stata cambiata con successo!", + "E2E_encryption_change_password_message": "Assicurati di salvarla in un posto sicuro.", + "E2E_encryption_change_password_confirmation": "Si, cambiala", + "E2E_encryption_reset_title": "Ripristina la Chiave E2E", + "E2E_encryption_reset_description": "Questa opzione rimuoverà la tua chiave E2E corrente e sarai disconnesso. \nAl prossimo login, Rocket.Chat genererà una nuova chiave e ripristinerà l'accesso a tutte le stanze crittografate con uno o più membri online. \nA causa della natura della crittografia E2E, Rocket.Chat non sarà in grado di ripristinare l'accesso alle stanze senza membri online.", + "E2E_encryption_reset_button": "Ripristina", + "E2E_encryption_reset_error": "Si è verificato un errore durante il ripristino della chiave E2E!", + "E2E_encryption_reset_message": "Stai per essere disconnesso.", + "E2E_encryption_reset_confirmation": "Si, resettala", + "Following": "Seguiti", + "Threads_displaying_all": "Visualizza Tutti", + "Threads_displaying_following": "Visualizza Seguiti", + "Threads_displaying_unread": "Visualizza Non letti", + "No_threads": "Non ci sono thread", + "No_threads_following": "Non stai seguendo alcun thread", + "No_threads_unread": "Non ci sono thread non letti", + "Messagebox_Send_to_channel": "Invia sul canale", + "Set_as_leader": "Rendi leader", + "Set_as_moderator": "Rendi moderatore", + "Set_as_owner": "Rendi proprietario", + "Remove_as_leader": "Rimuovi come leader", + "Remove_as_moderator": "Rimuovi come moderatore", + "Remove_as_owner": "Rimuovi come proprietario", + "Remove_from_room": "Rimuovi dalla stanza", + "Ignore": "Ignora", + "Unignore": "Non ignorare", + "User_has_been_ignored": "Utente ignorato", + "User_has_been_unignored": "Utente non ignorato", + "User_has_been_removed_from_s": "L'utente è stato rimosso da {{s}}", + "User__username__is_now_a_leader_of__room_name_": "L'utente {{username}} è ora un leader di {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "L'utente {{username}} è ora un moderatore di {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "L'utente {{username}} è ora un proprietario di {{room_name}}", + "User__username__removed_from__room_name__leaders": "L'utente {{username}} non è più un leader di {{room_name}}", + "User__username__removed_from__room_name__moderators": "L'utente {{username}} non è più un moderatore di {{room_name}}", + "User__username__removed_from__room_name__owners": "L'utente {{username}} non è più un proprietario di {{room_name}}", + "The_user_will_be_removed_from_s": "L'utente sarà rimosso da {{s}}", + "Yes_remove_user": "Si, rimuovi utente!", + "Direct_message": "Messaggio diretto", + "Message_Ignored": "Messaggio ignorato. Tocca per visualizzarlo.", + "Enter_workspace_URL": "Inserisci la url del workspace", + "Workspace_URL_Example": "Es. tua-azienda.rocket.chat" +} \ No newline at end of file diff --git a/app/i18n/locales/ja.js b/app/i18n/locales/ja.js deleted file mode 100644 index 82ca4870e67..00000000000 --- a/app/i18n/locales/ja.js +++ /dev/null @@ -1,534 +0,0 @@ -export default { - '1_person_reacted': '1人がリアクション', - '1_user': '1人', - 'error-action-not-allowed': '{{action}}の権限がありません。', - 'error-application-not-found': 'アプリケーションがありません。', - 'error-archived-duplicate-name': - 'アーカイブ名が重複しています: {{room_name}}', - 'error-avatar-invalid-url': '画像のURLが正しくありません: {{url}}', - 'error-avatar-url-handling': - 'アバターをURL({{url}})から{{username}}に設定中にエラーが発生しました。', - 'error-cant-invite-for-direct-room': 'ユーザーを直接ルームに招待することができません。', - 'error-could-not-change-email': 'メールアドレスを変更できません。', - 'error-could-not-change-name': '名前を変更できません。', - 'error-could-not-change-username': 'ユーザー名を変更できません。', - 'error-delete-protected-role': '保護されたロールは削除できません。', - 'error-department-not-found': 'ロールが存在しません。', - 'error-direct-message-file-upload-not-allowed': - 'ダイレクトメッセージでのファイルのアップロードは許可されていません。', - 'error-duplicate-channel-name': '{{channel_name}}と同名のチャンネルが存在します。', - 'error-email-domain-blacklisted': 'このドメインのメールアドレスはブラックリストに登録されています。', - 'error-email-send-failed': '次のメールアドレスの送信に失敗しました: {{message}}', - 'error-save-image': '画像の保存に失敗しました。', - 'error-field-unavailable': '{{field}}は既に使用されています。', - 'error-file-too-large': 'ファイルが大きすぎます。', - 'error-importer-not-defined': - 'インポータが正しく定義されていません。Importクラスが見つかりません。', - 'error-input-is-not-a-valid-field': '{{input}}は{{field}}の入力として正しくありません。', - 'error-invalid-actionlink': 'アクションリンクが正しくありません。', - 'error-invalid-arguments': '引数が正しくありません。', - 'error-invalid-asset': 'アセットが不正です。', - 'error-invalid-channel': 'チャンネル名が不正です。', - 'error-invalid-channel-start-with-chars': - '不正なチャンネルです。チャンネル名は@か#から開始します。', - 'error-invalid-custom-field': 'カスタムフィールドが不正です。', - 'error-invalid-custom-field-name': - 'カスタムフィールド名が不正です。半角英数字、ハイフン、アンダースコアのみを使用してください。', - 'error-invalid-date': '不正な日時です', - 'error-invalid-description': '不正な詳細です', - 'error-invalid-domain': '不正なドメインです', - 'error-invalid-email': '不正なメールアドレスです。 {{emai}}', - 'error-invalid-email-address': '不正なメールアドレスです', - 'error-invalid-file-height': 'ファイルの高さが不正です', - 'error-invalid-file-type': 'ファイルの種類が不正です', - 'error-invalid-file-width': 'ファイルの幅が不正です', - 'error-invalid-from-address': '不正なアドレスから通知しました', - 'error-invalid-integration': '不正なインテグレーションです。', - 'error-invalid-message': '不正なメッセージです。', - 'error-invalid-method': '不正なメソッドです。', - 'error-invalid-name': '不正な名前です', - 'error-invalid-password': '不正なパスワードです', - 'error-invalid-redirectUri': '不正なリダイレクトURIです', - 'error-invalid-role': '不正なロールです', - 'error-invalid-room': '不正なルームです', - 'error-invalid-room-name': '{{room_name}}は正しいルーム名ではありません。', - 'error-invalid-room-type': '{{type}}は正しいルームタイプではありません。', - 'error-invalid-settings': '不正な設定が送信されました', - 'error-invalid-subscription': '不正な購読です', - 'error-invalid-token': 'トークンが正しくありません', - 'error-invalid-triggerWords': 'トリガーワードが正しくありません', - 'error-invalid-urls': 'URLが正しくありません', - 'error-invalid-user': 'ユーザーが正しくありません', - 'error-invalid-username': 'ユーザー名が正しくありません', - 'error-invalid-webhook-response': - 'WebhookのURLが200以外のステータスを返しています', - 'error-message-deleting-blocked': 'メッセージの削除をブロックされています。', - 'error-message-editing-blocked': 'メッセージの編集をブロックされています。', - 'error-message-size-exceeded': 'メッセージの大きさが Message_MaxAllowedSize を超えています。', - 'error-missing-unsubscribe-link': '購読停止リンクを入れてください。', - 'error-no-tokens-for-this-user': 'このユーザーにはトークンがありません。', - 'error-not-allowed': '許可されていません。', - 'error-not-authorized': '有効化されていません。', - 'error-push-disabled': 'プッシュは無効化されています。', - 'error-remove-last-owner': - 'ルームの最後のオーナーです。ルームを退出する前に新しいオーナーを設定してください。', - 'error-role-in-use': '使用中のロールを削除することはできません。', - 'error-role-name-required': 'ロール名を入力してください。', - 'error-the-field-is-required': '{{field}}の入力欄は必須です。', - 'error-too-many-requests': - 'エラーです。リクエストが多すぎます。リクエストの頻度を落としてください。{{seconds}} 秒以上待ってから再度お試しください。', - 'error-user-is-not-activated': 'アカウントが有効化されていません。', - 'error-user-has-no-roles': 'ロールがありません。', - 'error-user-limit-exceeded': - '#channel_name に招待できるユーザー数の上限を超えています。管理者にお問い合わせください。', - 'error-user-not-in-room': 'ユーザーがルームにいません。', - 'error-user-registration-custom-field': - 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'ユーザー登録は無効化されています', - 'error-user-registration-secret': - 'ユーザーの登録は登録用URLからのみ許可されています', - 'error-you-are-last-owner': - 'あなたは最後のオーナーです。ルームを退出する前に別のオーナーを設定してください。', - Actions: 'アクション', - activity: 'アクティビティ', - Activity: 'アクティビティ順', - Add_Reaction: 'リアクションを追加', - Add_Server: 'サーバーを追加', - Add_users: 'ユーザーを追加', - Admin_Panel: '管理者パネル', - Alert: 'アラート', - alert: 'アラート', - alerts: 'アラート', - All_users_in_the_channel_can_write_new_messages: - 'すべてのユーザーが新しいメッセージを書き込みできます', - All: 'すべての', - All_Messages: '全メッセージ', - Allow_Reactions: 'リアクションを許可', - Alphabetical: 'アルファベット順', - and_more: 'さらに表示', - and: 'と', - announcement: 'アナウンス', - Announcement: 'アナウンス', - Apply_Your_Certificate: '証明書を適用する', - ARCHIVE: 'アーカイブ', - archive: 'アーカイブ', - are_typing: 'が入力中', - Are_you_sure_question_mark: 'よろしいですか?', - Are_you_sure_you_want_to_leave_the_room: - '{{room}}を退出してもよろしいですか?', - Audio: '音声', - Authenticating: '認証', - Automatic: '自動', - Auto_Translate: '自動翻訳', - Avatar_changed_successfully: 'アバターを変更しました!', - Avatar_Url: 'アバターURL', - Away: '退出中', - Back: '戻る', - Black: 'ブラック', - Block_user: 'ブロックしたユーザー', - Broadcast_channel_Description: - '許可されたユーザーのみが新しいメッセージを書き込めます。他のユーザーは返信することができます', - Broadcast_Channel: '配信チャンネル', - Busy: '取り込み中', - By_proceeding_you_are_agreeing: '続行することにより、私達を承認します', - Cancel_editing: '編集をキャンセル', - Cancel_recording: '録音をキャンセル', - Cancel: 'キャンセル', - changing_avatar: 'アバターを変更', - creating_channel: 'チャンネルを作成', - creating_invite: '招待を作成', - Channel_Name: 'チャンネル名', - Channels: 'チャンネル', - Chats: 'チャット', - Call_already_ended: '通話は終了しています。', - Click_to_join: 'クリックして参加!', - Close: '閉じる', - Close_emoji_selector: '絵文字ピッカーを閉じる', - Choose: '選択', - Choose_from_library: 'ライブラリから選択', - Choose_file: 'ファイルを選択', - Code: 'コード', - Collaborative: 'コラボ', - Confirm: '承認', - Connect: '接続', - Connected: '接続しました', - connecting_server: 'サーバーに接続中', - Connecting: '接続中...', - Contact_us: 'お問い合わせ', - Contact_your_server_admin: 'サーバー管理者にお問い合わせください。', - Continue_with: '次でログイン: ', - Copied_to_clipboard: 'クリップボードにコピー!', - Copy: 'コピー', - Permalink: 'パーマリンク', - Certificate_password: 'パスワード証明書', - Clear_cache: 'ローカルのサーバーキャッシュをクリア', - Whats_the_password_for_your_certificate: - '証明書のパスワードはなんですか?', - Create_account: 'アカウントを作成', - Create_Channel: 'チャンネルを作成', - Created_snippet: 'スニペットを作成', - Create_a_new_workspace: '新しいワークスペースを作成', - Create: '作成', - Dark: 'ダーク', - Dark_level: 'ダークレベル', - Default: 'デフォルト', - Default_browser: 'デフォルトのブラウザ', - Delete_Room_Warning: - 'ルームを削除すると、ルームに投稿されたすべてのメッセージが削除されます。この操作は取り消せません。', - delete: '削除', - Delete: '削除', - DELETE: '削除', - deleting_room: 'ルームを削除', - description: '概要', - Description: '概要', - Desktop_Options: 'デスクトップオプション', - Directory: 'ディレクトリ', - Direct_Messages: 'ダイレクトメッセージ', - Disable_notifications: '通知を無効化', - Discussions: 'ディスカッション', - Dont_Have_An_Account: 'アカウントがありませんか?', - Do_you_have_a_certificate: '証明書を持っていますか?', - Do_you_really_want_to_key_this_room_question_mark: - '本当にこのルームを{{key}}しますか?', - edit: '編集', - edited: '編集済', - Edit: '編集', - Edit_Invite: '編集に招待', - Email_or_password_field_is_empty: 'メールアドレスかパスワードの入力欄が空です', - Email: 'メールアドレス', - email: 'メールアドレス', - Enable_Auto_Translate: '自動翻訳を有効にする', - Enable_markdown: 'マークダウンを有効にする', - Enable_notifications: '通知を有効にする', - Everyone_can_access_this_channel: '全員このチャンネルにアクセスできます', - Error_uploading: 'アップロードエラー', - Expiration_Days: '期限切れ (日)', - Favorite: 'お気に入り', - Favorites: 'お気に入り', - Files: 'ファイル', - File_description: 'ファイルの説明', - File_name: 'ファイル名', - Finish_recording: '録音停止', - Following_thread: 'スレッド更新時に通知', - For_your_security_you_must_enter_your_current_password_to_continue: - 'セキュリティのため、続けるには現在のパスワードを入力してください。', - Forgot_password_If_this_email_is_registered: - '送信したメールアドレスが登録されていれば、パスワードのリセット方法を送信しました。メールアドレスがすぐに来ない場合はやり直してください。', - Forgot_password: 'パスワードを忘れた', - Forgot_Password: 'パスワードを忘れた', - Full_table: 'クリックしてテーブル全体を見る', - Generate_New_Link: '新しいリンクを生成', - Group_by_favorites: 'お気に入りをグループ化', - Group_by_type: 'タイプ別にグループ化', - Hide: '隠す', - Has_joined_the_channel: 'はチャンネルに参加しました', - Has_joined_the_conversation: 'は会話に参加しました', - Has_left_the_channel: 'はチャンネルを退出しました', - In_App_And_Desktop: 'アプリ内とデスクトップ', - In_App_and_Desktop_Alert_info: - 'アプリを表示中にはバナーを上部に表示し、デスクトップには通知を送ります。', - Invisible: '状態を隠す', - Invite: '招待', - is_a_valid_RocketChat_instance: 'は正しいRocket.Chatのインスタンスです', - is_not_a_valid_RocketChat_instance: 'はRocket.Chatのインスタンスではありません', - is_typing: 'が入力中', - Invalid_or_expired_invite_token: '招待トークンが無効か、期限が切れています', - Invalid_server_version: - '接続しようとしているサーバーのバージョン({{currentVersion}})はサポートされていません。\n\nサポートする最低バージョンは {{minVersion}} です', - Invite_Link: '招待リンク', - Invite_users: 'ユーザーを招待', - Join: '参加', - Just_invited_people_can_access_this_channel: - '招待されたユーザーだけがこのチャンネルに参加できます', - Language: '言語', - last_message: '最後のメッセージ', - Leave_channel: 'チャンネルを退出', - leaving_room: 'チャンネルを退出', - leave: '退出', - Legal: '法的項目', - Light: 'ライト', - License: 'ライセンス', - Livechat: 'ライブチャット', - Login: 'ログイン', - Login_error: '証明書が承認されませんでした。再度お試しください。', - Login_with: '次でログイン: ', - Logout: 'ログアウト', - Max_number_of_uses: '最大利用数', - members: 'メンバー', - Members: 'メンバー', - Mentioned_Messages: 'メンションされたメッセージ', - mentioned: 'メンション', - Mentions: 'メンション', - Message_accessibility: '{{user}} から {{time}} にメッセージ: {{message}}', - Message_actions: 'メッセージアクション', - Message_pinned: 'メッセージをピン留め', - Message_removed: 'メッセージを除く', - message: 'メッセージ', - messages: 'メッセージ', - Message: 'メッセージ', - Messages: 'メッセージ', - Message_Reported: 'メッセージを報告しました', - Microphone_Permission_Message: - 'Rocket.Chatは音声メッセージを送信するのにマイクのアクセスの許可が必要です。', - Microphone_Permission: 'マイクの許可', - Mute: 'ミュート', - muted: 'ミュートした', - My_servers: '自分のサーバー', - N_people_reacted: '{{n}}人がリアクションしました', - N_users: '{{n}}人', - name: 'アルファベット', - Name: '名前', - Never: 'ずっと受け取らない', - New_Message: 'メッセージ', - New_Password: '新しいパスワード', - New_Server: '新規サーバー', - Next: '次へ', - No_files: 'ファイルがありません', - No_limit: '制限なし', - No_mentioned_messages: 'メンションされたメッセージはありません', - No_pinned_messages: 'ピン留めされたメッセージはありません', - No_results_found: '結果なし', - No_starred_messages: 'お気に入りされたメッセージはありません', - No_thread_messages: 'スレッドのメッセージはありません', - No_Message: 'メッセージなし', - No_messages_yet: 'まだメッセージはありません', - No_Reactions: 'リアクションなし', - No_Read_Receipts: '未読通知はありません', - Not_logged: 'ログされていません', - Not_RC_Server: 'Rocket.Chatサーバーではありません。\n{{contact}}', - Nothing: '何もなし', - Nothing_to_save: '保存するものはありません!', - Notify_active_in_this_room: 'このルームのアクティブなユーザーに通知する', - Notify_all_in_this_room: 'このルームのユーザー全員に通知する', - Notifications: '通知', - Notification_Duration: '通知の期間', - Notification_Preferences: '通知設定', - Offline: 'オフライン', - Oops: 'おっと!', - Onboarding_title: 'Rocket.Chatへようこそ', - Online: 'オンライン', - Only_authorized_users_can_write_new_messages: - '承認されたユーザーだけが新しいメッセージを書き込めます', - Open_emoji_selector: '絵文字ピッカーを開く', - Open_Source_Communication: 'オープンソースコミュニケーション', - Password: 'パスワード', - Permalink_copied_to_clipboard: 'リンクをクリップボードにコピーしました!', - Pin: 'ピン留め', - Pinned_Messages: 'ピン留めされたメッセージ', - pinned: 'ピン留めされた', - Pinned: 'ピン留めされました', - Please_enter_your_password: 'パスワードを入力してください', - Preferences: '設定', - Preferences_saved: '設定が保存されました。', - Privacy_Policy: ' プライバシーポリシー', - Private_Channel: 'プライベートチャンネル', - Private_Groups: 'プライベートグループ', - Private: 'プライベート', - Processing: '処理中...', - Profile_saved_successfully: 'プロフィールが保存されました!', - Profile: 'プロフィール', - Public_Channel: 'パブリックチャンネル', - Public: 'パブリック', - Push_Notifications: 'プッシュ通知', - Push_Notifications_Alert_Info: - '通知はアプリを開いていない時に送られます。', - Quote: '引用', - Reactions_are_disabled: 'リアクションは無効化されています', - Reactions_are_enabled: 'リアクションは有効化されています', - Reactions: 'リアクション', - Read: '読む', - Read_Only_Channel: '読み取り専用チャンネル', - Read_Only: '読み取り専用', - Read_Receipt: 'レシートを見る', - Receive_Group_Mentions: 'グループの通知を受け取る', - Receive_Group_Mentions_Info: '@all と @here の通知を受け取る', - Register: '登録', - Repeat_Password: 'パスワードを再入力', - Replied_on: '返信:', - replies: '返信', - reply: '返信', - Reply: '返信', - Report: '報告', - Receive_Notification: '通知を受け取る', - Receive_notifications_from: '{{name}}からの通知を受け取る', - Resend: '再送信', - Reset_password: 'パスワードをリセット', - resetting_password: 'パスワードを再設定', - RESET: 'リセット', - Review_app_title: 'アプリにご満足いただけておりますか?', - Review_app_desc: '{{store}}で5段階で評価をお願いします', - Review_app_yes: 'はい!', - Review_app_no: 'いいえ', - Review_app_later: 'あとで', - Review_app_unable_store: '{{store}}を開けません。', - Review_this_app: 'アプリをレビューする', - Roles: 'ロール', - Room_actions: 'ルームアクション', - Room_changed_announcement: - '{{userBy}}がアナウンスを変更しました: {{announcement}}', - Room_changed_description: - '{{userBy}}が概要を変更しました: {{description}}', - Room_changed_privacy: '{{userBy}}がルームタイプを変更しました。: {{type}}', - Room_changed_topic: '{{userBy}}がトピックを変更しました: {{topic}}', - Room_Files: 'ルームのファイル', - Room_Info_Edit: 'ルーム情報を編集', - Room_Info: 'ルーム情報', - Room_Members: 'ルームのメンバー', - Room_name_changed: 'ルーム名が{{userBy}}により変更されました: {{name}}', - SAVE: '保存', - Save_Changes: '変更を保存', - Save: '保存', - saving_preferences: '設定を保存中', - saving_profile: 'プロフィールを設定中', - saving_settings: 'サーバー設定を保存中', - saved_to_gallery: 'ギャラリーに保存しました', - Search_Messages: 'メッセージを検索', - Search: '検索', - Search_by: '検索種別: ', - Search_global_users: 'グローバルユーザーのための検索', - Search_global_users_description: - '有効にした場合、他の会社やサーバーの誰もがあなたを検索可能になります。', - Seconds: '{{second}} 秒', - Select_Avatar: 'アバターを選択', - Select_Server: 'サーバーを選択', - Select_Users: 'ユーザーを選択', - Send: '送信', - Send_audio_message: '録音メッセージを送信', - Send_crash_report: 'クラッシュレポートを送信', - Send_message: 'メッセージを送信', - Send_to: '送信先...', - Sent_an_attachment: '添付ファイルを送信しました', - Server: 'サーバー', - Servers: 'サーバー', - Server_version: 'サーバーバージョン: {{version}}', - Set_username_subtitle: - 'ユーザー名はメッセージ中であなたにメンションするのに使われます。', - Settings: '設定', - Settings_succesfully_changed: '設定が更新されました!', - Share: 'シェア', - Share_Link: 'リンクをシェアする', - Share_this_app: 'このアプリをシェアする', - Show_more: 'Show more..', - Show_Unread_Counter: '未読件数を表示する', - Show_Unread_Counter_Info: - '未読件数はリスト上で、チャンネルの右側にバッジで表示されます。', - Sign_in_your_server: 'サーバーに接続', - Sign_Up: '登録', - Some_field_is_invalid_or_empty: '不正、または空の入力欄があります。', - Sorting_by: '{{key}}順', - Sound: '音', - Star_room: 'お気に入りルーム', - Star: 'お気に入り', - Starred_Messages: 'お気に入りされたメッセージ', - starred: 'お気に入りされています', - Starred: 'お気に入りされています', - Start_of_conversation: '会話を開始する', - Started_discussion: 'ディスカッションを開始する:', - Started_call: '{{userBy}}と通話する', - Submit: '送信', - Table: '表', - Take_a_photo: '写真を撮影', - Take_a_video: '動画を撮影', - tap_to_change_status: 'タップしてステータスを変更', - Tap_to_view_servers_list: 'タップしてサーバーリストを見る', - Terms_of_Service: ' 利用規約 ', - Theme: 'テーマ', - There_was_an_error_while_action: '{{action}}の最中にエラーが発生しました!', - This_room_is_blocked: 'このルームはブロックされています。', - This_room_is_read_only: 'このルームは読み取り専用です。', - Thread: 'スレッド', - Threads: 'スレッド', - Timezone: 'タイムゾーン', - To: 'To', - topic: 'トピック', - Topic: 'トピック', - Translate: '翻訳', - Try_again: '再度お試しください。', - Two_Factor_Authentication: '2段階認証', - Type_the_channel_name_here: 'ここにチャンネル名を入力', - unarchive: 'アーカイブ解除', - UNARCHIVE: 'アーカイブ解除', - Unblock_user: 'ブロックを解除', - Unfavorite: 'お気に入り解除', - Unfollowed_thread: 'スレッド更新時に通知しない', - Unmute: 'ミュート解除', - unmuted: 'ミュート解除しました', - Unpin: 'ピン留めを解除', - unread_messages: '未読', - Unread: '未読', - Unread_on_top: '未読メッセージを上に表示', - Unstar: 'お気に入り解除', - Updating: '更新中...', - Uploading: 'アップロード中', - Upload_file_question_mark: 'ファイルをアップロードしますか?', - Users: 'ユーザー', - User_added_by: '{{userBy}} が {{userAdded}} を追加しました', - User_Info: 'ユーザー情報', - User_has_been_key: 'ユーザーは{{ key }}', - User_is_no_longer_role_by_: '{{userBy}} は {{user}} のロール {{role}} を削除しました。', - User_muted_by: '{{userBy}} は {{userMuted}} をミュートしました。', - User_removed_by: '{{userBy}} は {{userRemoved}} を退出させました。', - User_sent_an_attachment: '{{user}}は添付ファイルを送信しました', - User_unmuted_by: '{{userUnmuted}} は {{userBy}} にミュート解除されました。', - User_was_set_role_by_: '{{user}} was set {{role}} by {{userBy}}', - Username_is_empty: 'ユーザー名が空です。', - Username: 'ユーザー名', - Username_or_email: 'ユーザー名かメールアドレス', - Validating: '検証中', - Video_call: 'ビデオ通話', - View_Original: 'オリジナルを見る', - Voice_call: '音声通話', - Websocket_disabled: 'Websocketはこのサーバーでは無効化されています。\n{{contact}}', - Welcome: 'ようこそ', - Whats_your_2fa: '2段階認証のコードを入力してください', - Without_Servers: 'サーバーを除く', - Write_External_Permission_Message: - 'Rocket.Chatは画像を保存するためにギャラリーへのアクセスを求めています。', - Write_External_Permission: 'ギャラリーへのアクセス許可', - Yes_action_it: 'はい、{{action}}します!', - Yesterday: '昨日', - You_are_in_preview_mode: 'プレビューモードです。', - You_are_offline: 'オフラインです。', - You_can_search_using_RegExp_eg: '正規表現を利用できます。 例: `/^text$/i`', - You_colon: 'あなた: ', - you_were_mentioned: 'あなたがメンションしました', - you: 'あなた', - You: 'あなた', - Logged_out_by_server: - 'サーバーからログアウトします。もう一度ログインしてください。', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: - 'シェアするためには1つ以上のサーバーにアクセスする必要があります。', - Your_certificate: 'あなたの認証情報', - Your_invite_link_will_expire_after__usesLeft__uses: - '招待リンクはあと{{usesLeft}}回で使用できなくなります。', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: - '招待リンクは{{date}}までか、あと{{usesLeft}}回で使用できなくなります。', - Your_invite_link_will_expire_on__date__: - '招待リンクは{{date}}に使用できなくなります。', - Your_invite_link_will_never_expire: '招待リンクはずっと有効です。', - Version_no: 'バージョン: {{version}}', - You_will_not_be_able_to_recover_this_message: - 'このメッセージは復元できません!', - Change_Language: '言語を変更', - Crash_report_disclaimer: - 'クラッシュレポートには問題を特定し、修正するために必要な情報のみが含まれます。チャット内のコンテンツは送信されません。', - Type_message: 'メッセージを入力', - Room_search: 'ルームを検索', - Room_selection: 'ルームを選択 1...9', - Next_room: '次のルーム', - Previous_room: '前のルーム', - New_room: '新しいルーム', - Upload_room: 'ルームにアップロード', - Search_messages: 'メッセージを検索', - Scroll_messages: 'メッセージをスクロール', - Reply_latest: '最新のメッセージにリプライ', - Server_selection: 'サーバー選択', - Server_selection_numbers: 'サーバー選択 1...9', - Add_server: 'サーバーを追加', - New_line: '新しい行', - You_will_be_logged_out_of_this_application: - 'アプリからログアウトします。', - Clear: 'クリア', - This_will_clear_all_your_offline_data: - 'オフラインデータをすべて削除します。' -}; diff --git a/app/i18n/locales/ja.json b/app/i18n/locales/ja.json new file mode 100644 index 00000000000..83b0d9d5e68 --- /dev/null +++ b/app/i18n/locales/ja.json @@ -0,0 +1,492 @@ +{ + "1_person_reacted": "1人がリアクション", + "1_user": "1人", + "error-action-not-allowed": "{{action}}の権限がありません。", + "error-application-not-found": "アプリケーションがありません。", + "error-archived-duplicate-name": "アーカイブ名が重複しています: {{room_name}}", + "error-avatar-invalid-url": "画像のURLが正しくありません: {{url}}", + "error-avatar-url-handling": "アバターをURL({{url}})から{{username}}に設定中にエラーが発生しました。", + "error-cant-invite-for-direct-room": "ユーザーを直接ルームに招待することができません。", + "error-could-not-change-email": "メールアドレスを変更できません。", + "error-could-not-change-name": "名前を変更できません。", + "error-could-not-change-username": "ユーザー名を変更できません。", + "error-delete-protected-role": "保護されたロールは削除できません。", + "error-department-not-found": "ロールが存在しません。", + "error-direct-message-file-upload-not-allowed": "ダイレクトメッセージでのファイルのアップロードは許可されていません。", + "error-duplicate-channel-name": "{{channel_name}}と同名のチャンネルが存在します。", + "error-email-domain-blacklisted": "このドメインのメールアドレスはブラックリストに登録されています。", + "error-email-send-failed": "次のメールアドレスの送信に失敗しました: {{message}}", + "error-save-image": "画像の保存に失敗しました。", + "error-field-unavailable": "{{field}}は既に使用されています。", + "error-file-too-large": "ファイルが大きすぎます。", + "error-importer-not-defined": "インポータが正しく定義されていません。Importクラスが見つかりません。", + "error-input-is-not-a-valid-field": "{{input}}は{{field}}の入力として正しくありません。", + "error-invalid-actionlink": "アクションリンクが正しくありません。", + "error-invalid-arguments": "引数が正しくありません。", + "error-invalid-asset": "アセットが不正です。", + "error-invalid-channel": "チャンネル名が不正です。", + "error-invalid-channel-start-with-chars": "不正なチャンネルです。チャンネル名は@か#から開始します。", + "error-invalid-custom-field": "カスタムフィールドが不正です。", + "error-invalid-custom-field-name": "カスタムフィールド名が不正です。半角英数字、ハイフン、アンダースコアのみを使用してください。", + "error-invalid-date": "不正な日時です", + "error-invalid-description": "不正な詳細です", + "error-invalid-domain": "不正なドメインです", + "error-invalid-email": "不正なメールアドレスです。 {{emai}}", + "error-invalid-email-address": "不正なメールアドレスです", + "error-invalid-file-height": "ファイルの高さが不正です", + "error-invalid-file-type": "ファイルの種類が不正です", + "error-invalid-file-width": "ファイルの幅が不正です", + "error-invalid-from-address": "不正なアドレスから通知しました", + "error-invalid-integration": "不正なインテグレーションです。", + "error-invalid-message": "不正なメッセージです。", + "error-invalid-method": "不正なメソッドです。", + "error-invalid-name": "不正な名前です", + "error-invalid-password": "不正なパスワードです", + "error-invalid-redirectUri": "不正なリダイレクトURIです", + "error-invalid-role": "不正なロールです", + "error-invalid-room": "不正なルームです", + "error-invalid-room-name": "{{room_name}}は正しいルーム名ではありません。", + "error-invalid-room-type": "{{type}}は正しいルームタイプではありません。", + "error-invalid-settings": "不正な設定が送信されました", + "error-invalid-subscription": "不正な購読です", + "error-invalid-token": "トークンが正しくありません", + "error-invalid-triggerWords": "トリガーワードが正しくありません", + "error-invalid-urls": "URLが正しくありません", + "error-invalid-user": "ユーザーが正しくありません", + "error-invalid-username": "ユーザー名が正しくありません", + "error-invalid-webhook-response": "WebhookのURLが200以外のステータスを返しています", + "error-message-deleting-blocked": "メッセージの削除をブロックされています。", + "error-message-editing-blocked": "メッセージの編集をブロックされています。", + "error-message-size-exceeded": "メッセージの大きさが Message_MaxAllowedSize を超えています。", + "error-missing-unsubscribe-link": "購読停止リンクを入れてください。", + "error-no-tokens-for-this-user": "このユーザーにはトークンがありません。", + "error-not-allowed": "許可されていません。", + "error-not-authorized": "有効化されていません。", + "error-push-disabled": "プッシュは無効化されています。", + "error-remove-last-owner": "ルームの最後のオーナーです。ルームを退出する前に新しいオーナーを設定してください。", + "error-role-in-use": "使用中のロールを削除することはできません。", + "error-role-name-required": "ロール名を入力してください。", + "error-the-field-is-required": "{{field}}の入力欄は必須です。", + "error-too-many-requests": "エラーです。リクエストが多すぎます。リクエストの頻度を落としてください。{{seconds}} 秒以上待ってから再度お試しください。", + "error-user-is-not-activated": "アカウントが有効化されていません。", + "error-user-has-no-roles": "ロールがありません。", + "error-user-limit-exceeded": "#channel_name に招待できるユーザー数の上限を超えています。管理者にお問い合わせください。", + "error-user-not-in-room": "ユーザーがルームにいません。", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "ユーザー登録は無効化されています", + "error-user-registration-secret": "ユーザーの登録は登録用URLからのみ許可されています", + "error-you-are-last-owner": "あなたは最後のオーナーです。ルームを退出する前に別のオーナーを設定してください。", + "Actions": "アクション", + "activity": "アクティビティ", + "Activity": "アクティビティ順", + "Add_Reaction": "リアクションを追加", + "Add_Server": "サーバーを追加", + "Add_users": "ユーザーを追加", + "Admin_Panel": "管理者パネル", + "Alert": "アラート", + "alert": "アラート", + "alerts": "アラート", + "All_users_in_the_channel_can_write_new_messages": "すべてのユーザーが新しいメッセージを書き込みできます", + "All": "すべての", + "All_Messages": "全メッセージ", + "Allow_Reactions": "リアクションを許可", + "Alphabetical": "アルファベット順", + "and_more": "さらに表示", + "and": "と", + "announcement": "アナウンス", + "Announcement": "アナウンス", + "Apply_Your_Certificate": "証明書を適用する", + "ARCHIVE": "アーカイブ", + "archive": "アーカイブ", + "are_typing": "が入力中", + "Are_you_sure_question_mark": "よろしいですか?", + "Are_you_sure_you_want_to_leave_the_room": "{{room}}を退出してもよろしいですか?", + "Audio": "音声", + "Authenticating": "認証", + "Automatic": "自動", + "Auto_Translate": "自動翻訳", + "Avatar_changed_successfully": "アバターを変更しました!", + "Avatar_Url": "アバターURL", + "Away": "退出中", + "Back": "戻る", + "Black": "ブラック", + "Block_user": "ブロックしたユーザー", + "Broadcast_channel_Description": "許可されたユーザーのみが新しいメッセージを書き込めます。他のユーザーは返信することができます", + "Broadcast_Channel": "配信チャンネル", + "Busy": "取り込み中", + "By_proceeding_you_are_agreeing": "続行することにより、私達を承認します", + "Cancel_editing": "編集をキャンセル", + "Cancel_recording": "録音をキャンセル", + "Cancel": "キャンセル", + "changing_avatar": "アバターを変更", + "creating_channel": "チャンネルを作成", + "creating_invite": "招待を作成", + "Channel_Name": "チャンネル名", + "Channels": "チャンネル", + "Chats": "チャット", + "Call_already_ended": "通話は終了しています。", + "Click_to_join": "クリックして参加!", + "Close": "閉じる", + "Close_emoji_selector": "絵文字ピッカーを閉じる", + "Choose": "選択", + "Choose_from_library": "ライブラリから選択", + "Choose_file": "ファイルを選択", + "Code": "コード", + "Collaborative": "コラボ", + "Confirm": "承認", + "Connect": "接続", + "Connected": "接続しました", + "connecting_server": "サーバーに接続中", + "Connecting": "接続中...", + "Contact_us": "お問い合わせ", + "Contact_your_server_admin": "サーバー管理者にお問い合わせください。", + "Continue_with": "次でログイン: ", + "Copied_to_clipboard": "クリップボードにコピー!", + "Copy": "コピー", + "Permalink": "パーマリンク", + "Certificate_password": "パスワード証明書", + "Clear_cache": "ローカルのサーバーキャッシュをクリア", + "Whats_the_password_for_your_certificate": "証明書のパスワードはなんですか?", + "Create_account": "アカウントを作成", + "Create_Channel": "チャンネルを作成", + "Created_snippet": "スニペットを作成", + "Create_a_new_workspace": "新しいワークスペースを作成", + "Create": "作成", + "Dark": "ダーク", + "Dark_level": "ダークレベル", + "Default": "デフォルト", + "Default_browser": "デフォルトのブラウザ", + "Delete_Room_Warning": "ルームを削除すると、ルームに投稿されたすべてのメッセージが削除されます。この操作は取り消せません。", + "delete": "削除", + "Delete": "削除", + "DELETE": "削除", + "deleting_room": "ルームを削除", + "description": "概要", + "Description": "概要", + "Desktop_Options": "デスクトップオプション", + "Directory": "ディレクトリ", + "Direct_Messages": "ダイレクトメッセージ", + "Disable_notifications": "通知を無効化", + "Discussions": "ディスカッション", + "Dont_Have_An_Account": "アカウントがありませんか?", + "Do_you_have_a_certificate": "証明書を持っていますか?", + "Do_you_really_want_to_key_this_room_question_mark": "本当にこのルームを{{key}}しますか?", + "edit": "編集", + "edited": "編集済", + "Edit": "編集", + "Edit_Invite": "編集に招待", + "Email_or_password_field_is_empty": "メールアドレスかパスワードの入力欄が空です", + "Email": "メールアドレス", + "email": "メールアドレス", + "Enable_Auto_Translate": "自動翻訳を有効にする", + "Enable_markdown": "マークダウンを有効にする", + "Enable_notifications": "通知を有効にする", + "Everyone_can_access_this_channel": "全員このチャンネルにアクセスできます", + "Error_uploading": "アップロードエラー", + "Expiration_Days": "期限切れ (日)", + "Favorite": "お気に入り", + "Favorites": "お気に入り", + "Files": "ファイル", + "File_description": "ファイルの説明", + "File_name": "ファイル名", + "Finish_recording": "録音停止", + "Following_thread": "スレッド更新時に通知", + "For_your_security_you_must_enter_your_current_password_to_continue": "セキュリティのため、続けるには現在のパスワードを入力してください。", + "Forgot_password_If_this_email_is_registered": "送信したメールアドレスが登録されていれば、パスワードのリセット方法を送信しました。メールアドレスがすぐに来ない場合はやり直してください。", + "Forgot_password": "パスワードを忘れた", + "Forgot_Password": "パスワードを忘れた", + "Full_table": "クリックしてテーブル全体を見る", + "Generate_New_Link": "新しいリンクを生成", + "Group_by_favorites": "お気に入りをグループ化", + "Group_by_type": "タイプ別にグループ化", + "Hide": "隠す", + "Has_joined_the_channel": "はチャンネルに参加しました", + "Has_joined_the_conversation": "は会話に参加しました", + "Has_left_the_channel": "はチャンネルを退出しました", + "In_App_And_Desktop": "アプリ内とデスクトップ", + "In_App_and_Desktop_Alert_info": "アプリを表示中にはバナーを上部に表示し、デスクトップには通知を送ります。", + "Invisible": "状態を隠す", + "Invite": "招待", + "is_a_valid_RocketChat_instance": "は正しいRocket.Chatのインスタンスです", + "is_not_a_valid_RocketChat_instance": "はRocket.Chatのインスタンスではありません", + "is_typing": "が入力中", + "Invalid_or_expired_invite_token": "招待トークンが無効か、期限が切れています", + "Invalid_server_version": "接続しようとしているサーバーのバージョン({{currentVersion}})はサポートされていません。\n\nサポートする最低バージョンは {{minVersion}} です", + "Invite_Link": "招待リンク", + "Invite_users": "ユーザーを招待", + "Join": "参加", + "Just_invited_people_can_access_this_channel": "招待されたユーザーだけがこのチャンネルに参加できます", + "Language": "言語", + "last_message": "最後のメッセージ", + "Leave_channel": "チャンネルを退出", + "leaving_room": "チャンネルを退出", + "leave": "退出", + "Legal": "法的項目", + "Light": "ライト", + "License": "ライセンス", + "Livechat": "ライブチャット", + "Login": "ログイン", + "Login_error": "証明書が承認されませんでした。再度お試しください。", + "Login_with": "次でログイン: ", + "Logout": "ログアウト", + "Max_number_of_uses": "最大利用数", + "members": "メンバー", + "Members": "メンバー", + "Mentioned_Messages": "メンションされたメッセージ", + "mentioned": "メンション", + "Mentions": "メンション", + "Message_accessibility": "{{user}} から {{time}} にメッセージ: {{message}}", + "Message_actions": "メッセージアクション", + "Message_pinned": "メッセージをピン留め", + "Message_removed": "メッセージを除く", + "message": "メッセージ", + "messages": "メッセージ", + "Message": "メッセージ", + "Messages": "メッセージ", + "Message_Reported": "メッセージを報告しました", + "Microphone_Permission_Message": "Rocket.Chatは音声メッセージを送信するのにマイクのアクセスの許可が必要です。", + "Microphone_Permission": "マイクの許可", + "Mute": "ミュート", + "muted": "ミュートした", + "My_servers": "自分のサーバー", + "N_people_reacted": "{{n}}人がリアクションしました", + "N_users": "{{n}}人", + "name": "アルファベット", + "Name": "名前", + "Never": "ずっと受け取らない", + "New_Message": "メッセージ", + "New_Password": "新しいパスワード", + "New_Server": "新規サーバー", + "Next": "次へ", + "No_files": "ファイルがありません", + "No_limit": "制限なし", + "No_mentioned_messages": "メンションされたメッセージはありません", + "No_pinned_messages": "ピン留めされたメッセージはありません", + "No_results_found": "結果なし", + "No_starred_messages": "お気に入りされたメッセージはありません", + "No_thread_messages": "スレッドのメッセージはありません", + "No_Message": "メッセージなし", + "No_messages_yet": "まだメッセージはありません", + "No_Reactions": "リアクションなし", + "No_Read_Receipts": "未読通知はありません", + "Not_logged": "ログされていません", + "Not_RC_Server": "Rocket.Chatサーバーではありません。\n{{contact}}", + "Nothing": "何もなし", + "Nothing_to_save": "保存するものはありません!", + "Notify_active_in_this_room": "このルームのアクティブなユーザーに通知する", + "Notify_all_in_this_room": "このルームのユーザー全員に通知する", + "Notifications": "通知", + "Notification_Duration": "通知の期間", + "Notification_Preferences": "通知設定", + "Offline": "オフライン", + "Oops": "おっと!", + "Onboarding_title": "Rocket.Chatへようこそ", + "Online": "オンライン", + "Only_authorized_users_can_write_new_messages": "承認されたユーザーだけが新しいメッセージを書き込めます", + "Open_emoji_selector": "絵文字ピッカーを開く", + "Open_Source_Communication": "オープンソースコミュニケーション", + "Password": "パスワード", + "Permalink_copied_to_clipboard": "リンクをクリップボードにコピーしました!", + "Pin": "ピン留め", + "Pinned_Messages": "ピン留めされたメッセージ", + "pinned": "ピン留めされた", + "Pinned": "ピン留めされました", + "Please_enter_your_password": "パスワードを入力してください", + "Preferences": "設定", + "Preferences_saved": "設定が保存されました。", + "Privacy_Policy": " プライバシーポリシー", + "Private_Channel": "プライベートチャンネル", + "Private_Groups": "プライベートグループ", + "Private": "プライベート", + "Processing": "処理中...", + "Profile_saved_successfully": "プロフィールが保存されました!", + "Profile": "プロフィール", + "Public_Channel": "パブリックチャンネル", + "Public": "パブリック", + "Push_Notifications": "プッシュ通知", + "Push_Notifications_Alert_Info": "通知はアプリを開いていない時に送られます。", + "Quote": "引用", + "Reactions_are_disabled": "リアクションは無効化されています", + "Reactions_are_enabled": "リアクションは有効化されています", + "Reactions": "リアクション", + "Read": "読む", + "Read_Only_Channel": "読み取り専用チャンネル", + "Read_Only": "読み取り専用", + "Read_Receipt": "レシートを見る", + "Receive_Group_Mentions": "グループの通知を受け取る", + "Receive_Group_Mentions_Info": "@all と @here の通知を受け取る", + "Register": "登録", + "Repeat_Password": "パスワードを再入力", + "Replied_on": "返信:", + "replies": "返信", + "reply": "返信", + "Reply": "返信", + "Report": "報告", + "Receive_Notification": "通知を受け取る", + "Receive_notifications_from": "{{name}}からの通知を受け取る", + "Resend": "再送信", + "Reset_password": "パスワードをリセット", + "resetting_password": "パスワードを再設定", + "RESET": "リセット", + "Review_app_title": "アプリにご満足いただけておりますか?", + "Review_app_desc": "{{store}}で5段階で評価をお願いします", + "Review_app_yes": "はい!", + "Review_app_no": "いいえ", + "Review_app_later": "あとで", + "Review_app_unable_store": "{{store}}を開けません。", + "Review_this_app": "アプリをレビューする", + "Roles": "ロール", + "Room_actions": "ルームアクション", + "Room_changed_announcement": "{{userBy}}がアナウンスを変更しました: {{announcement}}", + "Room_changed_description": "{{userBy}}が概要を変更しました: {{description}}", + "Room_changed_privacy": "{{userBy}}がルームタイプを変更しました。: {{type}}", + "Room_changed_topic": "{{userBy}}がトピックを変更しました: {{topic}}", + "Room_Files": "ルームのファイル", + "Room_Info_Edit": "ルーム情報を編集", + "Room_Info": "ルーム情報", + "Room_Members": "ルームのメンバー", + "Room_name_changed": "ルーム名が{{userBy}}により変更されました: {{name}}", + "SAVE": "保存", + "Save_Changes": "変更を保存", + "Save": "保存", + "saving_preferences": "設定を保存中", + "saving_profile": "プロフィールを設定中", + "saving_settings": "サーバー設定を保存中", + "saved_to_gallery": "ギャラリーに保存しました", + "Search_Messages": "メッセージを検索", + "Search": "検索", + "Search_by": "検索種別: ", + "Search_global_users": "グローバルユーザーのための検索", + "Search_global_users_description": "有効にした場合、他の会社やサーバーの誰もがあなたを検索可能になります。", + "Seconds": "{{second}} 秒", + "Select_Avatar": "アバターを選択", + "Select_Server": "サーバーを選択", + "Select_Users": "ユーザーを選択", + "Send": "送信", + "Send_audio_message": "録音メッセージを送信", + "Send_crash_report": "クラッシュレポートを送信", + "Send_message": "メッセージを送信", + "Send_to": "送信先...", + "Sent_an_attachment": "添付ファイルを送信しました", + "Server": "サーバー", + "Servers": "サーバー", + "Server_version": "サーバーバージョン: {{version}}", + "Set_username_subtitle": "ユーザー名はメッセージ中であなたにメンションするのに使われます。", + "Settings": "設定", + "Settings_succesfully_changed": "設定が更新されました!", + "Share": "シェア", + "Share_Link": "リンクをシェアする", + "Share_this_app": "このアプリをシェアする", + "Show_more": "Show more..", + "Show_Unread_Counter": "未読件数を表示する", + "Show_Unread_Counter_Info": "未読件数はリスト上で、チャンネルの右側にバッジで表示されます。", + "Sign_in_your_server": "サーバーに接続", + "Sign_Up": "登録", + "Some_field_is_invalid_or_empty": "不正、または空の入力欄があります。", + "Sorting_by": "{{key}}順", + "Sound": "音", + "Star_room": "お気に入りルーム", + "Star": "お気に入り", + "Starred_Messages": "お気に入りされたメッセージ", + "starred": "お気に入りされています", + "Starred": "お気に入りされています", + "Start_of_conversation": "会話を開始する", + "Started_discussion": "ディスカッションを開始する:", + "Started_call": "{{userBy}}と通話する", + "Submit": "送信", + "Table": "表", + "Take_a_photo": "写真を撮影", + "Take_a_video": "動画を撮影", + "tap_to_change_status": "タップしてステータスを変更", + "Tap_to_view_servers_list": "タップしてサーバーリストを見る", + "Terms_of_Service": " 利用規約 ", + "Theme": "テーマ", + "There_was_an_error_while_action": "{{action}}の最中にエラーが発生しました!", + "This_room_is_blocked": "このルームはブロックされています。", + "This_room_is_read_only": "このルームは読み取り専用です。", + "Thread": "スレッド", + "Threads": "スレッド", + "Timezone": "タイムゾーン", + "To": "To", + "topic": "トピック", + "Topic": "トピック", + "Translate": "翻訳", + "Try_again": "再度お試しください。", + "Two_Factor_Authentication": "2段階認証", + "Type_the_channel_name_here": "ここにチャンネル名を入力", + "unarchive": "アーカイブ解除", + "UNARCHIVE": "アーカイブ解除", + "Unblock_user": "ブロックを解除", + "Unfavorite": "お気に入り解除", + "Unfollowed_thread": "スレッド更新時に通知しない", + "Unmute": "ミュート解除", + "unmuted": "ミュート解除しました", + "Unpin": "ピン留めを解除", + "unread_messages": "未読", + "Unread": "未読", + "Unread_on_top": "未読メッセージを上に表示", + "Unstar": "お気に入り解除", + "Updating": "更新中...", + "Uploading": "アップロード中", + "Upload_file_question_mark": "ファイルをアップロードしますか?", + "Users": "ユーザー", + "User_added_by": "{{userBy}} が {{userAdded}} を追加しました", + "User_Info": "ユーザー情報", + "User_has_been_key": "ユーザーは{{ key }}", + "User_is_no_longer_role_by_": "{{userBy}} は {{user}} のロール {{role}} を削除しました。", + "User_muted_by": "{{userBy}} は {{userMuted}} をミュートしました。", + "User_removed_by": "{{userBy}} は {{userRemoved}} を退出させました。", + "User_sent_an_attachment": "{{user}}は添付ファイルを送信しました", + "User_unmuted_by": "{{userUnmuted}} は {{userBy}} にミュート解除されました。", + "User_was_set_role_by_": "{{user}} was set {{role}} by {{userBy}}", + "Username_is_empty": "ユーザー名が空です。", + "Username": "ユーザー名", + "Username_or_email": "ユーザー名かメールアドレス", + "Validating": "検証中", + "Video_call": "ビデオ通話", + "View_Original": "オリジナルを見る", + "Voice_call": "音声通話", + "Websocket_disabled": "Websocketはこのサーバーでは無効化されています。\n{{contact}}", + "Welcome": "ようこそ", + "Whats_your_2fa": "2段階認証のコードを入力してください", + "Without_Servers": "サーバーを除く", + "Write_External_Permission_Message": "Rocket.Chatは画像を保存するためにギャラリーへのアクセスを求めています。", + "Write_External_Permission": "ギャラリーへのアクセス許可", + "Yes_action_it": "はい、{{action}}します!", + "Yesterday": "昨日", + "You_are_in_preview_mode": "プレビューモードです。", + "You_are_offline": "オフラインです。", + "You_can_search_using_RegExp_eg": "正規表現を利用できます。 例: `/^text$/i`", + "You_colon": "あなた: ", + "you_were_mentioned": "あなたがメンションしました", + "you": "あなた", + "You": "あなた", + "Logged_out_by_server": "サーバーからログアウトします。もう一度ログインしてください。", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "シェアするためには1つ以上のサーバーにアクセスする必要があります。", + "Your_certificate": "あなたの認証情報", + "Your_invite_link_will_expire_after__usesLeft__uses": "招待リンクはあと{{usesLeft}}回で使用できなくなります。", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "招待リンクは{{date}}までか、あと{{usesLeft}}回で使用できなくなります。", + "Your_invite_link_will_expire_on__date__": "招待リンクは{{date}}に使用できなくなります。", + "Your_invite_link_will_never_expire": "招待リンクはずっと有効です。", + "Version_no": "バージョン: {{version}}", + "You_will_not_be_able_to_recover_this_message": "このメッセージは復元できません!", + "Change_Language": "言語を変更", + "Crash_report_disclaimer": "クラッシュレポートには問題を特定し、修正するために必要な情報のみが含まれます。チャット内のコンテンツは送信されません。", + "Type_message": "メッセージを入力", + "Room_search": "ルームを検索", + "Room_selection": "ルームを選択 1...9", + "Next_room": "次のルーム", + "Previous_room": "前のルーム", + "New_room": "新しいルーム", + "Upload_room": "ルームにアップロード", + "Search_messages": "メッセージを検索", + "Scroll_messages": "メッセージをスクロール", + "Reply_latest": "最新のメッセージにリプライ", + "Server_selection": "サーバー選択", + "Server_selection_numbers": "サーバー選択 1...9", + "Add_server": "サーバーを追加", + "New_line": "新しい行", + "You_will_be_logged_out_of_this_application": "アプリからログアウトします。", + "Clear": "クリア", + "This_will_clear_all_your_offline_data": "オフラインデータをすべて削除します。" +} \ No newline at end of file diff --git a/app/i18n/locales/nl.js b/app/i18n/locales/nl.js deleted file mode 100644 index 40a366b47c7..00000000000 --- a/app/i18n/locales/nl.js +++ /dev/null @@ -1,483 +0,0 @@ -export default { - '1_person_reacted': '1 persoon heeft gereageerd', - '1_user': '1 gebruiker', - 'error-action-not-allowed': '{{actie}} is niet toegestaan', - 'error-application-not-found': 'Applicatie niet gevonden', - 'error-archived-duplicate-name': 'Er is een gearchiveerd kanaal met de naam {{room_name}}', - 'error-avatar-invalid-url': 'Foutieve avatar URL: {{url}}', - 'error-avatar-url-handling': 'Fout tijdens verwerken avatar instellingen vanaf een URL({{url}}) for {{username}}', - 'error-cant-invite-for-direct-room': 'Kan gebruikers niet in directe kamers toevoegen', - 'error-could-not-change-email': 'Kon email niet veranderen', - 'error-could-not-change-name': 'Kon naam niet veranderen', - 'error-could-not-change-username': 'Kon gebruikersnaam niet veranderen', - 'error-delete-protected-role': 'Beveiligde rollen kunnen niet verwijderd worden.', - 'error-department-not-found': 'Afdeling niet gevonden', - 'error-direct-message-file-upload-not-allowed': 'Delen van bestanden niet toegestaan in directe berichten', - 'error-duplicate-channel-name': 'Een kanaal met de naam {{channel_name}} bestaat', - 'error-email-domain-blacklisted': 'Het email domein is blacklisted', - 'error-email-send-failed': 'Fout tijdens verzenden van email: {{message}}', - 'error-save-image': 'Fout tijdens opslaan afbeelding', - 'error-field-unavailable': '{{field}} is alr in gebruik :(', - 'error-file-too-large': 'Bestand is te groot', - 'error-importer-not-defined': 'De importer is niet goed gedefinieerd, het mist de Import class.', - 'error-input-is-not-a-valid-field': '{{input}} is geen geldig {{field}}', - 'error-invalid-actionlink': 'Ongeldige action link', - 'error-invalid-arguments': 'Ongeldige argumenten', - 'error-invalid-asset': 'Ongeldig asset', - 'error-invalid-channel': 'Ongeldig channel.', - 'error-invalid-channel-start-with-chars': 'Ongeldig channel. Begin met @ of #', - 'error-invalid-custom-field': 'Ongeldig custom veld', - 'error-invalid-custom-field-name': 'Ongeldige custom veld naam. Gebruik alleen letters, cijfers, - of _.', - 'error-invalid-date': 'Ongeldige datum opgegeven.', - 'error-invalid-description': 'Ongeldige beschrijving', - 'error-invalid-domain': 'Ongeldig domein', - 'error-invalid-email': 'Ongeldige email {{emai}}', - 'error-invalid-email-address': 'Ongeldig emailadres', - 'error-invalid-file-height': 'Ongeldige file height', - 'error-invalid-file-type': 'Ongeldig bestandstype', - 'error-invalid-file-width': 'Ongeldige file width', - 'error-invalid-from-address': 'Een ongeldig FROM adres is ingevuld.', - 'error-invalid-integration': 'Ongeldige integration', - 'error-invalid-message': 'Ongeldige message', - 'error-invalid-method': 'Ongeldige method', - 'error-invalid-name': 'Ongeldige naam', - 'error-invalid-password': 'Ongeldig password', - 'error-invalid-redirectUri': 'Ongeldige redirectUri', - 'error-invalid-role': 'Ongeldige role', - 'error-invalid-room': 'Ongeldige kamer', - 'error-invalid-room-name': '{{room_name}} is geen geldige kamernaam', - 'error-invalid-room-type': '{{type}} is geen geldig kamertype.', - 'error-invalid-settings': 'Ongeldige instellingen ingevuld', - 'error-invalid-subscription': 'Ongeldige subscription', - 'error-invalid-token': 'Ongeldig token', - 'error-invalid-triggerWords': 'Ongeldige triggerWords', - 'error-invalid-urls': 'Ongeldige URLs', - 'error-invalid-user': 'Ongeldige user', - 'error-invalid-username': 'Ongeldige username', - 'error-invalid-webhook-response': 'De webhook URL antwoorde met een andere status dan 200', - 'error-message-deleting-blocked': 'Berichten verwijderen is geblokkeerd.', - 'error-message-editing-blocked': 'Berichten aanpassen is geblokkeerd.', - 'error-message-size-exceeded': 'Berichtgrootte is meer dan Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'De [unsubscribe] link moet gegeven worden.', - 'error-no-tokens-for-this-user': 'Er zijn geen tokens voor deze user', - 'error-not-allowed': 'Niet toegestaan', - 'error-not-authorized': 'Niet gemachtigd', - 'error-push-disabled': 'Push staat uit', - 'error-remove-last-owner': 'Dit is de laatste eigenaar. Kies een nieuwe eigenaar voor je deze verwijderd.', - 'error-role-in-use': 'Kan rol niet verwijderen omdat hij in gebruik is', - 'error-role-name-required': 'Rol naam verplicht', - 'error-the-field-is-required': 'Het veld {{field}} is verplicht.', - 'error-too-many-requests': 'Error, te veel requests. Doe alsjeblieft rustig aan. Je moet {{seconds}} wachten voor je het opnieuw kan proberen.', - 'error-user-is-not-activated': 'Gebruiker is niet geactiveerd', - 'error-user-has-no-roles': 'Gebruiker heeft geen rollen', - 'error-user-limit-exceeded': 'De hoeveelheid gebruikers die je probeert uit te nodigen voor #channel_name is meer dan het limiet wat de admin gekozen heeft', - 'error-user-not-in-room': 'Gebruiker is niet in deze kamer', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'Registratie van gebruikers staat uit', - 'error-user-registration-secret': 'Registratie van gebruikers kan alleen via Secret URL', - 'error-you-are-last-owner': 'Je bent de laatste eigenaar. Kies eerst een nieuwe voor je de kamer verlaat.', - Actions: 'Acties', - activity: 'activiteit', - Activity: 'Activiteit', - Add_Reaction: 'Voeg reactie toe', - Add_Server: 'Voeg server toe', - Add_users: 'Voeg gebruikers toe', - Admin_Panel: 'Admin Paneel', - Alert: 'Alert', - alert: 'alert', - alerts: 'alerts', - All_users_in_the_channel_can_write_new_messages: 'Alle gebruikers in het kanaal kunnen nieuwe berichten sturen', - All: 'Alle', - All_Messages: 'Alle Berichten', - Allow_Reactions: 'Sta reacties toe', - Alphabetical: 'Alfabetisch', - and_more: 'en meer', - and: 'en', - announcement: 'aankondiging', - Announcement: 'Aankondiging', - Apply_Your_Certificate: 'Gebruik je certificaat', - ARCHIVE: 'ARCHIVEER', - archive: 'archiveer', - are_typing: 'zijn aan het typen', - Are_you_sure_question_mark: 'Weet je het zeker?', - Are_you_sure_you_want_to_leave_the_room: 'Weet je zeker dat je de kamer {{room}} wil verlaten?', - Audio: 'Audio', - Authenticating: 'Authenticating', - Automatic: 'Automatisch', - Auto_Translate: 'Auto-Vertalen', - Avatar_changed_successfully: 'Avatar succesvol aangepast!', - Avatar_Url: 'Avatar URL', - Away: 'Weg', - Back: 'Terug', - Black: 'Zwart', - Block_user: 'Blokkeer gebruiker', - Broadcast_channel_Description: 'Alleen toegestane gebruikers kunnen nieuwe berichten sturen, maar iedereen kan reageren', - Broadcast_Channel: 'Broadcast Kanaal', - Busy: 'Bezig', - By_proceeding_you_are_agreeing: 'Door verder te gaan ga je akkoord met onze', - Cancel_editing: 'Stop bewerken', - Cancel_recording: 'Stop opnemen', - Cancel: 'Stop', - changing_avatar: 'avatar aan het veranderen', - creating_channel: 'kanaal aan het maken', - creating_invite: 'uitnodiging maken', - Channel_Name: 'Kanaal Name', - Channels: 'Kanalen', - Chats: 'Chats', - Call_already_ended: 'Gesprek al beeïndigd!', - Click_to_join: 'Klik om lid te worden!', - Close: 'Sluiten', - Close_emoji_selector: 'Sluit emoji selector', - Choose: 'Kies', - Choose_from_library: 'Kies uit bibliotheek', - Choose_file: 'Kies bestand', - Code: 'Code', - Collaborative: 'Samenwerkend', - Confirm: 'Bevestig', - Connect: 'Verbind', - Connected: 'Verbonden', - connecting_server: 'Verbonden met een server', - Connecting: 'Aan het verbinden...', - Contact_us: 'Contact opnemen', - Contact_your_server_admin: 'Neem contact op met je server admin.', - Continue_with: 'Ga verder met', - Copied_to_clipboard: 'Gekopïeerd naar klembord!', - Copy: 'Kopïeer', - Permalink: 'Permalink', - Certificate_password: 'Certificate Password', - Whats_the_password_for_your_certificate: 'Wat is het wachtwoord voor je certificate?', - Create_account: 'Maak een account', - Create_Channel: 'Maak een kanaal', - Created_snippet: 'snippet gemaakt', - Create_a_new_workspace: 'Een nieuwe workspace maken', - Create: 'Maken', - Dark: 'Donker', - Dark_level: 'Donker niveau', - Default: 'Standaard', - Delete_Room_Warning: 'Een kamer verwijderen verwijdert alle berichten erin. Dit kan niet ongedaan gemaakt worden.', - delete: 'delete', - Delete: 'Delete', - DELETE: 'DELETE', - deleting_room: 'kamer legen', - description: 'beschrijving', - Description: 'Beschrijving', - Desktop_Options: 'Desktop Opties', - Directory: 'Map', - Direct_Messages: 'Directe berichten', - Disable_notifications: 'Zet notificaties uit', - Discussions: 'Discussies', - Dont_Have_An_Account: 'Heb je geen account?', - Do_you_have_a_certificate: 'Heb je een certificate?', - Do_you_really_want_to_key_this_room_question_mark: 'Wil je deze kamer echt {{key}}?', - edit: 'bewerk', - edited: 'bewerkt', - Edit: 'Bewerk', - Edit_Invite: 'Bewerk uitnodiging', - Email_or_password_field_is_empty: 'Email of wachtwoord veld is leeg', - Email: 'E-mail', - email: 'e-mail', - Enable_Auto_Translate: 'Zet Auto-Translate aan', - Enable_notifications: 'Zet notifications aan', - Everyone_can_access_this_channel: 'Iedereen kan bij dit kanaal', - Error_uploading: 'Error tijdens uploaden', - Expiration_Days: 'Vervalt in (Dagen)', - Favorite: 'Favoriet', - Favorites: 'Favorieten', - Files: 'Bestanden', - File_description: 'Bestandsbeschrijving', - File_name: 'Bestandsnaam', - Finish_recording: 'Beëindig opname', - Following_thread: 'Volg thread', - For_your_security_you_must_enter_your_current_password_to_continue: 'Voor je veiligheid moet je je wachtwoord invullen om door te gaan', - Forgot_password_If_this_email_is_registered: 'Als dit email adres bij ons bekend is, sturen we je instructies op om je wachtwoord te resetten. Als je geen email krijgt, probeer het dan nogmaals.', - Forgot_password: 'Wachtwoord vergeten', - Forgot_Password: 'Wachtwoord Vergeten', - Full_table: 'Klik om de hele tabel te zien', - Generate_New_Link: 'Genereer Nieuwe Link', - Group_by_favorites: 'Sorteer op favorieten', - Group_by_type: 'Sorteer op type', - Hide: 'Verberg', - Has_joined_the_channel: 'is bij het kanaal gekomen', - Has_joined_the_conversation: 'neemt deel aan het gesprek', - Has_left_the_channel: 'heeft het kanaal verlaten', - In_App_And_Desktop: 'In-app en Desktop', - In_App_and_Desktop_Alert_info: 'Laat een banner bovenaan het scherm zien als de app open is en geeft een notificatie op de desktop', - Invisible: 'Onzichtbaar', - Invite: 'Nodig uit', - is_a_valid_RocketChat_instance: 'is een geldige Rocket.Chat instantie', - is_not_a_valid_RocketChat_instance: 'is geen geldige Rocket.Chat instantie', - is_typing: 'is aan het typen', - Invalid_or_expired_invite_token: 'Ongeldig of verlopen uitnodigingstoken', - Invalid_server_version: 'De server die je probeert te bereiken gebruikt een versie die niet meer door de app ondersteunt wordt: {{currentVersion}}.\n\nMinimale versienummer {{minVersion}}', - Invite_Link: 'Uitnodigingslink', - Invite_users: 'Nodig gebruikers uit', - Join: 'Word lid', - Just_invited_people_can_access_this_channel: 'Alleen genodigden kunnen bij dit kanaal', - Language: 'Taal', - last_message: 'laatste bericht', - Leave_channel: 'Verlaat kanaal', - leaving_room: 'ruimte verlaten', - leave: 'verlaten', - Legal: 'Legaal', - Light: 'Light', - License: 'License', - Livechat: 'Livechat', - Login: 'Login', - Login_error: 'Je inloggegevens zijn fout! Probeer het opnieuw.', - Login_with: 'Login met', - Logout: 'Logout', - Max_number_of_uses: 'Maximaal aantal gebruiksmogelijkheden ', - members: 'leden', - Members: 'Leden', - Mentioned_Messages: 'Vermelde Berichten', - mentioned: 'vermeld', - Mentions: 'Vermeldingen', - Message_accessibility: 'Bericht van {{user}} om {{time}}: {{message}}', - Message_actions: 'Berichtacties', - Message_pinned: 'Bericht vastgezet', - Message_removed: 'Bericht verwijderd', - message: 'bericht', - messages: 'berichten', - Messages: 'Berichten', - Message_Reported: 'Bericht gerapporteerd', - Microphone_Permission_Message: 'Rocket.Chat heeft toegang tot je microfoon nodig voor geluidsberichten.', - Microphone_Permission: 'Microfoon toestemming', - Mute: 'Dempen', - muted: 'gedempt', - My_servers: 'Mijn servers', - N_people_reacted: '{{n}} mensen reageerden', - N_users: '{{n}} gebruikers', - name: 'naam', - Name: 'Naam', - Never: 'Nooit', - New_Message: 'Nieuw Bericht', - New_Password: 'Nieuw Wachtwoord', - New_Server: 'Nieuwe Server', - Next: 'Volgende', - No_files: 'Geen bestanden', - No_limit: 'Geen limiet', - No_mentioned_messages: 'Geen vermelde berichten', - No_pinned_messages: 'Geen vastgezette berichten', - No_results_found: 'Geen resultaten gevonden', - No_starred_messages: 'Geen berichten met ster gemarkeerd', - No_thread_messages: 'Geen thread berichten', - No_Message: 'Geen bericht', - No_messages_yet: 'Nog geen berichten', - No_Reactions: 'Geen reacties', - No_Read_Receipts: 'Geen leesbevestiging', - Not_logged: 'Niet gelogged', - Not_RC_Server: 'Dit is geen Rocket.Chat server.\n{{contact}}', - Nothing: 'Niets', - Nothing_to_save: 'Niets om op te slaan!', - Notify_active_in_this_room: 'Bericht de actieve gebruikers in deze kamer', - Notify_all_in_this_room: 'Bericht iedereen in deze kamer', - Notifications: 'Notificaties', - Notification_Duration: 'Notificatie Duur', - Notification_Preferences: 'Notificatievoorkeuren', - Offline: 'Offline', - Oops: 'Oeps!', - Onboarding_title: 'Welkom bij Rocket.Chat', - Online: 'Online', - Only_authorized_users_can_write_new_messages: 'Alleen gebruikers met toestemming mogen nieuwe berichten maken', - Open_emoji_selector: 'Open de emoji selector', - Open_Source_Communication: 'Open de Source Communication', - Password: 'Wachtwoord', - Permalink_copied_to_clipboard: 'Permalink gekopiëerd naar klembord!', - Pin: 'Vastzetten', - Pinned_Messages: 'Vastgezette berichten', - pinned: 'vastgezet', - Pinned: 'Vastgezet', - Please_enter_your_password: 'Vul je wachtwoord in', - Preferences: 'Voorkeuren', - Preferences_saved: 'Voorkeuren opgeslagen!', - Privacy_Policy: ' Privacy Policy', - Private_Channel: 'Prive Kanaal', - Private_Groups: 'Prive Groepen', - Private: 'Prive', - Processing: 'Verwerken...', - Profile_saved_successfully: 'Profiel succesvol opgeslagen!', - Profile: 'Profiel', - Public_Channel: 'Publiek kanaal', - Public: 'Publiek', - Push_Notifications: 'Pushnotificaties', - Push_Notifications_Alert_Info: 'Deze notificaties krijg je als de app niet geopend is', - Quote: 'Quote', - Reactions_are_disabled: 'Reacties zijn uitgeschakeld', - Reactions_are_enabled: 'Reacties zijn ingeschakeld', - Reactions: 'Reacties', - Read: 'Lezen', - Read_Only_Channel: 'Alleen-lezen Kanaal', - Read_Only: 'Alleen Lezen', - Read_Receipt: 'Leesbevestiging', - Receive_Group_Mentions: 'Ontvang Groepsvermeldingen', - Receive_Group_Mentions_Info: 'Ontvang @all en @here vermeldingen', - Register: 'Aanmelden', - Repeat_Password: 'Wachtwoord herhalen', - Replied_on: 'Gereageerd op:', - replies: 'reacties', - reply: 'reactie', - Reply: 'Reacties', - Report: 'Rapporteren', - Receive_Notification: 'Ontvang notificatie', - Receive_notifications_from: 'Ontvang notificaties van {{name}}', - Resend: 'Opnieuw verzenden', - Reset_password: 'Wachtwoord reset', - resetting_password: 'wachtwoord aan het resetten', - RESET: 'RESET', - Review_app_title: 'Vind je dit een TOP app?', - Review_app_desc: 'Geef ons 5 sterren op {{store}}', - Review_app_yes: 'Doe ik!', - Review_app_no: 'Nee', - Review_app_later: 'Misschien later', - Review_app_unable_store: 'Kon {{store}} niet openen', - Review_this_app: 'Review deze app', - Roles: 'Rollen', - Room_actions: 'Kamer acties', - Room_changed_announcement: 'Kamer announcement veranderd naar: {{announcement}} door {{userBy}}', - Room_changed_description: 'Kamer beschrijving veranderd naar: {{description}} door {{userBy}}', - Room_changed_privacy: 'Kamer type veranderd naar: {{type}} door {{userBy}}', - Room_changed_topic: 'Kamer onderwerp veranderd naar: {{topic}} door {{userBy}}', - Room_Files: 'Kamer Bestanden', - Room_Info_Edit: 'Kamer Info Aanpassen', - Room_Info: 'Kamer Info', - Room_Members: 'Kamer Leden', - Room_name_changed: 'Kamer naam veranderd naar: {{name}} door {{userBy}}', - SAVE: 'OPSLAAN', - Save_Changes: 'Sla wijzigingen op', - Save: 'Opslaan', - saving_preferences: 'voorkeuren opslaan', - saving_profile: 'profiel opslaan', - saving_settings: 'instellingen opslaan', - saved_to_gallery: 'Aan galerij toegevoegd', - Search_Messages: 'Zoek Berichten', - Search: 'Zoek', - Search_by: 'Zoek op', - Search_global_users: 'Zoek voor algemene gebruikers', - Search_global_users_description: 'Als je dit aan zet, kan je gebruikers van andere bedrijven en servers zoeken.', - Seconds: '{{second}} seconden', - Select_Avatar: 'Kies Avatar', - Select_Server: 'Kies Server', - Select_Users: 'Kies Gebruikers', - Send: 'Verstuur', - Send_audio_message: 'Verstuur geluidsbericht', - Send_crash_report: 'Verstuur crash report', - Send_message: 'Verstuur bericht', - Send_to: 'Verstuur naar...', - Sent_an_attachment: 'Verstuur een bijlage', - Server: 'Server', - Servers: 'Servers', - Server_version: 'Server versie: {{version}}', - Set_username_subtitle: 'De gebruikersnaam wordt gebruikt om anderen jou te vermelden in berichten', - Settings: 'Instellingen', - Settings_succesfully_changed: 'Instellingen succesvol veranderd!', - Share: 'Delen', - Share_Link: 'Deel Link', - Share_this_app: 'Deel deze app', - Show_Unread_Counter: 'Laat Ongelezen Teller Zien', - Show_Unread_Counter_Info: 'De Ongelezen Tller is een badge aan de rechterkant van het kanaal in de lijst', - Sign_in_your_server: 'Log in bij je server', - Sign_Up: 'Inschrijven', - Some_field_is_invalid_or_empty: 'Een veld is ongeldig of leeg', - Sorting_by: 'Sorteren op {{key}}', - Sound: 'Geluid', - Star_room: 'Sterrenkamer', - Star: 'Ster', - Starred_Messages: 'Berichten met ster gemarkeerd', - starred: 'met ster gemarkeerd', - Starred: 'Met ster gemarkeerd', - Start_of_conversation: 'Begin van een gesprek', - Started_discussion: 'Begin van een discussie:', - Started_call: 'Gesprek gestart door {{userBy}}', - Submit: 'Verstuur', - Table: 'Tabel', - Take_a_photo: 'Neem een foto', - Take_a_video: 'Neem een video', - tap_to_change_status: 'tik om je status te veranderen', - Tap_to_view_servers_list: 'Tik om een server lijst te weergeven', - Terms_of_Service: ' Servicevoorwaarden ', - Theme: 'Thema', - There_was_an_error_while_action: 'Er was eer fout tijdens {{action}}!', - This_room_is_blocked: 'Deze kamer is geblokkeerd', - This_room_is_read_only: 'Deze kamer is alleen-lezen', - Thread: 'Thread', - Threads: 'Threads', - Timezone: 'Tijdzone', - To: 'Naar', - topic: 'onderwerp', - Topic: 'Onderwerp', - Translate: 'Vertalen', - Try_again: 'Probeer opnieuw', - Two_Factor_Authentication: 'Tweee-factor Authenticatie', - Type_the_channel_name_here: 'Typ hier de kanaalnaam', - unarchive: 'dearchiveren', - UNARCHIVE: 'DEARCHIVEREN', - Unblock_user: 'Gebruiker deblokkeren', - Unfavorite: 'Uit favorieten halen', - Unfollowed_thread: 'Thread ontvolgd', - Unmute: 'Dempen opheffen', - unmuted: 'ongedempt', - Unpin: 'Losmaken', - unread_messages: 'ongelezen', - Unread: 'Ongelezen', - Unread_on_top: 'Ongelezen bovenaan', - Unstar: 'Ster verwijderen', - Updating: 'Updaten...', - Uploading: 'Uploaden', - Upload_file_question_mark: 'Bestand uploaden?', - Users: 'Gebruikers', - User_added_by: 'Gebruiker {{userAdded}} toegevoegd door {{userBy}}', - User_Info: 'Gebruiker Info', - User_has_been_key: 'Gebruiker is {{key}}', - User_is_no_longer_role_by_: '{{user}} is geen {{role}} meer door {{userBy}}', - User_muted_by: 'Gebruiker {{userMuted}} gedempt door {{userBy}}', - User_removed_by: 'Gebruiker {{userRemoved}} verwijderd door {{userBy}}', - User_sent_an_attachment: '{{user}} stuurde een bijlage', - User_unmuted_by: 'Dempen opgeheven voor {{userUnmuted}} door {{userBy}}', - User_was_set_role_by_: '{{user}} is nu {{role}} door {{userBy}}', - Username_is_empty: 'Gebruikersnaam is leeg', - Username: 'Gebruikersnaam', - Username_or_email: 'Gebruikersnaam of email', - Validating: 'Aan het valideren', - Video_call: 'Videogesprek', - View_Original: 'Bekijk origineel', - Voice_call: 'Audiogesprek', - Websocket_disabled: 'Websocket staat uit voor deze server.\n{{contact}}', - Welcome: 'Welkom', - Whats_your_2fa: 'Wat is je 2FA code?', - Without_Servers: 'Zonder Servers', - Write_External_Permission_Message: 'Rocket.Chat moet bij je galerij kunnen om afbeeldingen op te slaan.', - Write_External_Permission: 'Galerij Toestemming', - Yes_action_it: 'Ja, {{action}} het!', - Yesterday: 'Gisteren', - You_are_in_preview_mode: 'Je bent in preview mode', - You_are_offline: 'Je bent offline', - You_can_search_using_RegExp_eg: 'Je kan RegExp. gebruiken, bijv. `/^text$/i`', - You_colon: 'Jij: ', - you_were_mentioned: 'je bent vermeld', - you: 'jij', - You: 'Jij', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Je moet minimaal toegang hebben tot 1 Rocket.Chat server om iets te delen.', - Your_certificate: 'Jouw Certificaat', - Your_invite_link_will_expire_after__usesLeft__uses: 'Je uitnodigingslink wordt ongeldig over {{usesLeft}} keer.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Je uitnodigingslink wordt ongeldig op {{date}} of na{{usesLeft}} keer.', - Your_invite_link_will_expire_on__date__: 'Je uitnodigingslink wordt ongeldig op {{date}}.', - Your_invite_link_will_never_expire: 'Je uitnodigingslink wordt nooit ongeldig.', - Version_no: 'Versie: {{version}}', - You_will_not_be_able_to_recover_this_message: 'Je kan dit bericht niet meer terugkrijgen!', - Change_Language: 'Verander taal', - Crash_report_disclaimer: 'We kijken nooit naar de content van je chats. Het crashrapport bevat alleen relevante informatie voor ons om problemen te isoleren en op te lossen.', - Type_message: 'Type bericht', - Room_search: 'Kamers zoeken', - Room_selection: 'Kamerselectie 1...9', - Next_room: 'Volgende kamer', - Previous_room: 'Vorige kamer', - New_room: 'Nieuwe Kamer', - Upload_room: 'Upload naar kamer', - Search_messages: 'Doorzoek messages', - Scroll_messages: 'Scroll door messages', - Reply_latest: 'Beantwoord de laatste', - Server_selection: 'Server selectie', - Server_selection_numbers: 'Server selectie 1...9', - Add_server: 'Voeg Server Toe', - New_line: 'Nieuwe Regel' -}; diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json new file mode 100644 index 00000000000..903da5e1f90 --- /dev/null +++ b/app/i18n/locales/nl.json @@ -0,0 +1,483 @@ +{ + "1_person_reacted": "1 persoon heeft gereageerd", + "1_user": "1 gebruiker", + "error-action-not-allowed": "{{actie}} is niet toegestaan", + "error-application-not-found": "Applicatie niet gevonden", + "error-archived-duplicate-name": "Er is een gearchiveerd kanaal met de naam {{room_name}}", + "error-avatar-invalid-url": "Foutieve avatar URL: {{url}}", + "error-avatar-url-handling": "Fout tijdens verwerken avatar instellingen vanaf een URL({{url}}) for {{username}}", + "error-cant-invite-for-direct-room": "Kan gebruikers niet in directe kamers toevoegen", + "error-could-not-change-email": "Kon email niet veranderen", + "error-could-not-change-name": "Kon naam niet veranderen", + "error-could-not-change-username": "Kon gebruikersnaam niet veranderen", + "error-delete-protected-role": "Beveiligde rollen kunnen niet verwijderd worden.", + "error-department-not-found": "Afdeling niet gevonden", + "error-direct-message-file-upload-not-allowed": "Delen van bestanden niet toegestaan in directe berichten", + "error-duplicate-channel-name": "Een kanaal met de naam {{channel_name}} bestaat", + "error-email-domain-blacklisted": "Het email domein is blacklisted", + "error-email-send-failed": "Fout tijdens verzenden van email: {{message}}", + "error-save-image": "Fout tijdens opslaan afbeelding", + "error-field-unavailable": "{{field}} is alr in gebruik :(", + "error-file-too-large": "Bestand is te groot", + "error-importer-not-defined": "De importer is niet goed gedefinieerd, het mist de Import class.", + "error-input-is-not-a-valid-field": "{{input}} is geen geldig {{field}}", + "error-invalid-actionlink": "Ongeldige action link", + "error-invalid-arguments": "Ongeldige argumenten", + "error-invalid-asset": "Ongeldig asset", + "error-invalid-channel": "Ongeldig channel.", + "error-invalid-channel-start-with-chars": "Ongeldig channel. Begin met @ of #", + "error-invalid-custom-field": "Ongeldig custom veld", + "error-invalid-custom-field-name": "Ongeldige custom veld naam. Gebruik alleen letters, cijfers, - of _.", + "error-invalid-date": "Ongeldige datum opgegeven.", + "error-invalid-description": "Ongeldige beschrijving", + "error-invalid-domain": "Ongeldig domein", + "error-invalid-email": "Ongeldige email {{emai}}", + "error-invalid-email-address": "Ongeldig emailadres", + "error-invalid-file-height": "Ongeldige file height", + "error-invalid-file-type": "Ongeldig bestandstype", + "error-invalid-file-width": "Ongeldige file width", + "error-invalid-from-address": "Een ongeldig FROM adres is ingevuld.", + "error-invalid-integration": "Ongeldige integration", + "error-invalid-message": "Ongeldige message", + "error-invalid-method": "Ongeldige method", + "error-invalid-name": "Ongeldige naam", + "error-invalid-password": "Ongeldig password", + "error-invalid-redirectUri": "Ongeldige redirectUri", + "error-invalid-role": "Ongeldige role", + "error-invalid-room": "Ongeldige kamer", + "error-invalid-room-name": "{{room_name}} is geen geldige kamernaam", + "error-invalid-room-type": "{{type}} is geen geldig kamertype.", + "error-invalid-settings": "Ongeldige instellingen ingevuld", + "error-invalid-subscription": "Ongeldige subscription", + "error-invalid-token": "Ongeldig token", + "error-invalid-triggerWords": "Ongeldige triggerWords", + "error-invalid-urls": "Ongeldige URLs", + "error-invalid-user": "Ongeldige user", + "error-invalid-username": "Ongeldige username", + "error-invalid-webhook-response": "De webhook URL antwoorde met een andere status dan 200", + "error-message-deleting-blocked": "Berichten verwijderen is geblokkeerd.", + "error-message-editing-blocked": "Berichten aanpassen is geblokkeerd.", + "error-message-size-exceeded": "Berichtgrootte is meer dan Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "De [unsubscribe] link moet gegeven worden.", + "error-no-tokens-for-this-user": "Er zijn geen tokens voor deze user", + "error-not-allowed": "Niet toegestaan", + "error-not-authorized": "Niet gemachtigd", + "error-push-disabled": "Push staat uit", + "error-remove-last-owner": "Dit is de laatste eigenaar. Kies een nieuwe eigenaar voor je deze verwijderd.", + "error-role-in-use": "Kan rol niet verwijderen omdat hij in gebruik is", + "error-role-name-required": "Rol naam verplicht", + "error-the-field-is-required": "Het veld {{field}} is verplicht.", + "error-too-many-requests": "Error, te veel requests. Doe alsjeblieft rustig aan. Je moet {{seconds}} wachten voor je het opnieuw kan proberen.", + "error-user-is-not-activated": "Gebruiker is niet geactiveerd", + "error-user-has-no-roles": "Gebruiker heeft geen rollen", + "error-user-limit-exceeded": "De hoeveelheid gebruikers die je probeert uit te nodigen voor #channel_name is meer dan het limiet wat de admin gekozen heeft", + "error-user-not-in-room": "Gebruiker is niet in deze kamer", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "Registratie van gebruikers staat uit", + "error-user-registration-secret": "Registratie van gebruikers kan alleen via Secret URL", + "error-you-are-last-owner": "Je bent de laatste eigenaar. Kies eerst een nieuwe voor je de kamer verlaat.", + "Actions": "Acties", + "activity": "activiteit", + "Activity": "Activiteit", + "Add_Reaction": "Voeg reactie toe", + "Add_Server": "Voeg server toe", + "Add_users": "Voeg gebruikers toe", + "Admin_Panel": "Admin Paneel", + "Alert": "Alert", + "alert": "alert", + "alerts": "alerts", + "All_users_in_the_channel_can_write_new_messages": "Alle gebruikers in het kanaal kunnen nieuwe berichten sturen", + "All": "Alle", + "All_Messages": "Alle Berichten", + "Allow_Reactions": "Sta reacties toe", + "Alphabetical": "Alfabetisch", + "and_more": "en meer", + "and": "en", + "announcement": "aankondiging", + "Announcement": "Aankondiging", + "Apply_Your_Certificate": "Gebruik je certificaat", + "ARCHIVE": "ARCHIVEER", + "archive": "archiveer", + "are_typing": "zijn aan het typen", + "Are_you_sure_question_mark": "Weet je het zeker?", + "Are_you_sure_you_want_to_leave_the_room": "Weet je zeker dat je de kamer {{room}} wil verlaten?", + "Audio": "Audio", + "Authenticating": "Authenticating", + "Automatic": "Automatisch", + "Auto_Translate": "Auto-Vertalen", + "Avatar_changed_successfully": "Avatar succesvol aangepast!", + "Avatar_Url": "Avatar URL", + "Away": "Weg", + "Back": "Terug", + "Black": "Zwart", + "Block_user": "Blokkeer gebruiker", + "Broadcast_channel_Description": "Alleen toegestane gebruikers kunnen nieuwe berichten sturen, maar iedereen kan reageren", + "Broadcast_Channel": "Broadcast Kanaal", + "Busy": "Bezig", + "By_proceeding_you_are_agreeing": "Door verder te gaan ga je akkoord met onze", + "Cancel_editing": "Stop bewerken", + "Cancel_recording": "Stop opnemen", + "Cancel": "Stop", + "changing_avatar": "avatar aan het veranderen", + "creating_channel": "kanaal aan het maken", + "creating_invite": "uitnodiging maken", + "Channel_Name": "Kanaal Name", + "Channels": "Kanalen", + "Chats": "Chats", + "Call_already_ended": "Gesprek al beeïndigd!", + "Click_to_join": "Klik om lid te worden!", + "Close": "Sluiten", + "Close_emoji_selector": "Sluit emoji selector", + "Choose": "Kies", + "Choose_from_library": "Kies uit bibliotheek", + "Choose_file": "Kies bestand", + "Code": "Code", + "Collaborative": "Samenwerkend", + "Confirm": "Bevestig", + "Connect": "Verbind", + "Connected": "Verbonden", + "connecting_server": "Verbonden met een server", + "Connecting": "Aan het verbinden...", + "Contact_us": "Contact opnemen", + "Contact_your_server_admin": "Neem contact op met je server admin.", + "Continue_with": "Ga verder met", + "Copied_to_clipboard": "Gekopïeerd naar klembord!", + "Copy": "Kopïeer", + "Permalink": "Permalink", + "Certificate_password": "Certificate Password", + "Whats_the_password_for_your_certificate": "Wat is het wachtwoord voor je certificate?", + "Create_account": "Maak een account", + "Create_Channel": "Maak een kanaal", + "Created_snippet": "snippet gemaakt", + "Create_a_new_workspace": "Een nieuwe workspace maken", + "Create": "Maken", + "Dark": "Donker", + "Dark_level": "Donker niveau", + "Default": "Standaard", + "Delete_Room_Warning": "Een kamer verwijderen verwijdert alle berichten erin. Dit kan niet ongedaan gemaakt worden.", + "delete": "delete", + "Delete": "Delete", + "DELETE": "DELETE", + "deleting_room": "kamer legen", + "description": "beschrijving", + "Description": "Beschrijving", + "Desktop_Options": "Desktop Opties", + "Directory": "Map", + "Direct_Messages": "Directe berichten", + "Disable_notifications": "Zet notificaties uit", + "Discussions": "Discussies", + "Dont_Have_An_Account": "Heb je geen account?", + "Do_you_have_a_certificate": "Heb je een certificate?", + "Do_you_really_want_to_key_this_room_question_mark": "Wil je deze kamer echt {{key}}?", + "edit": "bewerk", + "edited": "bewerkt", + "Edit": "Bewerk", + "Edit_Invite": "Bewerk uitnodiging", + "Email_or_password_field_is_empty": "Email of wachtwoord veld is leeg", + "Email": "E-mail", + "email": "e-mail", + "Enable_Auto_Translate": "Zet Auto-Translate aan", + "Enable_notifications": "Zet notifications aan", + "Everyone_can_access_this_channel": "Iedereen kan bij dit kanaal", + "Error_uploading": "Error tijdens uploaden", + "Expiration_Days": "Vervalt in (Dagen)", + "Favorite": "Favoriet", + "Favorites": "Favorieten", + "Files": "Bestanden", + "File_description": "Bestandsbeschrijving", + "File_name": "Bestandsnaam", + "Finish_recording": "Beëindig opname", + "Following_thread": "Volg thread", + "For_your_security_you_must_enter_your_current_password_to_continue": "Voor je veiligheid moet je je wachtwoord invullen om door te gaan", + "Forgot_password_If_this_email_is_registered": "Als dit email adres bij ons bekend is, sturen we je instructies op om je wachtwoord te resetten. Als je geen email krijgt, probeer het dan nogmaals.", + "Forgot_password": "Wachtwoord vergeten", + "Forgot_Password": "Wachtwoord Vergeten", + "Full_table": "Klik om de hele tabel te zien", + "Generate_New_Link": "Genereer Nieuwe Link", + "Group_by_favorites": "Sorteer op favorieten", + "Group_by_type": "Sorteer op type", + "Hide": "Verberg", + "Has_joined_the_channel": "is bij het kanaal gekomen", + "Has_joined_the_conversation": "neemt deel aan het gesprek", + "Has_left_the_channel": "heeft het kanaal verlaten", + "In_App_And_Desktop": "In-app en Desktop", + "In_App_and_Desktop_Alert_info": "Laat een banner bovenaan het scherm zien als de app open is en geeft een notificatie op de desktop", + "Invisible": "Onzichtbaar", + "Invite": "Nodig uit", + "is_a_valid_RocketChat_instance": "is een geldige Rocket.Chat instantie", + "is_not_a_valid_RocketChat_instance": "is geen geldige Rocket.Chat instantie", + "is_typing": "is aan het typen", + "Invalid_or_expired_invite_token": "Ongeldig of verlopen uitnodigingstoken", + "Invalid_server_version": "De server die je probeert te bereiken gebruikt een versie die niet meer door de app ondersteunt wordt: {{currentVersion}}.\n\nMinimale versienummer {{minVersion}}", + "Invite_Link": "Uitnodigingslink", + "Invite_users": "Nodig gebruikers uit", + "Join": "Word lid", + "Just_invited_people_can_access_this_channel": "Alleen genodigden kunnen bij dit kanaal", + "Language": "Taal", + "last_message": "laatste bericht", + "Leave_channel": "Verlaat kanaal", + "leaving_room": "ruimte verlaten", + "leave": "verlaten", + "Legal": "Legaal", + "Light": "Light", + "License": "License", + "Livechat": "Livechat", + "Login": "Login", + "Login_error": "Je inloggegevens zijn fout! Probeer het opnieuw.", + "Login_with": "Login met", + "Logout": "Logout", + "Max_number_of_uses": "Maximaal aantal gebruiksmogelijkheden ", + "members": "leden", + "Members": "Leden", + "Mentioned_Messages": "Vermelde Berichten", + "mentioned": "vermeld", + "Mentions": "Vermeldingen", + "Message_accessibility": "Bericht van {{user}} om {{time}}: {{message}}", + "Message_actions": "Berichtacties", + "Message_pinned": "Bericht vastgezet", + "Message_removed": "Bericht verwijderd", + "message": "bericht", + "messages": "berichten", + "Messages": "Berichten", + "Message_Reported": "Bericht gerapporteerd", + "Microphone_Permission_Message": "Rocket.Chat heeft toegang tot je microfoon nodig voor geluidsberichten.", + "Microphone_Permission": "Microfoon toestemming", + "Mute": "Dempen", + "muted": "gedempt", + "My_servers": "Mijn servers", + "N_people_reacted": "{{n}} mensen reageerden", + "N_users": "{{n}} gebruikers", + "name": "naam", + "Name": "Naam", + "Never": "Nooit", + "New_Message": "Nieuw Bericht", + "New_Password": "Nieuw Wachtwoord", + "New_Server": "Nieuwe Server", + "Next": "Volgende", + "No_files": "Geen bestanden", + "No_limit": "Geen limiet", + "No_mentioned_messages": "Geen vermelde berichten", + "No_pinned_messages": "Geen vastgezette berichten", + "No_results_found": "Geen resultaten gevonden", + "No_starred_messages": "Geen berichten met ster gemarkeerd", + "No_thread_messages": "Geen thread berichten", + "No_Message": "Geen bericht", + "No_messages_yet": "Nog geen berichten", + "No_Reactions": "Geen reacties", + "No_Read_Receipts": "Geen leesbevestiging", + "Not_logged": "Niet gelogged", + "Not_RC_Server": "Dit is geen Rocket.Chat server.\n{{contact}}", + "Nothing": "Niets", + "Nothing_to_save": "Niets om op te slaan!", + "Notify_active_in_this_room": "Bericht de actieve gebruikers in deze kamer", + "Notify_all_in_this_room": "Bericht iedereen in deze kamer", + "Notifications": "Notificaties", + "Notification_Duration": "Notificatie Duur", + "Notification_Preferences": "Notificatievoorkeuren", + "Offline": "Offline", + "Oops": "Oeps!", + "Onboarding_title": "Welkom bij Rocket.Chat", + "Online": "Online", + "Only_authorized_users_can_write_new_messages": "Alleen gebruikers met toestemming mogen nieuwe berichten maken", + "Open_emoji_selector": "Open de emoji selector", + "Open_Source_Communication": "Open de Source Communication", + "Password": "Wachtwoord", + "Permalink_copied_to_clipboard": "Permalink gekopiëerd naar klembord!", + "Pin": "Vastzetten", + "Pinned_Messages": "Vastgezette berichten", + "pinned": "vastgezet", + "Pinned": "Vastgezet", + "Please_enter_your_password": "Vul je wachtwoord in", + "Preferences": "Voorkeuren", + "Preferences_saved": "Voorkeuren opgeslagen!", + "Privacy_Policy": " Privacy Policy", + "Private_Channel": "Prive Kanaal", + "Private_Groups": "Prive Groepen", + "Private": "Prive", + "Processing": "Verwerken...", + "Profile_saved_successfully": "Profiel succesvol opgeslagen!", + "Profile": "Profiel", + "Public_Channel": "Publiek kanaal", + "Public": "Publiek", + "Push_Notifications": "Pushnotificaties", + "Push_Notifications_Alert_Info": "Deze notificaties krijg je als de app niet geopend is", + "Quote": "Quote", + "Reactions_are_disabled": "Reacties zijn uitgeschakeld", + "Reactions_are_enabled": "Reacties zijn ingeschakeld", + "Reactions": "Reacties", + "Read": "Lezen", + "Read_Only_Channel": "Alleen-lezen Kanaal", + "Read_Only": "Alleen Lezen", + "Read_Receipt": "Leesbevestiging", + "Receive_Group_Mentions": "Ontvang Groepsvermeldingen", + "Receive_Group_Mentions_Info": "Ontvang @all en @here vermeldingen", + "Register": "Aanmelden", + "Repeat_Password": "Wachtwoord herhalen", + "Replied_on": "Gereageerd op:", + "replies": "reacties", + "reply": "reactie", + "Reply": "Reacties", + "Report": "Rapporteren", + "Receive_Notification": "Ontvang notificatie", + "Receive_notifications_from": "Ontvang notificaties van {{name}}", + "Resend": "Opnieuw verzenden", + "Reset_password": "Wachtwoord reset", + "resetting_password": "wachtwoord aan het resetten", + "RESET": "RESET", + "Review_app_title": "Vind je dit een TOP app?", + "Review_app_desc": "Geef ons 5 sterren op {{store}}", + "Review_app_yes": "Doe ik!", + "Review_app_no": "Nee", + "Review_app_later": "Misschien later", + "Review_app_unable_store": "Kon {{store}} niet openen", + "Review_this_app": "Review deze app", + "Roles": "Rollen", + "Room_actions": "Kamer acties", + "Room_changed_announcement": "Kamer announcement veranderd naar: {{announcement}} door {{userBy}}", + "Room_changed_description": "Kamer beschrijving veranderd naar: {{description}} door {{userBy}}", + "Room_changed_privacy": "Kamer type veranderd naar: {{type}} door {{userBy}}", + "Room_changed_topic": "Kamer onderwerp veranderd naar: {{topic}} door {{userBy}}", + "Room_Files": "Kamer Bestanden", + "Room_Info_Edit": "Kamer Info Aanpassen", + "Room_Info": "Kamer Info", + "Room_Members": "Kamer Leden", + "Room_name_changed": "Kamer naam veranderd naar: {{name}} door {{userBy}}", + "SAVE": "OPSLAAN", + "Save_Changes": "Sla wijzigingen op", + "Save": "Opslaan", + "saving_preferences": "voorkeuren opslaan", + "saving_profile": "profiel opslaan", + "saving_settings": "instellingen opslaan", + "saved_to_gallery": "Aan galerij toegevoegd", + "Search_Messages": "Zoek Berichten", + "Search": "Zoek", + "Search_by": "Zoek op", + "Search_global_users": "Zoek voor algemene gebruikers", + "Search_global_users_description": "Als je dit aan zet, kan je gebruikers van andere bedrijven en servers zoeken.", + "Seconds": "{{second}} seconden", + "Select_Avatar": "Kies Avatar", + "Select_Server": "Kies Server", + "Select_Users": "Kies Gebruikers", + "Send": "Verstuur", + "Send_audio_message": "Verstuur geluidsbericht", + "Send_crash_report": "Verstuur crash report", + "Send_message": "Verstuur bericht", + "Send_to": "Verstuur naar...", + "Sent_an_attachment": "Verstuur een bijlage", + "Server": "Server", + "Servers": "Servers", + "Server_version": "Server versie: {{version}}", + "Set_username_subtitle": "De gebruikersnaam wordt gebruikt om anderen jou te vermelden in berichten", + "Settings": "Instellingen", + "Settings_succesfully_changed": "Instellingen succesvol veranderd!", + "Share": "Delen", + "Share_Link": "Deel Link", + "Share_this_app": "Deel deze app", + "Show_Unread_Counter": "Laat Ongelezen Teller Zien", + "Show_Unread_Counter_Info": "De Ongelezen Tller is een badge aan de rechterkant van het kanaal in de lijst", + "Sign_in_your_server": "Log in bij je server", + "Sign_Up": "Inschrijven", + "Some_field_is_invalid_or_empty": "Een veld is ongeldig of leeg", + "Sorting_by": "Sorteren op {{key}}", + "Sound": "Geluid", + "Star_room": "Sterrenkamer", + "Star": "Ster", + "Starred_Messages": "Berichten met ster gemarkeerd", + "starred": "met ster gemarkeerd", + "Starred": "Met ster gemarkeerd", + "Start_of_conversation": "Begin van een gesprek", + "Started_discussion": "Begin van een discussie:", + "Started_call": "Gesprek gestart door {{userBy}}", + "Submit": "Verstuur", + "Table": "Tabel", + "Take_a_photo": "Neem een foto", + "Take_a_video": "Neem een video", + "tap_to_change_status": "tik om je status te veranderen", + "Tap_to_view_servers_list": "Tik om een server lijst te weergeven", + "Terms_of_Service": " Servicevoorwaarden ", + "Theme": "Thema", + "There_was_an_error_while_action": "Er was eer fout tijdens {{action}}!", + "This_room_is_blocked": "Deze kamer is geblokkeerd", + "This_room_is_read_only": "Deze kamer is alleen-lezen", + "Thread": "Thread", + "Threads": "Threads", + "Timezone": "Tijdzone", + "To": "Naar", + "topic": "onderwerp", + "Topic": "Onderwerp", + "Translate": "Vertalen", + "Try_again": "Probeer opnieuw", + "Two_Factor_Authentication": "Tweee-factor Authenticatie", + "Type_the_channel_name_here": "Typ hier de kanaalnaam", + "unarchive": "dearchiveren", + "UNARCHIVE": "DEARCHIVEREN", + "Unblock_user": "Gebruiker deblokkeren", + "Unfavorite": "Uit favorieten halen", + "Unfollowed_thread": "Thread ontvolgd", + "Unmute": "Dempen opheffen", + "unmuted": "ongedempt", + "Unpin": "Losmaken", + "unread_messages": "ongelezen", + "Unread": "Ongelezen", + "Unread_on_top": "Ongelezen bovenaan", + "Unstar": "Ster verwijderen", + "Updating": "Updaten...", + "Uploading": "Uploaden", + "Upload_file_question_mark": "Bestand uploaden?", + "Users": "Gebruikers", + "User_added_by": "Gebruiker {{userAdded}} toegevoegd door {{userBy}}", + "User_Info": "Gebruiker Info", + "User_has_been_key": "Gebruiker is {{key}}", + "User_is_no_longer_role_by_": "{{user}} is geen {{role}} meer door {{userBy}}", + "User_muted_by": "Gebruiker {{userMuted}} gedempt door {{userBy}}", + "User_removed_by": "Gebruiker {{userRemoved}} verwijderd door {{userBy}}", + "User_sent_an_attachment": "{{user}} stuurde een bijlage", + "User_unmuted_by": "Dempen opgeheven voor {{userUnmuted}} door {{userBy}}", + "User_was_set_role_by_": "{{user}} is nu {{role}} door {{userBy}}", + "Username_is_empty": "Gebruikersnaam is leeg", + "Username": "Gebruikersnaam", + "Username_or_email": "Gebruikersnaam of email", + "Validating": "Aan het valideren", + "Video_call": "Videogesprek", + "View_Original": "Bekijk origineel", + "Voice_call": "Audiogesprek", + "Websocket_disabled": "Websocket staat uit voor deze server.\n{{contact}}", + "Welcome": "Welkom", + "Whats_your_2fa": "Wat is je 2FA code?", + "Without_Servers": "Zonder Servers", + "Write_External_Permission_Message": "Rocket.Chat moet bij je galerij kunnen om afbeeldingen op te slaan.", + "Write_External_Permission": "Galerij Toestemming", + "Yes_action_it": "Ja, {{action}} het!", + "Yesterday": "Gisteren", + "You_are_in_preview_mode": "Je bent in preview mode", + "You_are_offline": "Je bent offline", + "You_can_search_using_RegExp_eg": "Je kan RegExp. gebruiken, bijv. `/^text$/i`", + "You_colon": "Jij: ", + "you_were_mentioned": "je bent vermeld", + "you": "jij", + "You": "Jij", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Je moet minimaal toegang hebben tot 1 Rocket.Chat server om iets te delen.", + "Your_certificate": "Jouw Certificaat", + "Your_invite_link_will_expire_after__usesLeft__uses": "Je uitnodigingslink wordt ongeldig over {{usesLeft}} keer.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Je uitnodigingslink wordt ongeldig op {{date}} of na{{usesLeft}} keer.", + "Your_invite_link_will_expire_on__date__": "Je uitnodigingslink wordt ongeldig op {{date}}.", + "Your_invite_link_will_never_expire": "Je uitnodigingslink wordt nooit ongeldig.", + "Version_no": "Versie: {{version}}", + "You_will_not_be_able_to_recover_this_message": "Je kan dit bericht niet meer terugkrijgen!", + "Change_Language": "Verander taal", + "Crash_report_disclaimer": "We kijken nooit naar de content van je chats. Het crashrapport bevat alleen relevante informatie voor ons om problemen te isoleren en op te lossen.", + "Type_message": "Type bericht", + "Room_search": "Kamers zoeken", + "Room_selection": "Kamerselectie 1...9", + "Next_room": "Volgende kamer", + "Previous_room": "Vorige kamer", + "New_room": "Nieuwe Kamer", + "Upload_room": "Upload naar kamer", + "Search_messages": "Doorzoek messages", + "Scroll_messages": "Scroll door messages", + "Reply_latest": "Beantwoord de laatste", + "Server_selection": "Server selectie", + "Server_selection_numbers": "Server selectie 1...9", + "Add_server": "Voeg Server Toe", + "New_line": "Nieuwe Regel" +} \ No newline at end of file diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js deleted file mode 100644 index e3dc8e10681..00000000000 --- a/app/i18n/locales/pt-BR.js +++ /dev/null @@ -1,657 +0,0 @@ -export default { - '1_person_reacted': '1 pessoa reagiu', - '1_user': '1 usuário', - 'error-action-not-allowed': '{{action}} não é permitido', - 'error-application-not-found': 'Aplicação não encontrada', - 'error-archived-duplicate-name': 'Já há um canal arquivado com o nome {{room_name}}', - 'error-avatar-invalid-url': 'URL inválida de avatar: {{url}}', - 'error-avatar-url-handling': 'Erro durante o manuseio configuração avatar a partir de uma URL ({{url}}) para {{username}}', - 'error-cant-invite-for-direct-room': 'Não é possível convidar usuários para salas diretas', - 'error-could-not-change-email': 'Não foi possível mudar e-mail', - 'error-could-not-change-name': 'Não foi possível mudar o nome', - 'error-could-not-change-username': 'Não foi possível alterar o nome de usuário', - 'error-delete-protected-role': 'Não é possível remover um papel protegido', - 'error-department-not-found': 'Departamento não encontrado', - 'error-direct-message-file-upload-not-allowed': 'Compartilhamento de arquivos não está permitido em mensagens diretas', - 'error-duplicate-channel-name': 'Já existe um canal com nome {{channel_name}}', - 'error-email-domain-blacklisted': 'O domínio de e-mail está na lista negra', - 'error-email-send-failed': 'Erro ao tentar enviar e-mail: {{message}}', - 'error-save-image': 'Erro ao salvar imagem', - 'error-field-unavailable': '{{field}} já está sendo usado :(', - 'error-file-too-large': 'Arquivo é muito grande', - 'error-importer-not-defined': 'O importador não foi definido corretamente; está faltando a classe Import.', - 'error-input-is-not-a-valid-field': '{{input}} não é válido um {{field}}', - 'error-invalid-actionlink': 'Link de ação inválido', - 'error-invalid-arguments': 'Argumentos inválidos', - 'error-invalid-asset': 'Arquivo Inválido', - 'error-invalid-channel': 'Canal inválido.', - 'error-invalid-channel-start-with-chars': 'Canal inválido. Comece com @ ou #', - 'error-invalid-custom-field': 'Campo personalizado inválido', - 'error-invalid-custom-field-name': 'Nome inválido para o campo personalizado. Use apenas letras, números, hífens e underscores.', - 'error-invalid-date': 'Data fornecida inválida', - 'error-invalid-description': 'Descrição inválida', - 'error-invalid-domain': 'Domínio inválido', - 'error-invalid-email': '{{email}} não é um e-mail válido', - 'error-invalid-email-address': 'Endereço de e-mail inválido', - 'error-invalid-file-height': 'Altura de arquivo inválida', - 'error-invalid-file-type': 'Tipo de arquivo inválido', - 'error-invalid-file-width': 'Altura de arquivo inválida', - 'error-invalid-from-address': 'Você informou um e-mail DE inválido.', - 'error-invalid-integration': 'Integração inválida', - 'error-invalid-message': 'Mensagem inválida', - 'error-invalid-method': 'Método inválido', - 'error-invalid-name': 'Nome inválido', - 'error-invalid-password': 'Senha inválida', - 'error-invalid-redirectUri': 'redirectUri inválido', - 'error-invalid-role': 'Papel inválido', - 'error-invalid-room': 'Sala inválida', - 'error-invalid-room-name': '{{room_name}} não é um nome de sala válido', - 'error-invalid-room-type': '{{type}} não é um tipo de sala válido.', - 'error-invalid-settings': 'Configurações fornecidas inválidas', - 'error-invalid-subscription': 'Assinatura inválida', - 'error-invalid-token': 'Token inválido', - 'error-invalid-triggerWords': 'triggerWords inválidos', - 'error-invalid-urls': 'URLs inválidas', - 'error-invalid-user': 'Usuário inválido', - 'error-invalid-username': 'Nome de usuário Inválido', - 'error-invalid-webhook-response': 'O URL do webhook respondeu com um status diferente de 200', - 'error-message-deleting-blocked': 'Exclusão de mensagens está bloqueada', - 'error-message-editing-blocked': 'Edição de mensagens está bloqueada', - 'error-message-size-exceeded': 'O tamanho da mensagem excede Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'Você deve fornecer o link para desinscrever-se: [unsubscribe].', - 'error-no-tokens-for-this-user': 'Não existem tokens para este usuário', - 'error-not-allowed': 'Não permitido', - 'error-not-authorized': 'Não autorizado', - 'error-password-policy-not-met': 'A senha não atende a política do servidor', - 'error-password-policy-not-met-maxLength': 'A senha não está de acordo com a política de comprimento máximo do servidor (senha muito longa)', - 'error-password-policy-not-met-minLength': 'A senha não está de acordo com a política de comprimento mínimo do servidor (senha muito curta)', - 'error-password-policy-not-met-oneLowercase': 'A senha não está de acordo com a política do servidor de pelo menos um caractere minúsculo.', - 'error-password-policy-not-met-oneNumber': 'A senha não está de acordo com a política do servidor, de pelo menos um caractere numérico.', - 'error-password-policy-not-met-oneSpecial': 'A senha não está de acordo com a política do servidor, de pelo menos um caractere especial.', - 'error-password-policy-not-met-oneUppercase': 'A senha não está de acordo com a política do servidor, de pelo menos um caractere maiúsculo.', - 'error-password-policy-not-met-repeatingCharacters': 'A senha não está de acordo com a política do servidor, relativamente aos caracteres proibidos repetidos (existem vários caracteres proibidos próximos uns dos outros)', - 'error-push-disabled': 'Notificações push desativadas', - 'error-remove-last-owner': 'Este é o último proprietário. Por favor, defina um novo proprietário antes de remover este.', - 'error-role-in-use': 'Não é possível remover o papel pois ele está em uso', - 'error-role-name-required': 'Nome do papel é obrigatório', - 'error-the-field-is-required': 'O campo {{field}} é obrigatório.', - 'error-too-many-requests': 'Erro, muitas solicitações. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.', - 'error-user-has-no-roles': 'O usuário não possui permissões', - 'error-user-is-not-activated': 'O usuário não está ativo', - 'error-user-limit-exceeded': 'O número de usuários que você está tentando convidar para #channel_name excede o limite determindado pelo administrador', - 'error-user-not-in-room': 'O usuário não está nesta sala', - 'error-user-registration-disabled': 'O registro do usuário está desativado', - 'error-user-registration-secret': 'O registro de usuário é permitido somente via URL secreta', - 'error-you-are-last-owner': 'Você é o último proprietário da sala. Por favor defina um novo proprietário antes de sair.', - Actions: 'Ações', - activity: 'atividade', - Activity: 'Atividade', - Add_Reaction: 'Reagir', - Add_Server: 'Adicionar servidor', - Add_users: 'Adicionar usuário', - Agent: 'Agente', - Alert: 'Alerta', - alert: 'alerta', - alerts: 'alertas', - All_users_in_the_channel_can_write_new_messages: 'Todos usuários no canal podem enviar mensagens novas', - A_meaningful_name_for_the_discussion_room: 'Um nome significativo para o canal de discussão', - All: 'Todos', - Allow_Reactions: 'Permitir reagir', - Alphabetical: 'Alfabético', - and_more: 'e mais', - and: 'e', - announcement: 'anúncio', - Announcement: 'Anúncio', - ARCHIVE: 'ARQUIVAR', - archive: 'arquivar', - are_typing: 'estão digitando', - Are_you_sure_question_mark: 'Você tem certeza?', - Are_you_sure_you_want_to_leave_the_room: 'Tem certeza de que deseja sair da sala {{room}}?', - Audio: 'Áudio', - Authenticating: 'Autenticando', - Automatic: 'Automático', - Auto_Translate: 'Tradução automática', - Avatar_changed_successfully: 'Avatar alterado com sucesso!', - Avatar_Url: 'Avatar URL', - Away: 'Ausente', - Back: 'Voltar', - Black: 'Preto', - Block_user: 'Bloquear usuário', - Browser: 'Navegador', - Broadcast_channel_Description: 'Somente usuários autorizados podem escrever novas mensagens, mas os outros usuários poderão responder', - Broadcast_Channel: 'Canal de Transmissão', - Busy: 'Ocupado', - By_proceeding_you_are_agreeing: 'Ao prosseguir você está aceitando', - Cancel_editing: 'Cancelar edição', - Cancel_recording: 'Cancelar gravação', - Cancel: 'Cancelar', - changing_avatar: 'trocando avatar', - creating_channel: 'criando canal', - creating_invite: 'criando convite', - Channel_Name: 'Nome do Canal', - Channels: 'Canais', - Chats: 'Conversas', - Change_Language: 'Alterar idioma', - Change_language_loading: 'Alterando idioma.', - Call_already_ended: 'A chamada já terminou!', - Clear_cache_loading: 'Limpando cache.', - Clear_cookies_alert: 'Você quer limpar seus cookies?', - Clear_cookies_desc: 'Esta ação limpará todos os cookies de login permitindo que você faça login em outras contas.', - Clear_cookies_yes: 'Sim, limpar cookies', - Clear_cookies_no: 'Não, manter cookies', - Click_to_join: 'Clique para participar!', - Close: 'Fechar', - Close_emoji_selector: 'Fechar seletor de emojis', - Closing_chat: 'Fechando conversa', - Choose: 'Escolher', - Chat_closed_by_agent: 'Conversa fechada por agente', - Choose_from_library: 'Escolha da biblioteca', - Choose_file: 'Enviar arquivo', - Choose_where_you_want_links_be_opened: 'Escolha onde deseja que os links sejam abertos', - Code: 'Código', - Code_or_password_invalid: 'Código ou senha inválido', - Collaborative: 'Colaborativo', - Confirm: 'Confirmar', - Connect: 'Conectar', - Connected: 'Conectado', - Conversation: 'Conversação', - connecting_server: 'conectando no servidor', - Connecting: 'Conectando...', - Contact_us: 'Entre em contato', - Continue_with: 'Entrar com', - Contact_your_server_admin: 'Contate o administrador do servidor.', - Copied_to_clipboard: 'Copiado para a área de transferência!', - Copy: 'Copiar', - Permalink: 'Link-Permanente', - Create_account: 'Criar conta', - Create_Channel: 'Criar Canal', - Create_Direct_Messages: 'Criar Mensagens Diretas', - Create_Discussion: 'Criar Discussão', - Created_snippet: 'criou um snippet', - Create_a_new_workspace: 'Criar nova área de trabalho', - Create: 'Criar', - Dark: 'Escuro', - Dark_level: 'Nível escuro', - Default_browser: 'Navegador padrão', - Delete_Room_Warning: 'A exclusão de uma sala irá apagar todas as mensagens postadas na sala. Isso não pode ser desfeito.', - delete: 'excluir', - Delete: 'Excluir', - DELETE: 'EXCLUIR', - deleting_room: 'excluindo sala', - Direct_Messages: 'Mensagens Diretas', - Desktop_Options: 'Opções De Área De Trabalho', - Desktop_Notifications: 'Notificações da Área de Trabalho', - Desktop_Alert_info: 'Essas notificações são entregues a você na área de trabalho', - Directory: 'Diretório', - description: 'descrição', - Description: 'Descrição', - Disable_notifications: 'Desabilitar notificações', - Discussions: 'Discussões', - Discussion_Desc: 'Ajude a manter uma visão geral sobre o que está acontecendo! Ao criar uma discussão, um sub-canal do que você selecionou é criado e os dois são vinculados.', - Discussion_name: 'Nome da discussão', - Done: 'Pronto', - Dont_Have_An_Account: 'Não tem uma conta?', - Do_you_have_an_account: 'Você tem uma conta?', - Do_you_really_want_to_key_this_room_question_mark: 'Você quer realmente {{key}} esta sala?', - E2E_Encryption: 'Encriptação ponta a ponta', - E2E_How_It_Works_info1: 'Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar grupos privados existentes ou DMs para criptografados.', - E2E_How_It_Works_info2: 'Esta é a criptografia *ponta a ponta*, portanto, a chave para codificar/decodificar suas mensagens e elas não serão salvas no servidor. Por esse motivo *você precisa armazenar esta senha em algum lugar seguro* que você pode acessar mais tarde se precisar.', - E2E_How_It_Works_info3: 'Se você continuar, será gerada automaticamente uma senha E2E.', - E2E_How_It_Works_info4: 'Você também pode configurar uma nova senha para sua chave de criptografia a qualquer momento em qualquer navegador em que tenha inserido a senha E2E existente.', - edit: 'editar', - edited: 'editado', - Edit: 'Editar', - Edit_Invite: 'Editar convite', - Edit_Status: 'Editar Status', - End_to_end_encrypted_room: 'Sala criptografada de ponta a ponta', - end_to_end_encryption: 'criptografia de ponta a ponta', - Email_or_password_field_is_empty: 'Email ou senha estão vazios', - Email: 'E-mail', - email: 'e-mail', - Empty_title: 'Título vazio', - Email_Notification_Mode_All: 'Cada Menção / Mensagem Direta', - Email_Notification_Mode_Disabled: 'Desativado', - Enable_Auto_Translate: 'Ativar a tradução automática', - Enable_notifications: 'Habilitar notificações', - Encrypted: 'Criptografado', - Encrypted_message: 'Mensagem criptografada', - Enter_Your_E2E_Password: 'Digite Sua Senha E2E', - Enter_Your_Encryption_Password_desc1: 'Isso permitirá que você acesse seus grupos privados e mensagens diretas criptografadas.', - Enter_Your_Encryption_Password_desc2: 'Você precisa inserir a senha para codificar/decodificar mensagens em todos os lugares em que usar o chat.', - Encryption_error_title: 'Sua senha de criptografia parece errada', - Encryption_error_desc: 'Não foi possível decodificar sua chave de criptografia para ser importada.', - Everyone_can_access_this_channel: 'Todos podem acessar este canal', - Error_uploading: 'Erro subindo', - Expiration_Days: 'Expira em (dias)', - Favorites: 'Favoritos', - Files: 'Arquivos', - File_description: 'Descrição do arquivo', - File_name: 'Nome do arquivo', - Finish_recording: 'Encerrar gravação', - Following_thread: 'Começou a seguir tópico', - For_your_security_you_must_enter_your_current_password_to_continue: 'Para sua segurança, você precisa digitar sua senha', - Forgot_password_If_this_email_is_registered: 'Se este e-mail estiver cadastrado, enviaremos instruções sobre como redefinir sua senha. Se você não receber um e-mail em breve, volte e tente novamente.', - Forgot_password: 'Esqueceu sua senha?', - Forgot_Password: 'Esqueci minha senha', - Forward: 'Encaminhar', - Forward_Chat: 'Encaminhar Conversa', - Forward_to_department: 'Encaminhar para departamento', - Forward_to_user: 'Encaminhar para usuário', - Full_table: 'Clique para ver a tabela completa', - Generate_New_Link: 'Gerar novo convite', - Group_by_favorites: 'Agrupar favoritos', - Group_by_type: 'Agrupar por tipo', - Has_joined_the_channel: 'entrou no canal', - Has_joined_the_conversation: 'entrou na conversa', - Has_left_the_channel: 'saiu da conversa', - Hide_System_Messages: 'Esconder mensagens do sistema', - Hide_type_messages: 'Esconder mensagens de "{{type}}"', - Message_HideType_uj: 'Utilizador Entrou', - Message_HideType_ul: 'Utilizador Saiu', - Message_HideType_ru: 'Utilizador Removido', - Message_HideType_au: 'Utilizador adicionado', - Message_HideType_mute_unmute: 'Utilizador Silenciado', - Message_HideType_r: 'Nome da sala alterado', - Message_HideType_ut: 'Utilizador adicionado ao bate-papo', - Message_HideType_wm: 'Bem Vindo', - Message_HideType_rm: 'Mensagem Removida', - Message_HideType_subscription_role_added: 'Papel atribuído', - Message_HideType_subscription_role_removed: 'Papel removido', - Message_HideType_room_archived: 'Sala arquivada', - Message_HideType_room_unarchived: 'Sala desarquivada', - IP: 'IP', - In_app: 'No app', - In_App_and_Desktop_Alert_info: 'Exibe um banner na parte superior da tela quando o aplicativo é aberto e exibe uma notificação na área de trabalho', - Invisible: 'Invisível', - Invite: 'Convidar', - is_typing: 'está digitando', - Invalid_or_expired_invite_token: 'Token de convite inválido ou vencido', - Invalid_server_version: 'O servidor que você está conectando não é suportado mais por esta versão do aplicativo: {{currentVersion}}.\n\nEsta versão do aplicativo requer a versão {{minVersion}} do servidor para funcionar corretamente.', - Invite_Link: 'Link de Convite', - Invite_users: 'Convidar usuários', - Join: 'Entrar', - Join_Code: 'Insira o Código da Sala', - Insert_Join_Code: 'Insira o código para entrar na sala', - Join_our_open_workspace: 'Entra na nossa workspace pública', - Join_your_workspace: 'Entre na sua workspace', - Just_invited_people_can_access_this_channel: 'Apenas as pessoas convidadas podem acessar este canal', - Language: 'Idioma', - last_message: 'última mensagem', - Leave_channel: 'Sair do canal', - leaving_room: 'saindo do canal', - leave: 'sair', - Legal: 'Legal', - Light: 'Claro', - Livechat: 'Livechat', - Login: 'Entrar', - Login_error: 'Suas credenciais foram rejeitadas. Tente novamente por favor!', - Login_with: 'Login with', - Logout: 'Sair', - Logging_out: 'Saindo.', - Max_number_of_uses: 'Número máximo de usos', - Max_number_of_users_allowed_is_number: 'Número máximo de usuários é {{maxUsers}}', - Members: 'Membros', - Mentioned_Messages: 'Mensagens mencionadas', - mentioned: 'mencionado', - Mentions: 'Menções', - Message_accessibility: 'Mensagem de {{user}} às {{time}}: {{message}}', - Message_actions: 'Ações', - Message_pinned: 'Fixou uma mensagem', - Message_removed: 'Mensagem removida', - message: 'mensagem', - messages: 'mensagens', - Messages: 'Mensagens', - Microphone_Permission_Message: 'Rocket.Chat precisa de acesso ao seu microfone para enviar mensagens de áudio.', - Microphone_Permission: 'Acesso ao Microfone', - Mute: 'Mudo', - muted: 'mudo', - N_people_reacted: '{{n}} pessoas reagiram', - N_users: '{{n}} usuários', - name: 'nome', - Name: 'Nome', - Navigation_history: 'Histórico de navegação', - Never: 'Nunca', - New_in_RocketChat_question_mark: 'Novo no Rocket.Chat?', - New_Message: 'Nova Mensagem', - New_Password: 'Nova Senha', - Next: 'Próximo', - No_files: 'Não há arquivos', - No_limit: 'Sem limite', - No_mentioned_messages: 'Não há menções', - No_pinned_messages: 'Não há mensagens fixadas', - No_results_found: 'Nenhum resultado encontrado', - No_starred_messages: 'Não há mensagens favoritas', - No_thread_messages: 'Não há tópicos', - No_label_provided: 'Sem {{label}}.', - No_Message: 'Não há mensagens', - No_messages_yet: 'Não há mensagens ainda', - No_Reactions: 'Sem reações', - Nothing_to_save: 'Nada para salvar!', - Notify_active_in_this_room: 'Notificar usuários ativos nesta sala', - Notify_all_in_this_room: 'Notificar todos nesta sala', - Notifications: 'Notificações', - Notification_Duration: 'Duração da notificação', - Notification_Preferences: 'Preferências de notificação', - Not_RC_Server: 'Este não é um servidor Rocket.Chat.\n{{contact}}', - No_available_agents_to_transfer: 'Nenhum agente disponível para transferência', - Offline: 'Offline', - Omnichannel: 'Omnichannel', - Open_Livechats: 'Bate-papos em Andamento', - Omnichannel_enable_alert: 'Você não está disponível no Omnichannel. Você quer ficar disponível?', - Oops: 'Ops!', - Onboarding_description: 'Workspace é o espaço de colaboração do seu time ou organização. Peça um convite ou o endereço ao seu administrador ou crie uma workspace para o seu time.', - Onboarding_join_workspace: 'Entre numa workspace', - Onboarding_subtitle: 'Além da colaboração em equipe', - Onboarding_title: 'Bem vindo ao Rocket.Chat', - Onboarding_join_open_description: 'Entre na nossa workspace pública para conversar com o time da Rocket.Chat e nossa comunidade.', - Onboarding_agree_terms: 'Ao continuar, você aceita nossos ', - Onboarding_less_options: 'Menos opções', - Onboarding_more_options: 'Mais opções', - Online: 'Online', - Only_authorized_users_can_write_new_messages: 'Somente usuários autorizados podem escrever novas mensagens', - Open_emoji_selector: 'Abrir seletor de emoji', - Open_Source_Communication: 'Comunicação Open Source', - Open_your_authentication_app_and_enter_the_code: 'Abra seu aplicativo de autenticação e digite o código.', - OR: 'OU', - OS: 'SO', - Overwrites_the_server_configuration_and_use_room_config: 'Substituir a configuração do servidor e usar a configuração da sala', - Password: 'Senha', - Parent_channel_or_group: 'Canal ou grupo pai', - Permalink_copied_to_clipboard: 'Link-permanente copiado para a área de transferência!', - Pin: 'Fixar', - Pinned_Messages: 'Mensagens Fixadas', - pinned: 'fixada', - Pinned: 'Mensagens Fixadas', - Please_wait: 'Por favor, aguarde.', - Please_enter_your_password: 'Por favor, digite sua senha', - Please_add_a_comment: 'Por favor, adicione um comentário', - Preferences: 'Preferências', - Preferences_saved: 'Preferências salvas!', - Privacy_Policy: ' Política de Privacidade', - Private_Channel: 'Canal Privado', - Private_Groups: 'Grupo Privado', - Private: 'Privado', - Processing: 'Processando...', - Profile_saved_successfully: 'Perfil salvo com sucesso!', - Profile: 'Perfil', - Public_Channel: 'Canal Público', - Public: 'Público', - Push_Notifications: 'Notificações Push', - Push_Notifications_Alert_Info: 'Essas notificações são entregues a você quando o aplicativo não está aberto', - Quote: 'Citar', - Reactions_are_disabled: 'Reagir está desabilitado', - Reactions_are_enabled: 'Reagir está habilitado', - Reactions: 'Reações', - Read_External_Permission_Message: 'Rocket.Chat precisa acessar fotos, mídia e arquivos no seu dispositivo', - Read_External_Permission: 'Permissão de acesso à arquivos', - Read_Only_Channel: 'Canal Somente Leitura', - Read_Only: 'Somente Leitura', - Receive_Group_Mentions: 'Receber menções de grupo', - Receive_Group_Mentions_Info: 'Receber menções @all e @here', - Register: 'Registrar', - Read_Receipt: 'Lida por', - Repeat_Password: 'Repetir Senha', - Replied_on: 'Respondido em:', - replies: 'respostas', - reply: 'resposta', - Reply: 'Responder', - Receive_Notification: 'Receber Notificação', - Receive_notifications_from: 'Receber notificação de {{name}}', - Resend: 'Reenviar', - Reset_password: 'Resetar senha', - resetting_password: 'redefinindo senha', - RESET: 'RESETAR', - Return: 'Retornar', - Review_app_title: 'Você está gostando do app?', - Review_app_desc: 'Nos dê 5 estrelas na {{store}}', - Review_app_yes: 'Claro!', - Review_app_no: 'Não', - Review_app_later: 'Talvez depois', - Review_app_unable_store: 'Não foi possível abrir {{store}}', - Review_this_app: 'Avaliar esse app', - Remove: 'Remover', - Roles: 'Papéis', - Room_actions: 'Ações', - Room_changed_announcement: 'O anúncio da sala foi alterado para: {{announcement}} por {{userBy}}', - Room_changed_description: 'A descrição da sala foi alterada para: {{description}} por {{userBy}}', - Room_changed_privacy: 'Tipo da sala mudou para: {{type}} por {{userBy}}', - Room_changed_topic: 'Tópico da sala mudou para: {{topic}} por {{userBy}}', - Room_Files: 'Arquivos', - Room_Info_Edit: 'Editar', - Room_Info: 'Informações da Sala', - Room_Members: 'Membros', - Room_name_changed: 'Nome da sala alterado para: {{name}} por {{userBy}}', - SAVE: 'SALVAR', - Save_Changes: 'Salvar Alterações', - Save: 'Salvar', - saving_preferences: 'salvando preferências', - saving_profile: 'salvando perfil', - saving_settings: 'salvando configurações', - saved_to_gallery: 'Salvo na galeria', - Save_Your_E2E_Password: 'Salve sua senha E2E', - Save_Your_Encryption_Password: 'Salve Sua Senha de Criptografia', - Save_Your_Encryption_Password_warning: 'Esta senha não é armazenada em nenhum lugar, portanto, salve-a com cuidado em outro lugar.', - Save_Your_Encryption_Password_info: 'Observe que se você perder sua senha, não há como recuperá-la e você perderá o acesso às suas mensagens.', - Search_Messages: 'Buscar Mensagens', - Search: 'Buscar', - Search_by: 'Buscar por', - Search_global_users: 'Busca por usuários globais', - Search_global_users_description: 'Caso ativado, busca por usuários de outras empresas ou servidores.', - Security_and_privacy: 'Segurança e privacidade', - Select_Avatar: 'Selecionar Avatar', - Select_Server: 'Selecionar Servidor', - Select_Users: 'Selecionar Usuários', - Select_a_Channel: 'Selecione um canal', - Select_a_Department: 'Selecione um Departamento', - Select_an_option: 'Selecione uma opção', - Select_a_User: 'Selecione um Usuário', - Send: 'Enviar', - Send_audio_message: 'Enviar mensagem de áudio', - Send_crash_report: 'Enviar relatório de erros', - Send_message: 'Enviar mensagem', - Send_me_the_code_again: 'Envie-me o código novamente', - Send_to: 'Enviar para...', - Sent_an_attachment: 'Enviou um anexo', - Server: 'Servidor', - Set_username_subtitle: 'O usuário é utilizado para permitir que você seja mencionado em mensagens', - Settings: 'Configurações', - Settings_succesfully_changed: 'Configurações salvas com sucesso!', - Share: 'Compartilhar', - Share_Link: 'Share Link', - Show_more: 'Mostrar mais..', - Show_Unread_Counter: 'Mostrar contador não lido', - Show_Unread_Counter_Info: 'O contador não lido é exibido como um emblema à direita do canal, na lista', - Sign_in_your_server: 'Entrar no seu servidor', - Sign_Up: 'Registrar', - Some_field_is_invalid_or_empty: 'Algum campo está inválido ou vazio', - Sorting_by: 'Ordenando por {{key}}', - Sound: 'Som da notificação', - Star_room: 'Favoritar sala', - Star: 'Favorito', - Starred_Messages: 'Mensagens Favoritas', - starred: 'favoritou', - Starred: 'Mensagens Favoritas', - Start_of_conversation: 'Início da conversa', - Started_call: 'Chamada iniciada por {{userBy}}', - Started_discussion: 'Iniciou uma discussão:', - Submit: 'Enviar', - Table: 'Tabela', - Take_a_photo: 'Tirar uma foto', - Take_a_video: 'Gravar um vídeo', - Terms_of_Service: ' Termos de Serviço ', - Theme: 'Tema', - The_user_wont_be_able_to_type_in_roomName: 'O usuário não poderá digitar em {{roomName}}', - The_user_will_be_able_to_type_in_roomName: 'O usuário poderá digitar em {{roomName}}', - There_was_an_error_while_action: 'Aconteceu um erro {{action}}!', - This_room_is_blocked: 'Este quarto está bloqueado', - This_room_is_read_only: 'Este quarto é apenas de leitura', - Thread: 'Tópico', - Threads: 'Tópicos', - Timezone: 'Fuso horário', - To: 'Para', - topic: 'tópico', - Topic: 'Tópico', - Try_again: 'Tentar novamente', - Two_Factor_Authentication: 'Autenticação de dois fatores', - Type_the_channel_name_here: 'Digite o nome do canal', - unarchive: 'desarquivar', - UNARCHIVE: 'DESARQUIVAR', - Unblock_user: 'Desbloquear usuário', - Unfollowed_thread: 'Parou de seguir tópico', - Unmute: 'Permitir que o usuário fale', - unmuted: 'permitiu que o usuário fale', - Unpin: 'Desafixar Mensagem', - unread_messages: 'não lidas', - Unread: 'Não lidas', - Unread_on_top: 'Não lidas no topo', - Unstar: 'Remover favorito', - Updating: 'Atualizando...', - Uploading: 'Subindo arquivo', - Upload_file_question_mark: 'Enviar arquivo?', - User: 'Usuário', - Users: 'Usuários', - User_added_by: 'Usuário {{userAdded}} adicionado por {{userBy}}', - User_has_been_key: 'Usuário foi {{key}}', - User_is_no_longer_role_by_: '{{user}} não pertence mais à {{role}} por {{userBy}}', - User_muted_by: 'User {{userMuted}} muted por {{userBy}}', - User_removed_by: 'Usuário {{userRemoved}} removido por {{userBy}}', - User_sent_an_attachment: '{{user}} enviou um anexo', - User_unmuted_by: '{{userBy}} permitiu que {{userUnmuted}} fale na sala', - User_was_set_role_by_: '{{user}} foi definido como {{role}} por {{userBy}}', - Username_is_empty: 'Usuário está vazio', - Username: 'Usuário', - Username_or_email: 'Usuário ou email', - Uses_server_configuration: 'Usar configuração do servidor', - Verify: 'Verificar', - Verify_email_title: 'Registrado com sucesso!', - Verify_email_desc: 'Nós lhe enviamos um e-mail para confirmar o seu registro. Se você não receber um e-mail em breve, por favor retorne e tente novamente.', - Verify_your_email_for_the_code_we_sent: 'Verifique em seu e-mail o código que enviamos', - Video_call: 'Chamada de vídeo', - Voice_call: 'Chamada de voz', - Waiting_for_network: 'Aguardando rede...', - Websocket_disabled: 'Websocket está desativado para esse servidor.\n{{contact}}', - Welcome: 'Bem vindo', - Whats_your_2fa: 'Qual seu código de autenticação?', - What_are_you_doing_right_now: 'O que você está fazendo agora?', - Without_Servers: 'Sem Servidores', - Workspaces: 'Workspaces', - Yes_action_it: 'Sim, {{action}}!', - Yesterday: 'Ontem', - You_are_in_preview_mode: 'Está é uma prévia do canal', - You_are_offline: 'Você está offline', - You_can_search_using_RegExp_eg: 'Você pode usar expressões regulares, por exemplo `/^text$/i`', - You_need_to_verifiy_your_email_address_to_get_notications: 'Você precisa confirmar seu endereço de e-mail para obter notificações', - You_colon: 'Você: ', - you_were_mentioned: 'você foi mencionado', - You_were_removed_from_channel: 'Você foi removido de {{channel}}', - you: 'você', - You: 'Você', - Your_invite_link_will_expire_after__usesLeft__uses: 'Seu link de convite irá vencer depois de {{usesLeft}} usos.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Seu link de convite irá vencer em {{date}} ou depois de {{usesLeft}} usos.', - Your_invite_link_will_expire_on__date__: 'Seu link de convite irá vencer em {{date}}.', - Your_invite_link_will_never_expire: 'Seu link de convite nunca irá vencer.', - Your_workspace: 'Sua workspace', - You_will_not_be_able_to_recover_this_message: 'Você não será capaz de recuperar essa mensagem!', - You_will_unset_a_certificate_for_this_server: 'Você cancelará a configuração de um certificado para este servidor', - Would_you_like_to_return_the_inquiry: 'Deseja retornar a consulta?', - Write_External_Permission_Message: 'Rocket.Chat precisa de acesso à sua galeria para salvar imagens', - Write_External_Permission: 'Acesso à Galeria', - Yes: 'Sim', - Crash_report_disclaimer: 'Nós não rastreamos o conteúdo das suas conversas. O relatório de erros e os eventos do analytics apenas contém informações relevantes para identificarmos problemas e corrigí-los.', - Type_message: 'Digitar mensagem', - Room_search: 'Busca de sala', - Room_selection: 'Selecionar sala 1...9', - Next_room: 'Próxima sala', - Previous_room: 'Sala anterior', - New_room: 'Nova sala', - Upload_room: 'Enviar arquivo', - Search_messages: 'Buscar mensagens', - Scroll_messages: 'Rolar mensagens', - Reply_latest: 'Responder para última mensagem', - Server_selection: 'Seleção de servidor', - Server_selection_numbers: 'Selecionar servidor 1...9', - Add_server: 'Adicionar servidor', - New_line: 'Nova linha', - You_will_be_logged_out_of_this_application: 'Você sairá deste aplicativo.', - Clear: 'Limpar', - This_will_clear_all_your_offline_data: 'Isto limpará todos os seus dados offline.', - This_will_remove_all_data_from_this_server: 'Isto removerá todos os dados desse servidor.', - Mark_unread: 'Marcar como não Lida', - Wait_activation_warning: 'Antes que você possa fazer o login, sua conta deve ser manualmente ativada por um administrador.', - Screen_lock: 'Bloqueio de Tela', - Local_authentication_biometry_title: 'Autenticar', - Local_authentication_biometry_fallback: 'Usar senha', - Local_authentication_unlock_option: 'Desbloquear com senha', - Local_authentication_change_passcode: 'Alterar senha', - Local_authentication_info: 'Nota: se você esquecer sua senha, terá de apagar e reinstalar o app.', - Local_authentication_facial_recognition: 'reconhecimento facial', - Local_authentication_fingerprint: 'impressão digital', - Local_authentication_unlock_with_label: 'Desbloquear com {{label}}', - Local_authentication_auto_lock_60: 'Após 1 minuto', - Local_authentication_auto_lock_300: 'Após 5 minutos', - Local_authentication_auto_lock_900: 'Após 15 minutos', - Local_authentication_auto_lock_1800: 'Após 30 minutos', - Local_authentication_auto_lock_3600: 'Após 1 hora', - Passcode_enter_title: 'Digite sua senha', - Passcode_choose_title: 'Insira sua nova senha', - Passcode_choose_confirm_title: 'Confirme sua nova senha', - Passcode_choose_error: 'As senhas não coincidem. Tente novamente.', - Passcode_choose_force_set: 'Senha foi exigida pelo admin', - Passcode_app_locked_title: 'Aplicativo bloqueado', - Passcode_app_locked_subtitle: 'Tente novamente em {{timeLeft}} segundos', - After_seconds_set_by_admin: 'Após {{seconds}} segundos (Configurado pelo adm)', - Dont_activate: 'Não ativar agora', - Queued_chats: 'Bate-papos na fila', - Queue_is_empty: 'A fila está vazia', - Logout_from_other_logged_in_locations: 'Sair de outros locais logados', - You_will_be_logged_out_from_other_locations: 'Você perderá a sessão de outros clientes', - Logged_out_of_other_clients_successfully: 'Desconectado de outros clientes com sucesso', - Logout_failed: 'Falha ao desconectar!', - Log_analytics_events: 'Logar eventos no analytics', - E2E_encryption_change_password_title: 'Alterar Senha de Criptografia', - E2E_encryption_change_password_description: 'Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar os grupos privados ou DMs existentes para criptografados. Esta é uma criptografia de ponta a ponta, logo a chave para codificar / decodificar suas mensagens não será salva no servidor. Por esse motivo, você precisa armazenar sua senha em algum lugar seguro. Será solicitada a inserção de senha em outros dispositivos nos quais deseja usar a criptografia E2E.', - E2E_encryption_change_password_error: 'Erro ao alterar senha de criptografia!', - E2E_encryption_change_password_success: 'Senha de criptografia alterada com sucesso!', - E2E_encryption_change_password_message: 'Certifique-se de tê-la guardado em local seguro.', - E2E_encryption_change_password_confirmation: 'Sim, alterar', - E2E_encryption_reset_title: 'Redefinir Chave de Criptografia', - E2E_encryption_reset_description: 'Essa opção irá remover a chave de criptografia corrente e desconectá-lo. \nQuando você se conectar novamente, uma nova chave será gerada e restaurará acesso a qualquer canal com uma ou mais pessoas online. \nDevico à natureza da criptografia ponta a ponta, não será possível restaurar acesso a canais sem membros online.', - E2E_encryption_reset_button: 'Redefinir', - E2E_encryption_reset_error: 'Erro ao redefinir chave!', - E2E_encryption_reset_message: 'Você será desconectado.', - E2E_encryption_reset_confirmation: 'Sim, redefinir', - Following: 'Seguindo', - Threads_displaying_all: 'Mostrando Tudo', - Threads_displaying_following: 'Mostrando Seguindo', - Threads_displaying_unread: 'Mostrando Não Lidos', - No_threads: 'Não há tópicos', - No_threads_following: 'Você não está seguindo tópicos', - No_threads_unread: 'Não há tópicos não lidos', - Messagebox_Send_to_channel: 'Mostrar no canal', - Set_as_leader: 'Definir como líder', - Set_as_moderator: 'Definir como moderador', - Set_as_owner: 'Definir como proprietário', - Remove_as_leader: 'Remover como líder', - Remove_as_moderator: 'Remover como moderador', - Remove_as_owner: 'Remover como owner', - Remove_from_room: 'Remover do canal', - Ignore: 'Ignorar', - Unignore: 'Deixar de ignorar', - User_has_been_ignored: 'Usuário foi ignorado', - User_has_been_unignored: 'O usuário não é mais ignorado', - User_has_been_removed_from_s: 'Usuário foi removido de {{s}}', - User__username__is_now_a_leader_of__room_name_: 'O usuário {{username}} agora é líder de {{room_name}}', - User__username__is_now_a_moderator_of__room_name_: 'O usuário {{username}} agora é moderador de {{room_name}}', - User__username__is_now_a_owner_of__room_name_: 'O usuário {{username}} agora é proprietário de {{room_name}}', - User__username__removed_from__room_name__leaders: 'O usuário {{username}} foi removido dos líderes de {{room_name}}', - User__username__removed_from__room_name__moderators: 'O usuário {{username}} foi removido dos moderadores de {{room_name}}', - User__username__removed_from__room_name__owners: 'O usuário {{username}} foi removido dos proprietários de {{room_name}}', - The_user_will_be_removed_from_s: 'O usuário será removido de {{s}}', - Yes_remove_user: 'Sim, remover usuário!', - Direct_message: 'Mensagem direta', - Message_Ignored: 'Mensagem ignorada. Toque para mostrar.', - Enter_workspace_URL: 'Digite a URL da sua workspace', - Workspace_URL_Example: 'Ex. sua-empresa.rocket.chat', - This_room_encryption_has_been_enabled_by__username_: 'A criptografia para essa sala foi habilitada por {{username}}', - This_room_encryption_has_been_disabled_by__username_: 'A criptografia para essa sala foi desabilitada por {{username}}' -}; diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json new file mode 100644 index 00000000000..b4e2c8a7fb0 --- /dev/null +++ b/app/i18n/locales/pt-BR.json @@ -0,0 +1,657 @@ +{ + "1_person_reacted": "1 pessoa reagiu", + "1_user": "1 usuário", + "error-action-not-allowed": "{{action}} não é permitido", + "error-application-not-found": "Aplicação não encontrada", + "error-archived-duplicate-name": "Já há um canal arquivado com o nome {{room_name}}", + "error-avatar-invalid-url": "URL inválida de avatar: {{url}}", + "error-avatar-url-handling": "Erro durante o manuseio configuração avatar a partir de uma URL ({{url}}) para {{username}}", + "error-cant-invite-for-direct-room": "Não é possível convidar usuários para salas diretas", + "error-could-not-change-email": "Não foi possível mudar e-mail", + "error-could-not-change-name": "Não foi possível mudar o nome", + "error-could-not-change-username": "Não foi possível alterar o nome de usuário", + "error-delete-protected-role": "Não é possível remover um papel protegido", + "error-department-not-found": "Departamento não encontrado", + "error-direct-message-file-upload-not-allowed": "Compartilhamento de arquivos não está permitido em mensagens diretas", + "error-duplicate-channel-name": "Já existe um canal com nome {{channel_name}}", + "error-email-domain-blacklisted": "O domínio de e-mail está na lista negra", + "error-email-send-failed": "Erro ao tentar enviar e-mail: {{message}}", + "error-save-image": "Erro ao salvar imagem", + "error-field-unavailable": "{{field}} já está sendo usado :(", + "error-file-too-large": "Arquivo é muito grande", + "error-importer-not-defined": "O importador não foi definido corretamente; está faltando a classe Import.", + "error-input-is-not-a-valid-field": "{{input}} não é válido um {{field}}", + "error-invalid-actionlink": "Link de ação inválido", + "error-invalid-arguments": "Argumentos inválidos", + "error-invalid-asset": "Arquivo Inválido", + "error-invalid-channel": "Canal inválido.", + "error-invalid-channel-start-with-chars": "Canal inválido. Comece com @ ou #", + "error-invalid-custom-field": "Campo personalizado inválido", + "error-invalid-custom-field-name": "Nome inválido para o campo personalizado. Use apenas letras, números, hífens e underscores.", + "error-invalid-date": "Data fornecida inválida", + "error-invalid-description": "Descrição inválida", + "error-invalid-domain": "Domínio inválido", + "error-invalid-email": "{{email}} não é um e-mail válido", + "error-invalid-email-address": "Endereço de e-mail inválido", + "error-invalid-file-height": "Altura de arquivo inválida", + "error-invalid-file-type": "Tipo de arquivo inválido", + "error-invalid-file-width": "Altura de arquivo inválida", + "error-invalid-from-address": "Você informou um e-mail DE inválido.", + "error-invalid-integration": "Integração inválida", + "error-invalid-message": "Mensagem inválida", + "error-invalid-method": "Método inválido", + "error-invalid-name": "Nome inválido", + "error-invalid-password": "Senha inválida", + "error-invalid-redirectUri": "redirectUri inválido", + "error-invalid-role": "Papel inválido", + "error-invalid-room": "Sala inválida", + "error-invalid-room-name": "{{room_name}} não é um nome de sala válido", + "error-invalid-room-type": "{{type}} não é um tipo de sala válido.", + "error-invalid-settings": "Configurações fornecidas inválidas", + "error-invalid-subscription": "Assinatura inválida", + "error-invalid-token": "Token inválido", + "error-invalid-triggerWords": "triggerWords inválidos", + "error-invalid-urls": "URLs inválidas", + "error-invalid-user": "Usuário inválido", + "error-invalid-username": "Nome de usuário Inválido", + "error-invalid-webhook-response": "O URL do webhook respondeu com um status diferente de 200", + "error-message-deleting-blocked": "Exclusão de mensagens está bloqueada", + "error-message-editing-blocked": "Edição de mensagens está bloqueada", + "error-message-size-exceeded": "O tamanho da mensagem excede Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "Você deve fornecer o link para desinscrever-se: [unsubscribe].", + "error-no-tokens-for-this-user": "Não existem tokens para este usuário", + "error-not-allowed": "Não permitido", + "error-not-authorized": "Não autorizado", + "error-password-policy-not-met": "A senha não atende a política do servidor", + "error-password-policy-not-met-maxLength": "A senha não está de acordo com a política de comprimento máximo do servidor (senha muito longa)", + "error-password-policy-not-met-minLength": "A senha não está de acordo com a política de comprimento mínimo do servidor (senha muito curta)", + "error-password-policy-not-met-oneLowercase": "A senha não está de acordo com a política do servidor de pelo menos um caractere minúsculo.", + "error-password-policy-not-met-oneNumber": "A senha não está de acordo com a política do servidor, de pelo menos um caractere numérico.", + "error-password-policy-not-met-oneSpecial": "A senha não está de acordo com a política do servidor, de pelo menos um caractere especial.", + "error-password-policy-not-met-oneUppercase": "A senha não está de acordo com a política do servidor, de pelo menos um caractere maiúsculo.", + "error-password-policy-not-met-repeatingCharacters": "A senha não está de acordo com a política do servidor, relativamente aos caracteres proibidos repetidos (existem vários caracteres proibidos próximos uns dos outros)", + "error-push-disabled": "Notificações push desativadas", + "error-remove-last-owner": "Este é o último proprietário. Por favor, defina um novo proprietário antes de remover este.", + "error-role-in-use": "Não é possível remover o papel pois ele está em uso", + "error-role-name-required": "Nome do papel é obrigatório", + "error-the-field-is-required": "O campo {{field}} é obrigatório.", + "error-too-many-requests": "Erro, muitas solicitações. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.", + "error-user-has-no-roles": "O usuário não possui permissões", + "error-user-is-not-activated": "O usuário não está ativo", + "error-user-limit-exceeded": "O número de usuários que você está tentando convidar para #channel_name excede o limite determindado pelo administrador", + "error-user-not-in-room": "O usuário não está nesta sala", + "error-user-registration-disabled": "O registro do usuário está desativado", + "error-user-registration-secret": "O registro de usuário é permitido somente via URL secreta", + "error-you-are-last-owner": "Você é o último proprietário da sala. Por favor defina um novo proprietário antes de sair.", + "Actions": "Ações", + "activity": "atividade", + "Activity": "Atividade", + "Add_Reaction": "Reagir", + "Add_Server": "Adicionar servidor", + "Add_users": "Adicionar usuário", + "Agent": "Agente", + "Alert": "Alerta", + "alert": "alerta", + "alerts": "alertas", + "All_users_in_the_channel_can_write_new_messages": "Todos usuários no canal podem enviar mensagens novas", + "A_meaningful_name_for_the_discussion_room": "Um nome significativo para o canal de discussão", + "All": "Todos", + "Allow_Reactions": "Permitir reagir", + "Alphabetical": "Alfabético", + "and_more": "e mais", + "and": "e", + "announcement": "anúncio", + "Announcement": "Anúncio", + "ARCHIVE": "ARQUIVAR", + "archive": "arquivar", + "are_typing": "estão digitando", + "Are_you_sure_question_mark": "Você tem certeza?", + "Are_you_sure_you_want_to_leave_the_room": "Tem certeza de que deseja sair da sala {{room}}?", + "Audio": "Áudio", + "Authenticating": "Autenticando", + "Automatic": "Automático", + "Auto_Translate": "Tradução automática", + "Avatar_changed_successfully": "Avatar alterado com sucesso!", + "Avatar_Url": "Avatar URL", + "Away": "Ausente", + "Back": "Voltar", + "Black": "Preto", + "Block_user": "Bloquear usuário", + "Browser": "Navegador", + "Broadcast_channel_Description": "Somente usuários autorizados podem escrever novas mensagens, mas os outros usuários poderão responder", + "Broadcast_Channel": "Canal de Transmissão", + "Busy": "Ocupado", + "By_proceeding_you_are_agreeing": "Ao prosseguir você está aceitando", + "Cancel_editing": "Cancelar edição", + "Cancel_recording": "Cancelar gravação", + "Cancel": "Cancelar", + "changing_avatar": "trocando avatar", + "creating_channel": "criando canal", + "creating_invite": "criando convite", + "Channel_Name": "Nome do Canal", + "Channels": "Canais", + "Chats": "Conversas", + "Change_Language": "Alterar idioma", + "Change_language_loading": "Alterando idioma.", + "Call_already_ended": "A chamada já terminou!", + "Clear_cache_loading": "Limpando cache.", + "Clear_cookies_alert": "Você quer limpar seus cookies?", + "Clear_cookies_desc": "Esta ação limpará todos os cookies de login permitindo que você faça login em outras contas.", + "Clear_cookies_yes": "Sim, limpar cookies", + "Clear_cookies_no": "Não, manter cookies", + "Click_to_join": "Clique para participar!", + "Close": "Fechar", + "Close_emoji_selector": "Fechar seletor de emojis", + "Closing_chat": "Fechando conversa", + "Choose": "Escolher", + "Chat_closed_by_agent": "Conversa fechada por agente", + "Choose_from_library": "Escolha da biblioteca", + "Choose_file": "Enviar arquivo", + "Choose_where_you_want_links_be_opened": "Escolha onde deseja que os links sejam abertos", + "Code": "Código", + "Code_or_password_invalid": "Código ou senha inválido", + "Collaborative": "Colaborativo", + "Confirm": "Confirmar", + "Connect": "Conectar", + "Connected": "Conectado", + "Conversation": "Conversação", + "connecting_server": "conectando no servidor", + "Connecting": "Conectando...", + "Contact_us": "Entre em contato", + "Continue_with": "Entrar com", + "Contact_your_server_admin": "Contate o administrador do servidor.", + "Copied_to_clipboard": "Copiado para a área de transferência!", + "Copy": "Copiar", + "Permalink": "Link-Permanente", + "Create_account": "Criar conta", + "Create_Channel": "Criar Canal", + "Create_Direct_Messages": "Criar Mensagens Diretas", + "Create_Discussion": "Criar Discussão", + "Created_snippet": "criou um snippet", + "Create_a_new_workspace": "Criar nova área de trabalho", + "Create": "Criar", + "Dark": "Escuro", + "Dark_level": "Nível escuro", + "Default_browser": "Navegador padrão", + "Delete_Room_Warning": "A exclusão de uma sala irá apagar todas as mensagens postadas na sala. Isso não pode ser desfeito.", + "delete": "excluir", + "Delete": "Excluir", + "DELETE": "EXCLUIR", + "deleting_room": "excluindo sala", + "Direct_Messages": "Mensagens Diretas", + "Desktop_Options": "Opções De Área De Trabalho", + "Desktop_Notifications": "Notificações da Área de Trabalho", + "Desktop_Alert_info": "Essas notificações são entregues a você na área de trabalho", + "Directory": "Diretório", + "description": "descrição", + "Description": "Descrição", + "Disable_notifications": "Desabilitar notificações", + "Discussions": "Discussões", + "Discussion_Desc": "Ajude a manter uma visão geral sobre o que está acontecendo! Ao criar uma discussão, um sub-canal do que você selecionou é criado e os dois são vinculados.", + "Discussion_name": "Nome da discussão", + "Done": "Pronto", + "Dont_Have_An_Account": "Não tem uma conta?", + "Do_you_have_an_account": "Você tem uma conta?", + "Do_you_really_want_to_key_this_room_question_mark": "Você quer realmente {{key}} esta sala?", + "E2E_Encryption": "Encriptação ponta a ponta", + "E2E_How_It_Works_info1": "Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar grupos privados existentes ou DMs para criptografados.", + "E2E_How_It_Works_info2": "Esta é a criptografia *ponta a ponta*, portanto, a chave para codificar/decodificar suas mensagens e elas não serão salvas no servidor. Por esse motivo *você precisa armazenar esta senha em algum lugar seguro* que você pode acessar mais tarde se precisar.", + "E2E_How_It_Works_info3": "Se você continuar, será gerada automaticamente uma senha E2E.", + "E2E_How_It_Works_info4": "Você também pode configurar uma nova senha para sua chave de criptografia a qualquer momento em qualquer navegador em que tenha inserido a senha E2E existente.", + "edit": "editar", + "edited": "editado", + "Edit": "Editar", + "Edit_Invite": "Editar convite", + "Edit_Status": "Editar Status", + "End_to_end_encrypted_room": "Sala criptografada de ponta a ponta", + "end_to_end_encryption": "criptografia de ponta a ponta", + "Email_or_password_field_is_empty": "Email ou senha estão vazios", + "Email": "E-mail", + "email": "e-mail", + "Empty_title": "Título vazio", + "Email_Notification_Mode_All": "Cada Menção / Mensagem Direta", + "Email_Notification_Mode_Disabled": "Desativado", + "Enable_Auto_Translate": "Ativar a tradução automática", + "Enable_notifications": "Habilitar notificações", + "Encrypted": "Criptografado", + "Encrypted_message": "Mensagem criptografada", + "Enter_Your_E2E_Password": "Digite Sua Senha E2E", + "Enter_Your_Encryption_Password_desc1": "Isso permitirá que você acesse seus grupos privados e mensagens diretas criptografadas.", + "Enter_Your_Encryption_Password_desc2": "Você precisa inserir a senha para codificar/decodificar mensagens em todos os lugares em que usar o chat.", + "Encryption_error_title": "Sua senha de criptografia parece errada", + "Encryption_error_desc": "Não foi possível decodificar sua chave de criptografia para ser importada.", + "Everyone_can_access_this_channel": "Todos podem acessar este canal", + "Error_uploading": "Erro subindo", + "Expiration_Days": "Expira em (dias)", + "Favorites": "Favoritos", + "Files": "Arquivos", + "File_description": "Descrição do arquivo", + "File_name": "Nome do arquivo", + "Finish_recording": "Encerrar gravação", + "Following_thread": "Começou a seguir tópico", + "For_your_security_you_must_enter_your_current_password_to_continue": "Para sua segurança, você precisa digitar sua senha", + "Forgot_password_If_this_email_is_registered": "Se este e-mail estiver cadastrado, enviaremos instruções sobre como redefinir sua senha. Se você não receber um e-mail em breve, volte e tente novamente.", + "Forgot_password": "Esqueceu sua senha?", + "Forgot_Password": "Esqueci minha senha", + "Forward": "Encaminhar", + "Forward_Chat": "Encaminhar Conversa", + "Forward_to_department": "Encaminhar para departamento", + "Forward_to_user": "Encaminhar para usuário", + "Full_table": "Clique para ver a tabela completa", + "Generate_New_Link": "Gerar novo convite", + "Group_by_favorites": "Agrupar favoritos", + "Group_by_type": "Agrupar por tipo", + "Has_joined_the_channel": "entrou no canal", + "Has_joined_the_conversation": "entrou na conversa", + "Has_left_the_channel": "saiu da conversa", + "Hide_System_Messages": "Esconder mensagens do sistema", + "Hide_type_messages": "Esconder mensagens de \"{{type}}\"", + "Message_HideType_uj": "Utilizador Entrou", + "Message_HideType_ul": "Utilizador Saiu", + "Message_HideType_ru": "Utilizador Removido", + "Message_HideType_au": "Utilizador adicionado", + "Message_HideType_mute_unmute": "Utilizador Silenciado", + "Message_HideType_r": "Nome da sala alterado", + "Message_HideType_ut": "Utilizador adicionado ao bate-papo", + "Message_HideType_wm": "Bem Vindo", + "Message_HideType_rm": "Mensagem Removida", + "Message_HideType_subscription_role_added": "Papel atribuído", + "Message_HideType_subscription_role_removed": "Papel removido", + "Message_HideType_room_archived": "Sala arquivada", + "Message_HideType_room_unarchived": "Sala desarquivada", + "IP": "IP", + "In_app": "No app", + "In_App_and_Desktop_Alert_info": "Exibe um banner na parte superior da tela quando o aplicativo é aberto e exibe uma notificação na área de trabalho", + "Invisible": "Invisível", + "Invite": "Convidar", + "is_typing": "está digitando", + "Invalid_or_expired_invite_token": "Token de convite inválido ou vencido", + "Invalid_server_version": "O servidor que você está conectando não é suportado mais por esta versão do aplicativo: {{currentVersion}}.\n\nEsta versão do aplicativo requer a versão {{minVersion}} do servidor para funcionar corretamente.", + "Invite_Link": "Link de Convite", + "Invite_users": "Convidar usuários", + "Join": "Entrar", + "Join_Code": "Insira o Código da Sala", + "Insert_Join_Code": "Insira o código para entrar na sala", + "Join_our_open_workspace": "Entra na nossa workspace pública", + "Join_your_workspace": "Entre na sua workspace", + "Just_invited_people_can_access_this_channel": "Apenas as pessoas convidadas podem acessar este canal", + "Language": "Idioma", + "last_message": "última mensagem", + "Leave_channel": "Sair do canal", + "leaving_room": "saindo do canal", + "leave": "sair", + "Legal": "Legal", + "Light": "Claro", + "Livechat": "Livechat", + "Login": "Entrar", + "Login_error": "Suas credenciais foram rejeitadas. Tente novamente por favor!", + "Login_with": "Login with", + "Logout": "Sair", + "Logging_out": "Saindo.", + "Max_number_of_uses": "Número máximo de usos", + "Max_number_of_users_allowed_is_number": "Número máximo de usuários é {{maxUsers}}", + "Members": "Membros", + "Mentioned_Messages": "Mensagens mencionadas", + "mentioned": "mencionado", + "Mentions": "Menções", + "Message_accessibility": "Mensagem de {{user}} às {{time}}: {{message}}", + "Message_actions": "Ações", + "Message_pinned": "Fixou uma mensagem", + "Message_removed": "Mensagem removida", + "message": "mensagem", + "messages": "mensagens", + "Messages": "Mensagens", + "Microphone_Permission_Message": "Rocket.Chat precisa de acesso ao seu microfone para enviar mensagens de áudio.", + "Microphone_Permission": "Acesso ao Microfone", + "Mute": "Mudo", + "muted": "mudo", + "N_people_reacted": "{{n}} pessoas reagiram", + "N_users": "{{n}} usuários", + "name": "nome", + "Name": "Nome", + "Navigation_history": "Histórico de navegação", + "Never": "Nunca", + "New_in_RocketChat_question_mark": "Novo no Rocket.Chat?", + "New_Message": "Nova Mensagem", + "New_Password": "Nova Senha", + "Next": "Próximo", + "No_files": "Não há arquivos", + "No_limit": "Sem limite", + "No_mentioned_messages": "Não há menções", + "No_pinned_messages": "Não há mensagens fixadas", + "No_results_found": "Nenhum resultado encontrado", + "No_starred_messages": "Não há mensagens favoritas", + "No_thread_messages": "Não há tópicos", + "No_label_provided": "Sem {{label}}.", + "No_Message": "Não há mensagens", + "No_messages_yet": "Não há mensagens ainda", + "No_Reactions": "Sem reações", + "Nothing_to_save": "Nada para salvar!", + "Notify_active_in_this_room": "Notificar usuários ativos nesta sala", + "Notify_all_in_this_room": "Notificar todos nesta sala", + "Notifications": "Notificações", + "Notification_Duration": "Duração da notificação", + "Notification_Preferences": "Preferências de notificação", + "Not_RC_Server": "Este não é um servidor Rocket.Chat.\n{{contact}}", + "No_available_agents_to_transfer": "Nenhum agente disponível para transferência", + "Offline": "Offline", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Bate-papos em Andamento", + "Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você quer ficar disponível?", + "Oops": "Ops!", + "Onboarding_description": "Workspace é o espaço de colaboração do seu time ou organização. Peça um convite ou o endereço ao seu administrador ou crie uma workspace para o seu time.", + "Onboarding_join_workspace": "Entre numa workspace", + "Onboarding_subtitle": "Além da colaboração em equipe", + "Onboarding_title": "Bem vindo ao Rocket.Chat", + "Onboarding_join_open_description": "Entre na nossa workspace pública para conversar com o time da Rocket.Chat e nossa comunidade.", + "Onboarding_agree_terms": "Ao continuar, você aceita nossos ", + "Onboarding_less_options": "Menos opções", + "Onboarding_more_options": "Mais opções", + "Online": "Online", + "Only_authorized_users_can_write_new_messages": "Somente usuários autorizados podem escrever novas mensagens", + "Open_emoji_selector": "Abrir seletor de emoji", + "Open_Source_Communication": "Comunicação Open Source", + "Open_your_authentication_app_and_enter_the_code": "Abra seu aplicativo de autenticação e digite o código.", + "OR": "OU", + "OS": "SO", + "Overwrites_the_server_configuration_and_use_room_config": "Substituir a configuração do servidor e usar a configuração da sala", + "Password": "Senha", + "Parent_channel_or_group": "Canal ou grupo pai", + "Permalink_copied_to_clipboard": "Link-permanente copiado para a área de transferência!", + "Pin": "Fixar", + "Pinned_Messages": "Mensagens Fixadas", + "pinned": "fixada", + "Pinned": "Mensagens Fixadas", + "Please_wait": "Por favor, aguarde.", + "Please_enter_your_password": "Por favor, digite sua senha", + "Please_add_a_comment": "Por favor, adicione um comentário", + "Preferences": "Preferências", + "Preferences_saved": "Preferências salvas!", + "Privacy_Policy": " Política de Privacidade", + "Private_Channel": "Canal Privado", + "Private_Groups": "Grupo Privado", + "Private": "Privado", + "Processing": "Processando...", + "Profile_saved_successfully": "Perfil salvo com sucesso!", + "Profile": "Perfil", + "Public_Channel": "Canal Público", + "Public": "Público", + "Push_Notifications": "Notificações Push", + "Push_Notifications_Alert_Info": "Essas notificações são entregues a você quando o aplicativo não está aberto", + "Quote": "Citar", + "Reactions_are_disabled": "Reagir está desabilitado", + "Reactions_are_enabled": "Reagir está habilitado", + "Reactions": "Reações", + "Read_External_Permission_Message": "Rocket.Chat precisa acessar fotos, mídia e arquivos no seu dispositivo", + "Read_External_Permission": "Permissão de acesso à arquivos", + "Read_Only_Channel": "Canal Somente Leitura", + "Read_Only": "Somente Leitura", + "Receive_Group_Mentions": "Receber menções de grupo", + "Receive_Group_Mentions_Info": "Receber menções @all e @here", + "Register": "Registrar", + "Read_Receipt": "Lida por", + "Repeat_Password": "Repetir Senha", + "Replied_on": "Respondido em:", + "replies": "respostas", + "reply": "resposta", + "Reply": "Responder", + "Receive_Notification": "Receber Notificação", + "Receive_notifications_from": "Receber notificação de {{name}}", + "Resend": "Reenviar", + "Reset_password": "Resetar senha", + "resetting_password": "redefinindo senha", + "RESET": "RESETAR", + "Return": "Retornar", + "Review_app_title": "Você está gostando do app?", + "Review_app_desc": "Nos dê 5 estrelas na {{store}}", + "Review_app_yes": "Claro!", + "Review_app_no": "Não", + "Review_app_later": "Talvez depois", + "Review_app_unable_store": "Não foi possível abrir {{store}}", + "Review_this_app": "Avaliar esse app", + "Remove": "Remover", + "Roles": "Papéis", + "Room_actions": "Ações", + "Room_changed_announcement": "O anúncio da sala foi alterado para: {{announcement}} por {{userBy}}", + "Room_changed_description": "A descrição da sala foi alterada para: {{description}} por {{userBy}}", + "Room_changed_privacy": "Tipo da sala mudou para: {{type}} por {{userBy}}", + "Room_changed_topic": "Tópico da sala mudou para: {{topic}} por {{userBy}}", + "Room_Files": "Arquivos", + "Room_Info_Edit": "Editar", + "Room_Info": "Informações da Sala", + "Room_Members": "Membros", + "Room_name_changed": "Nome da sala alterado para: {{name}} por {{userBy}}", + "SAVE": "SALVAR", + "Save_Changes": "Salvar Alterações", + "Save": "Salvar", + "saving_preferences": "salvando preferências", + "saving_profile": "salvando perfil", + "saving_settings": "salvando configurações", + "saved_to_gallery": "Salvo na galeria", + "Save_Your_E2E_Password": "Salve sua senha E2E", + "Save_Your_Encryption_Password": "Salve Sua Senha de Criptografia", + "Save_Your_Encryption_Password_warning": "Esta senha não é armazenada em nenhum lugar, portanto, salve-a com cuidado em outro lugar.", + "Save_Your_Encryption_Password_info": "Observe que se você perder sua senha, não há como recuperá-la e você perderá o acesso às suas mensagens.", + "Search_Messages": "Buscar Mensagens", + "Search": "Buscar", + "Search_by": "Buscar por", + "Search_global_users": "Busca por usuários globais", + "Search_global_users_description": "Caso ativado, busca por usuários de outras empresas ou servidores.", + "Security_and_privacy": "Segurança e privacidade", + "Select_Avatar": "Selecionar Avatar", + "Select_Server": "Selecionar Servidor", + "Select_Users": "Selecionar Usuários", + "Select_a_Channel": "Selecione um canal", + "Select_a_Department": "Selecione um Departamento", + "Select_an_option": "Selecione uma opção", + "Select_a_User": "Selecione um Usuário", + "Send": "Enviar", + "Send_audio_message": "Enviar mensagem de áudio", + "Send_crash_report": "Enviar relatório de erros", + "Send_message": "Enviar mensagem", + "Send_me_the_code_again": "Envie-me o código novamente", + "Send_to": "Enviar para...", + "Sent_an_attachment": "Enviou um anexo", + "Server": "Servidor", + "Set_username_subtitle": "O usuário é utilizado para permitir que você seja mencionado em mensagens", + "Settings": "Configurações", + "Settings_succesfully_changed": "Configurações salvas com sucesso!", + "Share": "Compartilhar", + "Share_Link": "Share Link", + "Show_more": "Mostrar mais..", + "Show_Unread_Counter": "Mostrar contador não lido", + "Show_Unread_Counter_Info": "O contador não lido é exibido como um emblema à direita do canal, na lista", + "Sign_in_your_server": "Entrar no seu servidor", + "Sign_Up": "Registrar", + "Some_field_is_invalid_or_empty": "Algum campo está inválido ou vazio", + "Sorting_by": "Ordenando por {{key}}", + "Sound": "Som da notificação", + "Star_room": "Favoritar sala", + "Star": "Favorito", + "Starred_Messages": "Mensagens Favoritas", + "starred": "favoritou", + "Starred": "Mensagens Favoritas", + "Start_of_conversation": "Início da conversa", + "Started_call": "Chamada iniciada por {{userBy}}", + "Started_discussion": "Iniciou uma discussão:", + "Submit": "Enviar", + "Table": "Tabela", + "Take_a_photo": "Tirar uma foto", + "Take_a_video": "Gravar um vídeo", + "Terms_of_Service": " Termos de Serviço ", + "Theme": "Tema", + "The_user_wont_be_able_to_type_in_roomName": "O usuário não poderá digitar em {{roomName}}", + "The_user_will_be_able_to_type_in_roomName": "O usuário poderá digitar em {{roomName}}", + "There_was_an_error_while_action": "Aconteceu um erro {{action}}!", + "This_room_is_blocked": "Este quarto está bloqueado", + "This_room_is_read_only": "Este quarto é apenas de leitura", + "Thread": "Tópico", + "Threads": "Tópicos", + "Timezone": "Fuso horário", + "To": "Para", + "topic": "tópico", + "Topic": "Tópico", + "Try_again": "Tentar novamente", + "Two_Factor_Authentication": "Autenticação de dois fatores", + "Type_the_channel_name_here": "Digite o nome do canal", + "unarchive": "desarquivar", + "UNARCHIVE": "DESARQUIVAR", + "Unblock_user": "Desbloquear usuário", + "Unfollowed_thread": "Parou de seguir tópico", + "Unmute": "Permitir que o usuário fale", + "unmuted": "permitiu que o usuário fale", + "Unpin": "Desafixar Mensagem", + "unread_messages": "não lidas", + "Unread": "Não lidas", + "Unread_on_top": "Não lidas no topo", + "Unstar": "Remover favorito", + "Updating": "Atualizando...", + "Uploading": "Subindo arquivo", + "Upload_file_question_mark": "Enviar arquivo?", + "User": "Usuário", + "Users": "Usuários", + "User_added_by": "Usuário {{userAdded}} adicionado por {{userBy}}", + "User_has_been_key": "Usuário foi {{key}}", + "User_is_no_longer_role_by_": "{{user}} não pertence mais à {{role}} por {{userBy}}", + "User_muted_by": "User {{userMuted}} muted por {{userBy}}", + "User_removed_by": "Usuário {{userRemoved}} removido por {{userBy}}", + "User_sent_an_attachment": "{{user}} enviou um anexo", + "User_unmuted_by": "{{userBy}} permitiu que {{userUnmuted}} fale na sala", + "User_was_set_role_by_": "{{user}} foi definido como {{role}} por {{userBy}}", + "Username_is_empty": "Usuário está vazio", + "Username": "Usuário", + "Username_or_email": "Usuário ou email", + "Uses_server_configuration": "Usar configuração do servidor", + "Verify": "Verificar", + "Verify_email_title": "Registrado com sucesso!", + "Verify_email_desc": "Nós lhe enviamos um e-mail para confirmar o seu registro. Se você não receber um e-mail em breve, por favor retorne e tente novamente.", + "Verify_your_email_for_the_code_we_sent": "Verifique em seu e-mail o código que enviamos", + "Video_call": "Chamada de vídeo", + "Voice_call": "Chamada de voz", + "Waiting_for_network": "Aguardando rede...", + "Websocket_disabled": "Websocket está desativado para esse servidor.\n{{contact}}", + "Welcome": "Bem vindo", + "Whats_your_2fa": "Qual seu código de autenticação?", + "What_are_you_doing_right_now": "O que você está fazendo agora?", + "Without_Servers": "Sem Servidores", + "Workspaces": "Workspaces", + "Yes_action_it": "Sim, {{action}}!", + "Yesterday": "Ontem", + "You_are_in_preview_mode": "Está é uma prévia do canal", + "You_are_offline": "Você está offline", + "You_can_search_using_RegExp_eg": "Você pode usar expressões regulares, por exemplo `/^text$/i`", + "You_need_to_verifiy_your_email_address_to_get_notications": "Você precisa confirmar seu endereço de e-mail para obter notificações", + "You_colon": "Você: ", + "you_were_mentioned": "você foi mencionado", + "You_were_removed_from_channel": "Você foi removido de {{channel}}", + "you": "você", + "You": "Você", + "Your_invite_link_will_expire_after__usesLeft__uses": "Seu link de convite irá vencer depois de {{usesLeft}} usos.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Seu link de convite irá vencer em {{date}} ou depois de {{usesLeft}} usos.", + "Your_invite_link_will_expire_on__date__": "Seu link de convite irá vencer em {{date}}.", + "Your_invite_link_will_never_expire": "Seu link de convite nunca irá vencer.", + "Your_workspace": "Sua workspace", + "You_will_not_be_able_to_recover_this_message": "Você não será capaz de recuperar essa mensagem!", + "You_will_unset_a_certificate_for_this_server": "Você cancelará a configuração de um certificado para este servidor", + "Would_you_like_to_return_the_inquiry": "Deseja retornar a consulta?", + "Write_External_Permission_Message": "Rocket.Chat precisa de acesso à sua galeria para salvar imagens", + "Write_External_Permission": "Acesso à Galeria", + "Yes": "Sim", + "Crash_report_disclaimer": "Nós não rastreamos o conteúdo das suas conversas. O relatório de erros e os eventos do analytics apenas contém informações relevantes para identificarmos problemas e corrigí-los.", + "Type_message": "Digitar mensagem", + "Room_search": "Busca de sala", + "Room_selection": "Selecionar sala 1...9", + "Next_room": "Próxima sala", + "Previous_room": "Sala anterior", + "New_room": "Nova sala", + "Upload_room": "Enviar arquivo", + "Search_messages": "Buscar mensagens", + "Scroll_messages": "Rolar mensagens", + "Reply_latest": "Responder para última mensagem", + "Server_selection": "Seleção de servidor", + "Server_selection_numbers": "Selecionar servidor 1...9", + "Add_server": "Adicionar servidor", + "New_line": "Nova linha", + "You_will_be_logged_out_of_this_application": "Você sairá deste aplicativo.", + "Clear": "Limpar", + "This_will_clear_all_your_offline_data": "Isto limpará todos os seus dados offline.", + "This_will_remove_all_data_from_this_server": "Isto removerá todos os dados desse servidor.", + "Mark_unread": "Marcar como não Lida", + "Wait_activation_warning": "Antes que você possa fazer o login, sua conta deve ser manualmente ativada por um administrador.", + "Screen_lock": "Bloqueio de Tela", + "Local_authentication_biometry_title": "Autenticar", + "Local_authentication_biometry_fallback": "Usar senha", + "Local_authentication_unlock_option": "Desbloquear com senha", + "Local_authentication_change_passcode": "Alterar senha", + "Local_authentication_info": "Nota: se você esquecer sua senha, terá de apagar e reinstalar o app.", + "Local_authentication_facial_recognition": "reconhecimento facial", + "Local_authentication_fingerprint": "impressão digital", + "Local_authentication_unlock_with_label": "Desbloquear com {{label}}", + "Local_authentication_auto_lock_60": "Após 1 minuto", + "Local_authentication_auto_lock_300": "Após 5 minutos", + "Local_authentication_auto_lock_900": "Após 15 minutos", + "Local_authentication_auto_lock_1800": "Após 30 minutos", + "Local_authentication_auto_lock_3600": "Após 1 hora", + "Passcode_enter_title": "Digite sua senha", + "Passcode_choose_title": "Insira sua nova senha", + "Passcode_choose_confirm_title": "Confirme sua nova senha", + "Passcode_choose_error": "As senhas não coincidem. Tente novamente.", + "Passcode_choose_force_set": "Senha foi exigida pelo admin", + "Passcode_app_locked_title": "Aplicativo bloqueado", + "Passcode_app_locked_subtitle": "Tente novamente em {{timeLeft}} segundos", + "After_seconds_set_by_admin": "Após {{seconds}} segundos (Configurado pelo adm)", + "Dont_activate": "Não ativar agora", + "Queued_chats": "Bate-papos na fila", + "Queue_is_empty": "A fila está vazia", + "Logout_from_other_logged_in_locations": "Sair de outros locais logados", + "You_will_be_logged_out_from_other_locations": "Você perderá a sessão de outros clientes", + "Logged_out_of_other_clients_successfully": "Desconectado de outros clientes com sucesso", + "Logout_failed": "Falha ao desconectar!", + "Log_analytics_events": "Logar eventos no analytics", + "E2E_encryption_change_password_title": "Alterar Senha de Criptografia", + "E2E_encryption_change_password_description": "Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar os grupos privados ou DMs existentes para criptografados. Esta é uma criptografia de ponta a ponta, logo a chave para codificar / decodificar suas mensagens não será salva no servidor. Por esse motivo, você precisa armazenar sua senha em algum lugar seguro. Será solicitada a inserção de senha em outros dispositivos nos quais deseja usar a criptografia E2E.", + "E2E_encryption_change_password_error": "Erro ao alterar senha de criptografia!", + "E2E_encryption_change_password_success": "Senha de criptografia alterada com sucesso!", + "E2E_encryption_change_password_message": "Certifique-se de tê-la guardado em local seguro.", + "E2E_encryption_change_password_confirmation": "Sim, alterar", + "E2E_encryption_reset_title": "Redefinir Chave de Criptografia", + "E2E_encryption_reset_description": "Essa opção irá remover a chave de criptografia corrente e desconectá-lo. \nQuando você se conectar novamente, uma nova chave será gerada e restaurará acesso a qualquer canal com uma ou mais pessoas online. \nDevico à natureza da criptografia ponta a ponta, não será possível restaurar acesso a canais sem membros online.", + "E2E_encryption_reset_button": "Redefinir", + "E2E_encryption_reset_error": "Erro ao redefinir chave!", + "E2E_encryption_reset_message": "Você será desconectado.", + "E2E_encryption_reset_confirmation": "Sim, redefinir", + "Following": "Seguindo", + "Threads_displaying_all": "Mostrando Tudo", + "Threads_displaying_following": "Mostrando Seguindo", + "Threads_displaying_unread": "Mostrando Não Lidos", + "No_threads": "Não há tópicos", + "No_threads_following": "Você não está seguindo tópicos", + "No_threads_unread": "Não há tópicos não lidos", + "Messagebox_Send_to_channel": "Mostrar no canal", + "Set_as_leader": "Definir como líder", + "Set_as_moderator": "Definir como moderador", + "Set_as_owner": "Definir como proprietário", + "Remove_as_leader": "Remover como líder", + "Remove_as_moderator": "Remover como moderador", + "Remove_as_owner": "Remover como owner", + "Remove_from_room": "Remover do canal", + "Ignore": "Ignorar", + "Unignore": "Deixar de ignorar", + "User_has_been_ignored": "Usuário foi ignorado", + "User_has_been_unignored": "O usuário não é mais ignorado", + "User_has_been_removed_from_s": "Usuário foi removido de {{s}}", + "User__username__is_now_a_leader_of__room_name_": "O usuário {{username}} agora é líder de {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "O usuário {{username}} agora é moderador de {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "O usuário {{username}} agora é proprietário de {{room_name}}", + "User__username__removed_from__room_name__leaders": "O usuário {{username}} foi removido dos líderes de {{room_name}}", + "User__username__removed_from__room_name__moderators": "O usuário {{username}} foi removido dos moderadores de {{room_name}}", + "User__username__removed_from__room_name__owners": "O usuário {{username}} foi removido dos proprietários de {{room_name}}", + "The_user_will_be_removed_from_s": "O usuário será removido de {{s}}", + "Yes_remove_user": "Sim, remover usuário!", + "Direct_message": "Mensagem direta", + "Message_Ignored": "Mensagem ignorada. Toque para mostrar.", + "Enter_workspace_URL": "Digite a URL da sua workspace", + "Workspace_URL_Example": "Ex. sua-empresa.rocket.chat", + "This_room_encryption_has_been_enabled_by__username_": "A criptografia para essa sala foi habilitada por {{username}}", + "This_room_encryption_has_been_disabled_by__username_": "A criptografia para essa sala foi desabilitada por {{username}}" +} \ No newline at end of file diff --git a/app/i18n/locales/pt-PT.js b/app/i18n/locales/pt-PT.js deleted file mode 100644 index 7e9896ccfa5..00000000000 --- a/app/i18n/locales/pt-PT.js +++ /dev/null @@ -1,352 +0,0 @@ -export default { - '1_person_reacted': '1 pessoa reagiu', - '1_user': '1 utilizador', - 'error-action-not-allowed': '{{action}} não é permitida', - 'error-application-not-found': 'Aplicação não encontrada', - 'error-archived-duplicate-name': 'Existe um canal arquivado com o nome {{room_name}}', - 'error-avatar-invalid-url': 'URL de avatar inválido: {{url}}', - 'error-avatar-url-handling': 'Erro ao manipular a configuração de avatar de um URL ({{url}}) para {{username}}', - 'error-cant-invite-for-direct-room': 'Não pode convidar utilizadores para salas de mensagens directas', - 'error-could-not-change-email': 'Não foi possível alterar o e-mail', - 'error-could-not-change-name': 'Não foi possível alterar o nome', - 'error-could-not-change-username': 'Não foi possível alterar o nome de utilizador', - 'error-delete-protected-role': 'Não é possível eliminar uma função protegida', - 'error-department-not-found': 'Departamento não encontrado', - 'error-direct-message-file-upload-not-allowed': 'Partilha de ficheiros não permitido em mensagens diretas', - 'error-duplicate-channel-name': 'Um canal com o nome {{channel_name}} existe', - 'error-email-domain-blacklisted': 'O domínio de e-mail está na lista negra', - 'error-email-send-failed': 'Erro ao tentar enviar e-mail: {{message}}', - 'error-field-unavailable': '{{field}} já está em uso :(', - 'error-file-too-large': 'Ficheiro demasiado grande', - 'error-importer-not-defined': 'O importador não foi definido correctamente, a classe Import está em falta.', - 'error-input-is-not-a-valid-field': '{{input}} não é um {{field}} válido', - 'error-invalid-actionlink': 'Link de acção inválido', - 'error-invalid-arguments': 'Argumentos inválidos', - 'error-invalid-asset': 'Ficheiro inválida', - 'error-invalid-channel': 'Canal inválido.', - 'error-invalid-channel-start-with-chars': 'Canal inválido. Começa por @ ou #', - 'error-invalid-custom-field': 'Campo personalizado inválido', - 'error-invalid-custom-field-name': 'Nome de campo personalizado inválido. Use apenas letras, números, hífens e sublinhados.', - 'error-invalid-date': 'Data inválida fornecida.', - 'error-invalid-description': 'Descrição inválida', - 'error-invalid-domain': 'Domínio inválido', - 'error-invalid-email': 'E-mail inválido {{emai}}', - 'error-invalid-email-address': 'Endereço de e-mail invalido', - 'error-invalid-file-height': 'Altura de ficheiro inválida', - 'error-invalid-file-type': 'Tipo de ficheiro inválido', - 'error-invalid-file-width': 'Largura de ficheiro inválida', - 'error-invalid-from-address': 'Você informou um endereço DE inválido.', - 'error-invalid-integration': 'Integração inválida', - 'error-invalid-message': 'Mensagem inválida', - 'error-invalid-method': 'Método inválido', - 'error-invalid-name': 'Nome inválido', - 'error-invalid-password': 'Palavra-passe inválida', - 'error-invalid-redirectUri': 'redirectUri inválido', - 'error-invalid-role': 'Função inválido', - 'error-invalid-room': 'Sala inválida', - 'error-invalid-room-name': '{{room_name}} não é um nome de sala válido', - 'error-invalid-room-type': '{{type}} não é um tipo de sala válido.', - 'error-invalid-settings': 'Configurações inválidas fornecidas', - 'error-invalid-subscription': 'Subscrição inválida', - 'error-invalid-token': 'Token inválido', - 'error-invalid-triggerWords': 'triggerWords inválido', - 'error-invalid-urls': 'URLs inválidos', - 'error-invalid-user': 'Utilizador inválido', - 'error-invalid-username': 'Nome de utilizador inválido', - 'error-invalid-webhook-response': 'O URL do webhook respondeu com um estado diferente de 200', - 'error-message-deleting-blocked': 'A remoção de mensagens está bloqueada', - 'error-message-editing-blocked': 'A edição de mensagens está bloqueada', - 'error-message-size-exceeded': 'O tamanho da mensagem excede Message_MaxAllowedSize', - 'error-missing-unsubscribe-link': 'Você deve fornecer o link para cancelar a subscrição: [unsubscribe].', - 'error-no-tokens-for-this-user': 'Não há tokens para este utilizador', - 'error-not-allowed': 'Não permitido', - 'error-not-authorized': 'Não autorizado', - 'error-push-disabled': 'Push está desactivado', - 'error-remove-last-owner': 'Este é o último proprietário. Por favor, defina um novo proprietário antes de remover este.', - 'error-role-in-use': 'Não é possível remover função porque está em uso', - 'error-role-name-required': 'Nome da função requerido', - 'error-the-field-is-required': 'O campo {{field}} é obrigatório.', - 'error-too-many-requests': 'Erro, demasiados pedidos. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.', - 'error-user-is-not-activated': 'O utilizador não está activado', - 'error-user-has-no-roles': 'O utilizador não tem funções', - 'error-user-limit-exceeded': 'O número de utilizadores que você está a tentar convidar para #channel_name excede o limite definido pelo administrador', - 'error-user-not-in-room': 'O utilizador não está nesta sala', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'O registo de utilizadores está desactivado', - 'error-user-registration-secret': 'O registo de utilizadores só é permitido por meio de um URL secreto', - 'error-you-are-last-owner': 'Você é o último proprietário. Por favor, defina novo proprietário antes de sair da sala.', - Actions: 'Acções', - activity: 'actividade', - Activity: 'Actividade', - Add_Reaction: 'Adicionar Reacção', - Add_Server: 'Adicionar Servidor', - Add_users: 'Adicionar utilizadores', - Alert: 'Alerta', - alert: 'alerta', - alerts: 'alertas', - All_users_in_the_channel_can_write_new_messages: 'Todos os utilizadores no canal podem escrever novas mensagens', - All: 'Todos', - Allow_Reactions: 'Permitir Reacções', - Alphabetical: 'Alfabética', - and_more: 'e mais', - and: 'e', - announcement: 'anúncio', - Announcement: 'Anúncio', - ARCHIVE: 'ARQUIVAR', - archive: 'arquivar', - are_typing: 'estão a escrever', - Are_you_sure_question_mark: 'Tem a certeza?', - Are_you_sure_you_want_to_leave_the_room: 'Tem certeza de que quer sair da sala {{room}}?', - Authenticating: 'Autenticando', - Avatar_changed_successfully: 'Avatar alterado com sucesso!', - Avatar_Url: 'URL do Avatar', - Away: 'Ausente', - Block_user: 'Bloquear utilizador', - Broadcast_channel_Description: 'Apenas utilizadores autorizados podem escrever novas mensagens, mas os outros utilizadores poderão responder', - Broadcast_Channel: 'Canal de Transmissão', - Busy: 'Ocupado', - By_proceeding_you_are_agreeing: 'Ao prosseguir você concorda com o(s) nosso(s)', - Cancel_editing: 'Cancelar edição', - Cancel_recording: 'Cancelar gravação', - Cancel: 'Cancelar', - changing_avatar: 'a alterar avatar', - creating_channel: 'a criar canal', - Channel_Name: 'Nome do Canal', - Channels: 'Canais', - Chats: 'Chats', - Close: 'Fechar', - Close_emoji_selector: 'Fechar selector de emoticons', - Choose: 'Escolher', - Choose_from_library: 'Escolher da biblioteca', - Code: 'Código', - Collaborative: 'Colaborativa', - Confirm: 'Confirmar', - Connect: 'Ligar', - Connected: 'Ligado', - Connecting: 'A ligar...', - Continue_with: 'Continuar com', - Copied_to_clipboard: 'Copiado para a área de transferência!', - Copy: 'Copiar', - Permalink: 'Link permanente', - Create_account: 'Criar uma conta', - Create_Channel: 'Criar Canal', - Created_snippet: 'criado um extracto', - Create_a_new_workspace: 'Criar um novo espaço de trabalho', - Create: 'Criar', - Delete_Room_Warning: 'Apagar uma sala irá remover todas as mensagens contidas nela. Isto não pode ser desfeito.', - delete: 'apagar', - Delete: 'Apagar', - DELETE: 'APAGAR', - description: 'descrição', - Description: 'Descrição', - Disable_notifications: 'Desactivar notificações', - Direct_Messages: 'Mensagens Directas', - Dont_Have_An_Account: 'Não tem uma conta?', - Do_you_really_want_to_key_this_room_question_mark: 'Você quer mesmo {{key}} esta sala?', - edit: 'editar', - deleting_room: 'apagando sala', - Edit: 'Editar', - Email_or_password_field_is_empty: 'O campo de e-mail ou palavra-passe está vazio', - Email: 'E-mail', - email: 'e-mail', - Enable_notifications: 'Activar notificações', - Everyone_can_access_this_channel: 'Todos podem aceder a este canal', - Error_uploading: 'Erro ao fazer o envio', - Favorites: 'Favoritos', - Files: 'Ficheiros', - File_description: 'Descrição do ficheiro', - File_name: 'Nome do ficheiro', - Finish_recording: 'Terminar a gravação', - For_your_security_you_must_enter_your_current_password_to_continue: 'Para sua segurança, você deve escrever a sua palavra-passe actual para continuar', - Forgot_password_If_this_email_is_registered: 'Se este e-mail estiver registado, enviaremos instruções sobre como repor a sua palavra-passe. Se você não receber um e-mail em breve, volte e tente novamente.', - Forgot_password: 'Esquecer palavra-passe', - Forgot_Password: 'Esquecer Palavra-passe', - Group_by_favorites: 'Agrupar por favoritos', - Group_by_type: 'Agrupar por tipo', - Has_joined_the_channel: 'entrou no canal', - Has_joined_the_conversation: 'entrou na conversa', - Has_left_the_channel: 'saiu do canal', - Invisible: 'Invisível', - Invite: 'Convidar', - is_a_valid_RocketChat_instance: 'é uma instância válida do Rocket.Chat', - is_not_a_valid_RocketChat_instance: 'is not a valid Rocket.Chat instance', - is_typing: 'está a escrever', - Invalid_server_version: 'O servidor ao qual esta tentando ligar-se, utiliza uma versão que não é suporta pela aplicação: {{currentVersion}}.\n\nA versão mínima requerida é {{minVersion}}', - Join: 'Entrar', - Just_invited_people_can_access_this_channel: 'Apenas utilizadores convidados podem aceder a este canal', - Language: 'Idioma', - last_message: 'última mensagem', - Leave_channel: 'Sair do canal', - leaving_room: 'a sair da sala', - leave: 'sair', - Legal: 'Legal', - Livechat: 'Livechat', - Login: 'Entrar', - Login_error: 'As suas credenciais foram rejeitadas! Por favor, tente novamente.', - Login_with: 'Entrar com', - Logout: 'Sair', - members: 'membros', - Members: 'Membros', - Mentioned_Messages: 'Mensagens Mencionadas', - mentioned: 'mencionado', - Mentions: 'Menções', - Message_accessibility: 'Mensagem de {{user}} às {{time}}: {{message}}', - Message_actions: 'Acções de mensagem', - Message_pinned: 'Mensagem afixada', - Message_removed: 'Mensagem removida', - Messages: 'Mensagens', - Microphone_Permission_Message: 'O Rocket.Chat necessita de acesso ao seu microfone para que você possa enviar mensagens de áudio.', - Microphone_Permission: 'Permissão de Microfone', - Mute: 'Silenciar', - muted: 'silenciado', - My_servers: 'Meus servidores', - N_people_reacted: '{{n}} pessoas reagiram', - N_users: '{{n}} utilizadores', - name: 'nome', - Name: 'Nome', - New_Message: 'Nova Mensagem', - New_Password: 'Nova Palavra-passe', - New_Server: 'Novo Servidor', - Next: 'Próximo', - No_files: 'Nenhum ficheiro', - No_mentioned_messages: 'Nenhuma mensagem mencionada', - No_pinned_messages: 'Nenhuma mensagem afixada', - No_results_found: 'Nenhum resultado encontrado', - No_starred_messages: 'Nenhuma mensagem marcada com estrela', - No_Message: 'Nenhuma mensagem', - No_Reactions: 'Nenhuma reação', - Not_logged: 'Não ligado', - Nothing_to_save: 'Nada para guardar!', - Notify_active_in_this_room: 'Notifica utilizadores activos nesta sala', - Notify_all_in_this_room: 'Notifica todos os utilizadores nesta sala', - Offline: 'Desligado', - Oops: 'Oops!', - Onboarding_title: 'Bem vindo(a) ao Rocket.Chat', - Online: 'Ligado', - Only_authorized_users_can_write_new_messages: 'Apenas utilizadores autorizados podem escrever novas mensagens', - Open_emoji_selector: 'Abra o selector de emoticons', - Open_Source_Communication: 'Comunicação Open Source', - Password: 'Palavra-passe', - Permalink_copied_to_clipboard: 'Link permanente copiado para a área de transferência!', - Pin: 'Afixar', - Pinned_Messages: 'Mensagens Afixadas', - pinned: 'afixada', - Pinned: 'Afixada', - Please_enter_your_password: 'Por favor, introduza a sua palavra-passe', - Preferences_saved: 'Preferências guardadas!', - Privacy_Policy: ' Política de Privacidade', - Private_Channel: 'Canal Privado', - Private_Groups: 'Grupos Privados', - Private: 'Privado', - Profile_saved_successfully: 'Perfil actualizado com sucesso!', - Profile: 'Perfil', - Public_Channel: 'Canal Público', - Public: 'Público', - Quote: 'Citar', - Reactions_are_disabled: 'Reacções desactivadas', - Reactions_are_enabled: 'Reacções activadas', - Reactions: 'Reacções', - Read_Only_Channel: 'Canal só de leitura', - Read_Only: 'Só de Leitura', - Register: 'Registar', - Repeat_Password: 'Repita a palavra-passe', - Reply: 'Responder', - Resend: 'Reenviar', - Reset_password: 'Repor palavra-passe', - resetting_password: 'a repor palavra-passe', - RESET: 'REPOR', - Roles: 'Funções', - Room_actions: 'Ações de sala', - Room_changed_announcement: 'Anúncio da sala alterado para: {{announcement}} por {{userBy}}', - Room_changed_description: 'Descrição da sala alterada para: {{description}} por {{userBy}}', - Room_changed_privacy: 'Tipo de sala alterado para: {{type}} por {{userBy}}', - Room_changed_topic: 'Tópico da sala alterado para: {{topic}} por {{userBy}}', - Room_Files: 'Fiheiros da Sala', - Room_Info_Edit: 'Editar Informação da Sala', - Room_Info: 'Informação da Sala', - Room_Members: 'Membros da Sala', - Room_name_changed: 'Nome da sala alterado para: {{name}} por {{userBy}}', - SAVE: 'GUARDAR', - Save_Changes: 'Guardar Alterações', - Save: 'Guardar', - saving_preferences: 'a guardar preferências', - saving_profile: 'a guardar perfil', - saving_settings: 'a guardar configurações', - Search_Messages: 'Pesquisar Mensagens', - Search: 'Pesquisar', - Select_Avatar: 'Seleccionar Avatar', - Select_Users: 'Seleccionar Utilizadores', - Send: 'Enviar', - Send_audio_message: 'Enviar mensagem de áudio', - Send_message: 'Enviar mensagem', - Sent_an_attachment: 'Enviou um ficheiro', - Server: 'Servidor', - Servers: 'Servidores', - Set_username_subtitle: 'O nome de utilizador é usado para permitir que outros mencionem você em mensagens', - Settings: 'Definições', - Settings_succesfully_changed: 'Definições guardadas com sucesso!', - Share: 'Partilhar', - Sign_in_your_server: 'Entre no seu servidor', - Sign_Up: 'Inscreva-se', - Some_field_is_invalid_or_empty: 'Algum campo é inválido ou está vazio', - Sorting_by: 'Ordenar por {{key}}', - Star_room: 'Marcar como favorito', - Star: 'Dar estrela', - Starred_Messages: 'Mensagens com estrela', - starred: 'deu uma estrela', - Starred: 'Deu uma estrela', - Start_of_conversation: 'Início da conversa', - Submit: 'Enviar', - Take_a_photo: 'Tirar uma foto', - tap_to_change_status: 'toque para alterar o estado', - Tap_to_view_servers_list: 'Toque para ver a lista de servidores', - Terms_of_Service: ' Termos do Serviço ', - There_was_an_error_while_action: 'Houve um erro enquanto {{action}}!', - This_room_is_blocked: 'Esta sala está bloqueada', - This_room_is_read_only: 'Esta sala é apenas de leitura', - Timezone: 'Fuso Horário', - topic: 'tópico', - Topic: 'Tópico', - Try_again: 'Tente novamente', - Two_Factor_Authentication: 'Autenticação 2FA', - Type_the_channel_name_here: 'Escreva o nome do canal aqui', - unarchive: 'desarquivar', - UNARCHIVE: 'DESARQUIVAR', - Unblock_user: 'Desbloquear utilizador', - Unmute: 'Retirar silêncio', - unmuted: 'silêncio removido', - Unpin: 'Desafixar', - unread_messages: 'não lidas', - Unread: 'Não lidas', - Unread_on_top: 'Não lidas no topo', - Unstar: 'Retirar estrela', - Updating: 'A actualizar...', - Uploading: 'A enviar', - Upload_file_question_mark: 'Enviar ficheiro?', - User_added_by: 'Utilizador {{userAdded}} adicionado por {{userBy}}', - User_has_been_key: 'Utilizador foi {{key}}', - User_is_no_longer_role_by_: '{{userBy}} removeu o estatuto de {{role}} de {{user}}', - User_muted_by: 'Utilizador {{userMuted}} foi silenciado por {{userBy}}', - User_removed_by: 'Utilizador {{userRemoved}} removido por {{userBy}}', - User_sent_an_attachment: '{{user}} enviou um ficheiro', - User_unmuted_by: '{{userBy}} retirou o silêncio a {{userUnmuted}}', - User_was_set_role_by_: '{{userBy}} deu estatuto de {{role}} a {{user}}', - Username_is_empty: 'O nome de utilizador está vazio', - Username: 'Nome de utilizador', - Username_or_email: 'Nome de utilizador ou e-mail', - Validating: 'A validar', - Video_call: 'Video chamada', - Voice_call: 'Chamada de voz', - Welcome: 'Bem vindo(a)', - Whats_your_2fa: 'Qual é o seu código 2FA?', - Yes_action_it: 'Sim, {{action}}!', - Yesterday: 'Ontem', - You_are_in_preview_mode: 'Você está no modo de pré-visualização', - You_are_offline: 'Você está desligado', - You_can_search_using_RegExp_eg: 'Você pode pesquisar usando RegEx. por exemplo, `/^text$/i`', - You_colon: 'Você: ', - you_were_mentioned: 'você foi mencionado', - you: 'você', - You: 'Você', - You_will_not_be_able_to_recover_this_message: 'Você será incapaz de recuperar esta mensagem!' -}; diff --git a/app/i18n/locales/pt-PT.json b/app/i18n/locales/pt-PT.json new file mode 100644 index 00000000000..7a5f40bd844 --- /dev/null +++ b/app/i18n/locales/pt-PT.json @@ -0,0 +1,352 @@ +{ + "1_person_reacted": "1 pessoa reagiu", + "1_user": "1 utilizador", + "error-action-not-allowed": "{{action}} não é permitida", + "error-application-not-found": "Aplicação não encontrada", + "error-archived-duplicate-name": "Existe um canal arquivado com o nome {{room_name}}", + "error-avatar-invalid-url": "URL de avatar inválido: {{url}}", + "error-avatar-url-handling": "Erro ao manipular a configuração de avatar de um URL ({{url}}) para {{username}}", + "error-cant-invite-for-direct-room": "Não pode convidar utilizadores para salas de mensagens directas", + "error-could-not-change-email": "Não foi possível alterar o e-mail", + "error-could-not-change-name": "Não foi possível alterar o nome", + "error-could-not-change-username": "Não foi possível alterar o nome de utilizador", + "error-delete-protected-role": "Não é possível eliminar uma função protegida", + "error-department-not-found": "Departamento não encontrado", + "error-direct-message-file-upload-not-allowed": "Partilha de ficheiros não permitido em mensagens diretas", + "error-duplicate-channel-name": "Um canal com o nome {{channel_name}} existe", + "error-email-domain-blacklisted": "O domínio de e-mail está na lista negra", + "error-email-send-failed": "Erro ao tentar enviar e-mail: {{message}}", + "error-field-unavailable": "{{field}} já está em uso :(", + "error-file-too-large": "Ficheiro demasiado grande", + "error-importer-not-defined": "O importador não foi definido correctamente, a classe Import está em falta.", + "error-input-is-not-a-valid-field": "{{input}} não é um {{field}} válido", + "error-invalid-actionlink": "Link de acção inválido", + "error-invalid-arguments": "Argumentos inválidos", + "error-invalid-asset": "Ficheiro inválida", + "error-invalid-channel": "Canal inválido.", + "error-invalid-channel-start-with-chars": "Canal inválido. Começa por @ ou #", + "error-invalid-custom-field": "Campo personalizado inválido", + "error-invalid-custom-field-name": "Nome de campo personalizado inválido. Use apenas letras, números, hífens e sublinhados.", + "error-invalid-date": "Data inválida fornecida.", + "error-invalid-description": "Descrição inválida", + "error-invalid-domain": "Domínio inválido", + "error-invalid-email": "E-mail inválido {{emai}}", + "error-invalid-email-address": "Endereço de e-mail invalido", + "error-invalid-file-height": "Altura de ficheiro inválida", + "error-invalid-file-type": "Tipo de ficheiro inválido", + "error-invalid-file-width": "Largura de ficheiro inválida", + "error-invalid-from-address": "Você informou um endereço DE inválido.", + "error-invalid-integration": "Integração inválida", + "error-invalid-message": "Mensagem inválida", + "error-invalid-method": "Método inválido", + "error-invalid-name": "Nome inválido", + "error-invalid-password": "Palavra-passe inválida", + "error-invalid-redirectUri": "redirectUri inválido", + "error-invalid-role": "Função inválido", + "error-invalid-room": "Sala inválida", + "error-invalid-room-name": "{{room_name}} não é um nome de sala válido", + "error-invalid-room-type": "{{type}} não é um tipo de sala válido.", + "error-invalid-settings": "Configurações inválidas fornecidas", + "error-invalid-subscription": "Subscrição inválida", + "error-invalid-token": "Token inválido", + "error-invalid-triggerWords": "triggerWords inválido", + "error-invalid-urls": "URLs inválidos", + "error-invalid-user": "Utilizador inválido", + "error-invalid-username": "Nome de utilizador inválido", + "error-invalid-webhook-response": "O URL do webhook respondeu com um estado diferente de 200", + "error-message-deleting-blocked": "A remoção de mensagens está bloqueada", + "error-message-editing-blocked": "A edição de mensagens está bloqueada", + "error-message-size-exceeded": "O tamanho da mensagem excede Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "Você deve fornecer o link para cancelar a subscrição: [unsubscribe].", + "error-no-tokens-for-this-user": "Não há tokens para este utilizador", + "error-not-allowed": "Não permitido", + "error-not-authorized": "Não autorizado", + "error-push-disabled": "Push está desactivado", + "error-remove-last-owner": "Este é o último proprietário. Por favor, defina um novo proprietário antes de remover este.", + "error-role-in-use": "Não é possível remover função porque está em uso", + "error-role-name-required": "Nome da função requerido", + "error-the-field-is-required": "O campo {{field}} é obrigatório.", + "error-too-many-requests": "Erro, demasiados pedidos. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.", + "error-user-is-not-activated": "O utilizador não está activado", + "error-user-has-no-roles": "O utilizador não tem funções", + "error-user-limit-exceeded": "O número de utilizadores que você está a tentar convidar para #channel_name excede o limite definido pelo administrador", + "error-user-not-in-room": "O utilizador não está nesta sala", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "O registo de utilizadores está desactivado", + "error-user-registration-secret": "O registo de utilizadores só é permitido por meio de um URL secreto", + "error-you-are-last-owner": "Você é o último proprietário. Por favor, defina novo proprietário antes de sair da sala.", + "Actions": "Acções", + "activity": "actividade", + "Activity": "Actividade", + "Add_Reaction": "Adicionar Reacção", + "Add_Server": "Adicionar Servidor", + "Add_users": "Adicionar utilizadores", + "Alert": "Alerta", + "alert": "alerta", + "alerts": "alertas", + "All_users_in_the_channel_can_write_new_messages": "Todos os utilizadores no canal podem escrever novas mensagens", + "All": "Todos", + "Allow_Reactions": "Permitir Reacções", + "Alphabetical": "Alfabética", + "and_more": "e mais", + "and": "e", + "announcement": "anúncio", + "Announcement": "Anúncio", + "ARCHIVE": "ARQUIVAR", + "archive": "arquivar", + "are_typing": "estão a escrever", + "Are_you_sure_question_mark": "Tem a certeza?", + "Are_you_sure_you_want_to_leave_the_room": "Tem certeza de que quer sair da sala {{room}}?", + "Authenticating": "Autenticando", + "Avatar_changed_successfully": "Avatar alterado com sucesso!", + "Avatar_Url": "URL do Avatar", + "Away": "Ausente", + "Block_user": "Bloquear utilizador", + "Broadcast_channel_Description": "Apenas utilizadores autorizados podem escrever novas mensagens, mas os outros utilizadores poderão responder", + "Broadcast_Channel": "Canal de Transmissão", + "Busy": "Ocupado", + "By_proceeding_you_are_agreeing": "Ao prosseguir você concorda com o(s) nosso(s)", + "Cancel_editing": "Cancelar edição", + "Cancel_recording": "Cancelar gravação", + "Cancel": "Cancelar", + "changing_avatar": "a alterar avatar", + "creating_channel": "a criar canal", + "Channel_Name": "Nome do Canal", + "Channels": "Canais", + "Chats": "Chats", + "Close": "Fechar", + "Close_emoji_selector": "Fechar selector de emoticons", + "Choose": "Escolher", + "Choose_from_library": "Escolher da biblioteca", + "Code": "Código", + "Collaborative": "Colaborativa", + "Confirm": "Confirmar", + "Connect": "Ligar", + "Connected": "Ligado", + "Connecting": "A ligar...", + "Continue_with": "Continuar com", + "Copied_to_clipboard": "Copiado para a área de transferência!", + "Copy": "Copiar", + "Permalink": "Link permanente", + "Create_account": "Criar uma conta", + "Create_Channel": "Criar Canal", + "Created_snippet": "criado um extracto", + "Create_a_new_workspace": "Criar um novo espaço de trabalho", + "Create": "Criar", + "Delete_Room_Warning": "Apagar uma sala irá remover todas as mensagens contidas nela. Isto não pode ser desfeito.", + "delete": "apagar", + "Delete": "Apagar", + "DELETE": "APAGAR", + "description": "descrição", + "Description": "Descrição", + "Disable_notifications": "Desactivar notificações", + "Direct_Messages": "Mensagens Directas", + "Dont_Have_An_Account": "Não tem uma conta?", + "Do_you_really_want_to_key_this_room_question_mark": "Você quer mesmo {{key}} esta sala?", + "edit": "editar", + "deleting_room": "apagando sala", + "Edit": "Editar", + "Email_or_password_field_is_empty": "O campo de e-mail ou palavra-passe está vazio", + "Email": "E-mail", + "email": "e-mail", + "Enable_notifications": "Activar notificações", + "Everyone_can_access_this_channel": "Todos podem aceder a este canal", + "Error_uploading": "Erro ao fazer o envio", + "Favorites": "Favoritos", + "Files": "Ficheiros", + "File_description": "Descrição do ficheiro", + "File_name": "Nome do ficheiro", + "Finish_recording": "Terminar a gravação", + "For_your_security_you_must_enter_your_current_password_to_continue": "Para sua segurança, você deve escrever a sua palavra-passe actual para continuar", + "Forgot_password_If_this_email_is_registered": "Se este e-mail estiver registado, enviaremos instruções sobre como repor a sua palavra-passe. Se você não receber um e-mail em breve, volte e tente novamente.", + "Forgot_password": "Esquecer palavra-passe", + "Forgot_Password": "Esquecer Palavra-passe", + "Group_by_favorites": "Agrupar por favoritos", + "Group_by_type": "Agrupar por tipo", + "Has_joined_the_channel": "entrou no canal", + "Has_joined_the_conversation": "entrou na conversa", + "Has_left_the_channel": "saiu do canal", + "Invisible": "Invisível", + "Invite": "Convidar", + "is_a_valid_RocketChat_instance": "é uma instância válida do Rocket.Chat", + "is_not_a_valid_RocketChat_instance": "is not a valid Rocket.Chat instance", + "is_typing": "está a escrever", + "Invalid_server_version": "O servidor ao qual esta tentando ligar-se, utiliza uma versão que não é suporta pela aplicação: {{currentVersion}}.\n\nA versão mínima requerida é {{minVersion}}", + "Join": "Entrar", + "Just_invited_people_can_access_this_channel": "Apenas utilizadores convidados podem aceder a este canal", + "Language": "Idioma", + "last_message": "última mensagem", + "Leave_channel": "Sair do canal", + "leaving_room": "a sair da sala", + "leave": "sair", + "Legal": "Legal", + "Livechat": "Livechat", + "Login": "Entrar", + "Login_error": "As suas credenciais foram rejeitadas! Por favor, tente novamente.", + "Login_with": "Entrar com", + "Logout": "Sair", + "members": "membros", + "Members": "Membros", + "Mentioned_Messages": "Mensagens Mencionadas", + "mentioned": "mencionado", + "Mentions": "Menções", + "Message_accessibility": "Mensagem de {{user}} às {{time}}: {{message}}", + "Message_actions": "Acções de mensagem", + "Message_pinned": "Mensagem afixada", + "Message_removed": "Mensagem removida", + "Messages": "Mensagens", + "Microphone_Permission_Message": "O Rocket.Chat necessita de acesso ao seu microfone para que você possa enviar mensagens de áudio.", + "Microphone_Permission": "Permissão de Microfone", + "Mute": "Silenciar", + "muted": "silenciado", + "My_servers": "Meus servidores", + "N_people_reacted": "{{n}} pessoas reagiram", + "N_users": "{{n}} utilizadores", + "name": "nome", + "Name": "Nome", + "New_Message": "Nova Mensagem", + "New_Password": "Nova Palavra-passe", + "New_Server": "Novo Servidor", + "Next": "Próximo", + "No_files": "Nenhum ficheiro", + "No_mentioned_messages": "Nenhuma mensagem mencionada", + "No_pinned_messages": "Nenhuma mensagem afixada", + "No_results_found": "Nenhum resultado encontrado", + "No_starred_messages": "Nenhuma mensagem marcada com estrela", + "No_Message": "Nenhuma mensagem", + "No_Reactions": "Nenhuma reação", + "Not_logged": "Não ligado", + "Nothing_to_save": "Nada para guardar!", + "Notify_active_in_this_room": "Notifica utilizadores activos nesta sala", + "Notify_all_in_this_room": "Notifica todos os utilizadores nesta sala", + "Offline": "Desligado", + "Oops": "Oops!", + "Onboarding_title": "Bem vindo(a) ao Rocket.Chat", + "Online": "Ligado", + "Only_authorized_users_can_write_new_messages": "Apenas utilizadores autorizados podem escrever novas mensagens", + "Open_emoji_selector": "Abra o selector de emoticons", + "Open_Source_Communication": "Comunicação Open Source", + "Password": "Palavra-passe", + "Permalink_copied_to_clipboard": "Link permanente copiado para a área de transferência!", + "Pin": "Afixar", + "Pinned_Messages": "Mensagens Afixadas", + "pinned": "afixada", + "Pinned": "Afixada", + "Please_enter_your_password": "Por favor, introduza a sua palavra-passe", + "Preferences_saved": "Preferências guardadas!", + "Privacy_Policy": " Política de Privacidade", + "Private_Channel": "Canal Privado", + "Private_Groups": "Grupos Privados", + "Private": "Privado", + "Profile_saved_successfully": "Perfil actualizado com sucesso!", + "Profile": "Perfil", + "Public_Channel": "Canal Público", + "Public": "Público", + "Quote": "Citar", + "Reactions_are_disabled": "Reacções desactivadas", + "Reactions_are_enabled": "Reacções activadas", + "Reactions": "Reacções", + "Read_Only_Channel": "Canal só de leitura", + "Read_Only": "Só de Leitura", + "Register": "Registar", + "Repeat_Password": "Repita a palavra-passe", + "Reply": "Responder", + "Resend": "Reenviar", + "Reset_password": "Repor palavra-passe", + "resetting_password": "a repor palavra-passe", + "RESET": "REPOR", + "Roles": "Funções", + "Room_actions": "Ações de sala", + "Room_changed_announcement": "Anúncio da sala alterado para: {{announcement}} por {{userBy}}", + "Room_changed_description": "Descrição da sala alterada para: {{description}} por {{userBy}}", + "Room_changed_privacy": "Tipo de sala alterado para: {{type}} por {{userBy}}", + "Room_changed_topic": "Tópico da sala alterado para: {{topic}} por {{userBy}}", + "Room_Files": "Fiheiros da Sala", + "Room_Info_Edit": "Editar Informação da Sala", + "Room_Info": "Informação da Sala", + "Room_Members": "Membros da Sala", + "Room_name_changed": "Nome da sala alterado para: {{name}} por {{userBy}}", + "SAVE": "GUARDAR", + "Save_Changes": "Guardar Alterações", + "Save": "Guardar", + "saving_preferences": "a guardar preferências", + "saving_profile": "a guardar perfil", + "saving_settings": "a guardar configurações", + "Search_Messages": "Pesquisar Mensagens", + "Search": "Pesquisar", + "Select_Avatar": "Seleccionar Avatar", + "Select_Users": "Seleccionar Utilizadores", + "Send": "Enviar", + "Send_audio_message": "Enviar mensagem de áudio", + "Send_message": "Enviar mensagem", + "Sent_an_attachment": "Enviou um ficheiro", + "Server": "Servidor", + "Servers": "Servidores", + "Set_username_subtitle": "O nome de utilizador é usado para permitir que outros mencionem você em mensagens", + "Settings": "Definições", + "Settings_succesfully_changed": "Definições guardadas com sucesso!", + "Share": "Partilhar", + "Sign_in_your_server": "Entre no seu servidor", + "Sign_Up": "Inscreva-se", + "Some_field_is_invalid_or_empty": "Algum campo é inválido ou está vazio", + "Sorting_by": "Ordenar por {{key}}", + "Star_room": "Marcar como favorito", + "Star": "Dar estrela", + "Starred_Messages": "Mensagens com estrela", + "starred": "deu uma estrela", + "Starred": "Deu uma estrela", + "Start_of_conversation": "Início da conversa", + "Submit": "Enviar", + "Take_a_photo": "Tirar uma foto", + "tap_to_change_status": "toque para alterar o estado", + "Tap_to_view_servers_list": "Toque para ver a lista de servidores", + "Terms_of_Service": " Termos do Serviço ", + "There_was_an_error_while_action": "Houve um erro enquanto {{action}}!", + "This_room_is_blocked": "Esta sala está bloqueada", + "This_room_is_read_only": "Esta sala é apenas de leitura", + "Timezone": "Fuso Horário", + "topic": "tópico", + "Topic": "Tópico", + "Try_again": "Tente novamente", + "Two_Factor_Authentication": "Autenticação 2FA", + "Type_the_channel_name_here": "Escreva o nome do canal aqui", + "unarchive": "desarquivar", + "UNARCHIVE": "DESARQUIVAR", + "Unblock_user": "Desbloquear utilizador", + "Unmute": "Retirar silêncio", + "unmuted": "silêncio removido", + "Unpin": "Desafixar", + "unread_messages": "não lidas", + "Unread": "Não lidas", + "Unread_on_top": "Não lidas no topo", + "Unstar": "Retirar estrela", + "Updating": "A actualizar...", + "Uploading": "A enviar", + "Upload_file_question_mark": "Enviar ficheiro?", + "User_added_by": "Utilizador {{userAdded}} adicionado por {{userBy}}", + "User_has_been_key": "Utilizador foi {{key}}", + "User_is_no_longer_role_by_": "{{userBy}} removeu o estatuto de {{role}} de {{user}}", + "User_muted_by": "Utilizador {{userMuted}} foi silenciado por {{userBy}}", + "User_removed_by": "Utilizador {{userRemoved}} removido por {{userBy}}", + "User_sent_an_attachment": "{{user}} enviou um ficheiro", + "User_unmuted_by": "{{userBy}} retirou o silêncio a {{userUnmuted}}", + "User_was_set_role_by_": "{{userBy}} deu estatuto de {{role}} a {{user}}", + "Username_is_empty": "O nome de utilizador está vazio", + "Username": "Nome de utilizador", + "Username_or_email": "Nome de utilizador ou e-mail", + "Validating": "A validar", + "Video_call": "Video chamada", + "Voice_call": "Chamada de voz", + "Welcome": "Bem vindo(a)", + "Whats_your_2fa": "Qual é o seu código 2FA?", + "Yes_action_it": "Sim, {{action}}!", + "Yesterday": "Ontem", + "You_are_in_preview_mode": "Você está no modo de pré-visualização", + "You_are_offline": "Você está desligado", + "You_can_search_using_RegExp_eg": "Você pode pesquisar usando RegEx. por exemplo, `/^text$/i`", + "You_colon": "Você: ", + "you_were_mentioned": "você foi mencionado", + "you": "você", + "You": "Você", + "You_will_not_be_able_to_recover_this_message": "Você será incapaz de recuperar esta mensagem!" +} \ No newline at end of file diff --git a/app/i18n/locales/ru.js b/app/i18n/locales/ru.js deleted file mode 100644 index fcbcd5e4702..00000000000 --- a/app/i18n/locales/ru.js +++ /dev/null @@ -1,708 +0,0 @@ -export default { - '1_person_reacted': '1 человек отреагировал', - '1_user': '1 пользователь', - 'error-action-not-allowed': '{{action}} не допускается', - 'error-application-not-found': 'Приложение не найдено', - 'error-archived-duplicate-name': 'Есть архивный канал с именем {{room_name}}', - 'error-avatar-invalid-url': 'Недопустимый URL-адрес аватара: {{url}}', - 'error-avatar-url-handling': 'Ошибка при обработке настроек аватара с URL-адреса ({{url}}) для {{username}}', - 'error-cant-invite-for-direct-room': 'Невозможно пригласить пользователя в личную переписку', - 'error-could-not-change-email': 'Не удалось изменить адрес электронной почты', - 'error-could-not-change-name': 'Не удалось изменить имя', - 'error-could-not-change-username': 'Не удалось изменить имя пользователя', - 'error-could-not-change-status': 'Не удалось изменить статус', - 'error-delete-protected-role': 'Не удается удалить защищенную роль', - 'error-department-not-found': 'Отдел не найден', - 'error-direct-message-file-upload-not-allowed': 'Общий доступ к файлам не разрешен в личных сообщениях', - 'error-duplicate-channel-name': 'Канал с именем {{channel_name}} существует', - 'error-email-domain-blacklisted': 'Домен электронной почты включен в черный список', - 'error-email-send-failed': 'Ошибка при попытке отправить электронное письмо: {{message}}', - 'error-save-image': 'Ошибка при попытке сохранить изображение', - 'error-save-video': 'Ошибка при попытке сохранить видео', - 'error-field-unavailable': '{{field}} уже используется :(', - 'error-file-too-large': 'Файл слишком большой', - 'error-importer-not-defined': 'Импортер не был определен правильно, ему не хватает класса Import.', - 'error-input-is-not-a-valid-field': '{{input}} недействительно {{field}}', - 'error-invalid-actionlink': 'Недействительная ссылка действия', - 'error-invalid-arguments': 'Недопустимые аргументы', - 'error-invalid-asset': 'Недопустимый ресурс', - 'error-invalid-channel': 'Недействительный канал.', - 'error-invalid-channel-start-with-chars': 'Недействительный канал. Начните с @ или #', - 'error-invalid-custom-field': 'Неверное настраиваемое поле', - 'error-invalid-custom-field-name': 'Неверное имя настраиваемого поля. Используйте только буквы, цифры, дефисы и символы подчеркивания.', - 'error-invalid-date': 'Указана недопустимая дата.', - 'error-invalid-description': 'Недопустимое описание', - 'error-invalid-domain': 'Недопустимый домен', - 'error-invalid-email': 'Неверный адрес электронной почты {{email}}', - 'error-invalid-email-address': 'Неверный адрес электронной почты', - 'error-invalid-file-height': 'Недопустимая высота файла', - 'error-invalid-file-type': 'Неверный тип файла', - 'error-invalid-file-width': 'Недопустимая ширина файла', - 'error-invalid-from-address': 'Вы указали неверный адрес FROM.', - 'error-invalid-integration': 'Недопустимая интеграция', - 'error-invalid-message': 'Недопустимое сообщение', - 'error-invalid-method': 'Недопустимый метод', - 'error-invalid-name': 'Недопустимое имя', - 'error-invalid-password': 'Неверный пароль', - 'error-invalid-redirectUri': 'Недопустимый redirectUri', - 'error-invalid-role': 'Недопустимая роль', - 'error-invalid-room': 'Недопустимый канал', - 'error-invalid-room-name': '{{room_name}} не является допустимым именем канала', - 'error-invalid-room-type': '{{type}} не является допустимым типом канала.', - 'error-invalid-settings': 'Недопустимые параметры', - 'error-invalid-subscription': 'Недействительная подписка', - 'error-invalid-token': 'Недопустимый токен', - 'error-invalid-triggerWords': 'Недопустимые триггеры', - 'error-invalid-urls': 'Недопустимые URL-адреса', - 'error-invalid-user': 'Недопустимый пользователь', - 'error-invalid-username': 'Неверное имя пользователя', - 'error-invalid-webhook-response': 'URL-адрес ответил статусом, отличным от 200', - 'error-message-deleting-blocked': 'Удаление сообщений заблокировано', - 'error-message-editing-blocked': 'Правка сообщений заблокирована', - 'error-message-size-exceeded': 'Размер сообщения превышает максимально разрешенный', - 'error-missing-unsubscribe-link': 'Вы должны указать ссылку [отписаться].', - 'error-no-tokens-for-this-user': 'Для этого пользователя нет токенов', - 'error-not-allowed': 'Не допускается', - 'error-not-authorized': 'Не разрешено', - 'error-push-disabled': 'Push отключен', - 'error-remove-last-owner': 'Это последний владелец. Прежде чем удалить его, установите нового владельца.', - 'error-role-in-use': 'Невозможно удалить роль, потому что она используется', - 'error-role-name-required': 'Требуется имя роли', - 'error-the-field-is-required': 'Требуется поле {{field}}.', - 'error-too-many-requests': 'Ошибка, слишком много запросов. Пожалуйста, помедленнее. Вы должны подождать {{seconds}} секунд, прежде чем повторить попытку.', - 'error-user-is-not-activated': 'Пользователь не активирован', - 'error-user-has-no-roles': 'Пользователь не имеет ролей', - 'error-user-limit-exceeded': 'Количество пользователей, которых вы пытаетесь пригласить на #channel_name, превышает лимит, установленный администратором', - 'error-user-not-in-room': 'Пользователя нет на этом канале', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'Регистрация пользователей отключена', - 'error-user-registration-secret': 'Регистрация пользователей разрешена только через секретный URL', - 'error-you-are-last-owner': 'Вы последний владелец. Пожалуйста, установите нового владельца, прежде чем покинуть комнату.', - Actions: 'Действия', - activity: 'активности', - Activity: 'По активности', - Add_Reaction: 'Добавить реакцию', - Add_Server: 'Добавить сервер', - Add_users: 'Добавить пользователей', - Admin_Panel: 'Панель админа', - Agent: 'Агент', - Alert: 'Оповещение', - alert: 'оповещение', - alerts: 'оповещения', - All_users_in_the_channel_can_write_new_messages: 'Все пользователи канала могут писать новые сообщения', - A_meaningful_name_for_the_discussion_room: 'Осмысленное имя для обсуждения', - All: 'Все', - All_Messages: 'Все сообщения', - Allow_Reactions: 'Разрешить реакции', - Alphabetical: 'По алфавиту', - and_more: 'и более', - and: 'и', - announcement: 'объявление', - Announcement: 'Объявление', - Apply_Your_Certificate: 'Применить ваш сертификат', - ARCHIVE: 'АРХИВ', - archive: 'архив', - are_typing: 'печатают', - Are_you_sure_question_mark: 'Вы уверены?', - Are_you_sure_you_want_to_leave_the_room: 'Вы действительно хотите покинуть чат {{room}}?', - Audio: 'Аудио', - Authenticating: 'Аутентификация', - Automatic: 'Автоматически', - Auto_Translate: 'Автоперевод', - Avatar_changed_successfully: 'Аватар успешно изменен!', - Avatar_Url: 'URL аватара', - Away: 'Отошел', - Back: 'Назад', - Black: 'Черный', - Block_user: 'Блокировать пользователя', - Browser: 'Браузер', - Broadcast_channel_Description: 'Только авторизованные пользователи могут писать новые сообщения, но другие пользователи смогут ответить', - Broadcast_Channel: 'Широковещательный канал', - Busy: 'Занят', - By_proceeding_you_are_agreeing: 'Продолжая, вы соглашаетесь с нашими', - Cancel_editing: 'Отменить правку', - Cancel_recording: 'Отменить запись', - Cancel: 'Отмена', - changing_avatar: 'изменение аватара', - creating_channel: 'создание канала', - creating_invite: 'создание приглашения', - Channel_Name: 'Название канала', - Channels: 'Каналы', - Chats: 'Чаты', - Call_already_ended: 'Вызов уже завершен!', - Clear_cookies_alert: 'Вы действительно хотите очистить все cookies?', - Clear_cookies_desc: 'Это действие очистит все ваши cookies для входа, это позволит вам войти под другой учетной записью.', - Clear_cookies_yes: 'Да, очистить cookies', - Clear_cookies_no: 'Нет, сохранить cookies', - Click_to_join: 'Нажмите, чтобы присоединиться!', - Close: 'Закрыть', - Close_emoji_selector: 'Закрыть выбор emoji', - Closing_chat: 'Закрытие чата', - Change_language_loading: 'Изменение языка.', - Chat_closed_by_agent: 'Чат закрыт агентом', - Choose: 'Выбрать', - Choose_from_library: 'Выбрать из библиотеки', - Choose_file: 'Выбрать файл', - Choose_where_you_want_links_be_opened: 'Выберите где вы хотите открывать ссылки', - Code: 'Код', - Code_or_password_invalid: 'Код или пароль не верны', - Collaborative: 'Совместный', - Confirm: 'Подтверждение', - Connect: 'Соединение', - Connected: 'Подключено', - connecting_server: 'подключение к серверу', - Connecting: 'Соединение...', - Contact_us: 'Связаться с нами', - Contact_your_server_admin: 'Свяжитесь с администратором сервера.', - Continue_with: 'Продолжить с', - Copied_to_clipboard: 'Скопировано в буфер обмена!', - Copy: 'Копировать', - Conversation: 'Диалог', - Permalink: 'Постоянная ссылка', - Certificate_password: 'Пароль сертификата', - Clear_cache: 'Очистить локальный кэш сервера', - Clear_cache_loading: 'Очистка кэша.', - Whats_the_password_for_your_certificate: 'Какой пароль для вашего сертификата?', - Create_account: 'Создать аккаунт', - Create_Channel: 'Создать канал', - Create_Direct_Messages: 'Создать личное сообщение', - Create_Discussion: 'Создать обсуждение', - Created_snippet: 'создать сниппет', - Create_a_new_workspace: 'Новое рабочее пространство', - Create: 'Создать', - Custom_Status: 'Персонализированный Статус', - Dark: 'Темный', - Dark_level: 'Уровень затемненности', - Default: 'По умолчанию', - Default_browser: 'Браузер по умолчанию', - Delete_Room_Warning: 'Удаление канала приведет к удалению всех сообщений, размещенных в нем. Это не может быть отменено.', - Department: 'Отдел', - delete: 'удалить', - Delete: 'Удалить', - DELETE: 'УДАЛИТЬ', - deleting_room: 'удаление чата', - description: 'описание', - Description: 'Описание', - Desktop_Options: 'Параметры рабочего стола', - Desktop_Notifications: 'Уведомления рабочего стола', - Desktop_Alert_info: 'Эти уведомления появятся на рабочем столе', - Directory: 'Директория', - Direct_Messages: 'Личные сообщения', - Disable_notifications: 'Отключить уведомления', - Discussions: 'Обсуждения', - Discussion_Desc: 'Помогают разобраться в том, что происходит! При создании Обсуждения, суб-канала одного из выбранных вами каналов так же создается и привязка к нему.', - Discussion_name: 'Имя Обсуждения', - Done: 'Готово', - Dont_Have_An_Account: 'Нет аккаунта?', - Do_you_have_an_account: 'У вас есть аккаунт?', - Do_you_have_a_certificate: 'У вас есть сертификат?', - Do_you_really_want_to_key_this_room_question_mark: 'Вы действительно хотите {{key}} этот канал?', - E2E_Encryption: 'E2E шифрование', - E2E_How_It_Works_info1: 'Теперь Вы можете создавать зашифрованные приватные чаты и личные сообщения. Вы так же можете изменить существующе приватные чаты и личные сообщения сделав их зашифрованными.', - E2E_How_It_Works_info2: 'Это *сквозное шифрование*, поэтому ключ для шифрования/расшифровки ваших сообщений не будет сохранен на сервере. Значит *Вам нужно сохранить этот пароль где-то в безопасном месте*, где он будет Вам доступен, если потребуется.', - E2E_How_It_Works_info3: 'В случаем продолжения, пароль Е2Е будет сгенерирован автоматически.', - E2E_How_It_Works_info4: 'Так же Вы можете задать новый пароль для вашего ключа шифрования в любое время при помощи браузера там же, где Вы ввели существующий Е2Е пароль.', - edit: 'править', - edited: 'исправлено', - Edit: 'Правка', - Edit_Status: 'Изменить статус', - Edit_Invite: 'Редактировать Приглашение', - End_to_end_encrypted_room: 'Чат со сквозным шифрованием', - end_to_end_encryption: 'сквозное шифрование', - Email_Notification_Mode_All: 'Каждое Упоминание/Личное сообщение', - Email_Notification_Mode_Disabled: 'Отключено', - Email_or_password_field_is_empty: 'Поле электронной почты или пароля пусты', - Email: 'E-mail', - email: 'e-mail', - Empty_title: 'Пустой заголовок', - Enable_Auto_Translate: 'Включить автоперевод', - Enable_notifications: 'Включить уведомления', - Encrypted: 'Зашифрован', - Encrypted_message: 'Зашифрованное сообщение', - Enter_Your_E2E_Password: 'Введите Ваш E2E Пароль', - Enter_Your_Encryption_Password_desc1: 'Вы сможете получить доступ к вашим зашифрованным приватным чатам и личным сообщениям.', - Enter_Your_Encryption_Password_desc2: 'Вам нужно ввести пароль для шифрования/расшифровки сообщений в каждом клиенте.', - Encryption_error_title: 'Введен не верный пароль шифрования', - Encryption_error_desc: 'Невозможно расшифровать ваш ключ шифрования, чтобы импортировать его', - Everyone_can_access_this_channel: 'Каждый может получить доступ к этому каналу', - Error_uploading: 'Ошибка загрузки', - Expiration_Days: 'Срок действия (Дни)', - Favorite: 'Избранное', - Favorites: 'Избранные', - Files: 'Файлы', - File_description: 'Описание файла', - File_name: 'Имя файла', - Finish_recording: 'Завершить запись', - Following_thread: 'Следить за тредом', - For_your_security_you_must_enter_your_current_password_to_continue: 'В целях вашей безопасности вы должны ввести свой текущий пароль для продолжения', - Forgot_password_If_this_email_is_registered: 'Если эта электронная почта зарегистрирована, мы отправим инструкции о том, как сбросить пароль. Если вы не получите письмо в ближайшее время, вернитесь и повторите попытку.', - Forgot_password: 'Забыли пароль', - Forgot_Password: 'Забыли Пароль', - Forward: 'Перенаправить', - Forward_Chat: 'Перенаправить Чат', - Forward_to_department: 'Перенаправить в отдел', - Forward_to_user: 'Перенаправить пользователю', - Full_table: 'Нажмите, чтобы увидеть полную таблицу', - Generate_New_Link: 'Сгенерировать Новую Ссылку', - Group_by_favorites: 'По избранным', - Group_by_type: 'По типу', - Hide: 'Скрыть', - Has_joined_the_channel: 'присоединился к каналу', - Has_joined_the_conversation: 'присоединился к беседе', - Has_left_the_channel: 'покинул канал', - Hide_System_Messages: 'Скрыть Системные Сообщения', - Hide_type_messages: 'Скрыть "{{type}}" сообщения', - How_It_Works: 'Как Это Работает', - Message_HideType_uj: 'Пользователь Присоединился', - Message_HideType_ul: 'Пользователь Покинул', - Message_HideType_ru: 'Пользователь Удален', - Message_HideType_au: 'Пользователь Добавлен', - Message_HideType_mute_unmute: 'Пользователь Заглушен / Заглушивание отменено', - Message_HideType_r: 'Имя Чата Изменено', - Message_HideType_ut: 'Пользователь Присоединился к Беседе', - Message_HideType_wm: 'Добро пожаловать', - Message_HideType_rm: 'Сообщение Удалено', - Message_HideType_subscription_role_added: 'Была назначена Роль', - Message_HideType_subscription_role_removed: 'Роль более не определена', - Message_HideType_room_archived: 'Чат Архивирован', - Message_HideType_room_unarchived: 'Чат Разархивирован', - I_Saved_My_E2E_Password: 'Я Сохранил Свой E2E Пароль', - IP: 'IP', - In_app: 'В приложении', - In_App_And_Desktop: 'В приложении и на десктопе', - In_App_and_Desktop_Alert_info: 'Отображает баннер в верхней части экрана, когда приложение открыто, и отображает уведомление на рабочем столе.', - Invisible: 'Невидимый', - Invite: 'Приглашение', - is_a_valid_RocketChat_instance: 'является действительным сервером Rocket.Chat', - is_not_a_valid_RocketChat_instance: 'не является действительным сервером Rocket.Chat', - is_typing: 'печатает', - Invalid_or_expired_invite_token: 'Токен приглашения не действителен или с истекшим сроком действия', - Invalid_server_version: 'Сервер, к которому вы пытаетесь подключиться, использует версию, которая больше не поддерживается приложением: {{currentVersion}}.\n\nНам нужна версия {{minVersion}}', - Invite_Link: 'Ссылка Приглашения', - Invite_users: 'Приглашение пользователей', - Join: 'Присоединиться', - Join_our_open_workspace: 'Присоединиться к нашему открытому серверу', - Join_your_workspace: 'Присоединиться к вашему серверу', - Just_invited_people_can_access_this_channel: 'Только приглашенные люди могут получить доступ к этому каналу', - Language: 'Язык', - last_message: 'последнее сообщение', - Leave_channel: 'Покинуть канал', - leaving_room: 'покинуть комнату', - leave: 'покинуть', - Legal: 'Правовые аспекты', - Light: 'Светлая', - License: 'Лицензия', - Livechat: 'Livechat', - Livechat_edit: 'Редактирование Livechat', - Login: 'Вход', - Login_error: 'Ваши учетные данные были отклонены! Пожалуйста, попробуйте еще раз.', - Login_with: 'Войти с', - Logging_out: 'Осуществляется выход.', - Logout: 'Выйти', - Max_number_of_uses: 'Максимальное количество', - Max_number_of_users_allowed_is_number: 'Максимальное количество разрешенных пользователей {{maxUsers}}', - members: 'пользователи', - Members: 'Пользователи', - Mentioned_Messages: 'Упомянутые сообщения', - mentioned: 'упомянутые', - Mentions: 'Упоминания', - Message_accessibility: 'Сообщение от {{user}} в {{time}}: {{message}}', - Message_actions: 'Действия с сообщением', - Message_pinned: 'Сообщение прикреплено', - Message_removed: 'Сообщение удалено', - Message_starred: 'Сообщение отмечено звездой', - Message_unstarred: 'Отметка сообщения звездой удалена', - message: 'сообщение', - messages: 'сообщения', - Message: 'Сообщение', - Messages: 'Сообщения', - Message_Reported: 'Сообщение отправлено', - Microphone_Permission_Message: 'Rocket.Chat нужен доступ к вашему микрофону, чтобы вы могли отправлять аудио сообщения.', - Microphone_Permission: 'Разрешение на использование микрофона', - Mute: 'Заглушить', - muted: 'Заглушен', - My_servers: 'Мои серверы', - N_person_reacted: '{{n}} людей отреагировало', - N_users: '{{n}} пользователи', - name: 'имя', - Name: 'Имя', - Navigation_history: 'История навигации', - Never: 'Никогда', - New_Message: 'Новое сообщение', - New_Password: 'Новый пароль', - New_Server: 'Новый сервер', - Next: 'Далее', - No_files: 'Нет файлов', - No_limit: 'Нет ограничений', - No_mentioned_messages: 'Нет упоминаний', - No_pinned_messages: 'Нет прикрепленных сообщений', - No_results_found: 'Ничего не найдено', - No_starred_messages: 'Нет отмеченных сообщений', - No_thread_messages: 'Нет сообщений в теме', - No_label_provided: '{{label}} не указан.', - No_Message: 'Нет сообщения', - No_messages_yet: 'Пока нет сообщений', - No_Reactions: 'Нет реакций', - No_Read_Receipts: 'Нет информации о прочтении', - Not_logged: 'Не зарегистрирован', - Not_RC_Server: 'Это не сервер Rocket.Chat.\n{{contact}}', - Nothing: 'Ничего', - Nothing_to_save: 'Нечего сохранять!', - Notify_active_in_this_room: 'Уведомить всех активных пользователей в этом чате', - Notify_all_in_this_room: 'Уведомить всех в этом чате', - Notifications: 'Уведомления', - Notification_Duration: 'Продолжительность уведомлений', - Notification_Preferences: 'Настройки уведомлений', - No_available_agents_to_transfer: 'Нет свободных агентов для передачи', - Offline: 'Офлайн', - Oops: 'Упс!', - Omnichannel: 'Omnichannel', - Open_Livechats: 'Чаты в Работе', - Omnichannel_enable_alert: 'Вы не доступны в Omnichannel. Хотите стать доступными?', - Onboarding_description: 'Сервер это пространство для взаимодействия вашей команды или организации. Уточните адрес сервера у вашего администратора или создайте свой сервер для команды.', - Onboarding_join_workspace: 'Присоединиться к серверу', - Onboarding_subtitle: 'За пределами Командного Взаимодействия', - Onboarding_title: 'Добро пожаловать в Rocket.Chat', - Onboarding_join_open_description: 'Присоединяйтесь к нашему открытому серверу, чтобы пообщаться с командой и сообществом Rocket.Chat.', - Onboarding_agree_terms: 'Продолжая вы соглашаетесь с правилами Rocket.Chat', - Onboarding_less_options: 'Меньше опций', - Onboarding_more_options: 'Больше опций', - Online: 'В сети', - Only_authorized_users_can_write_new_messages: 'Только авторизованные пользователи могут писать новые сообщения', - Open_emoji_selector: 'Открыть выбор emoji', - Open_Source_Communication: 'Общение с открытым кодом', - Open_your_authentication_app_and_enter_the_code: 'Откройте ваше приложение для аутентификации и введите код и него.', - OR: 'ИЛИ', - OS: 'ОС', - Overwrites_the_server_configuration_and_use_room_config: 'Перезаписывает конфигурацию сервера и использует конфигурацию чата', - Password: 'Пароль', - Parent_channel_or_group: 'Родительский канал или чат', - Permalink_copied_to_clipboard: 'Постоянная ссылка скопирована в буфер обмена!', - Phone: 'Телефон', - Pin: 'Прикрепить сообщение', - Pinned_Messages: 'Прикрепленные сообщения', - pinned: 'прикреплено', - Pinned: 'Прикреплено', - Please_add_a_comment: 'Пожалуйста добавьте комментарий', - Please_enter_your_password: 'Пожалуйста введите ваш пароль', - Please_wait: 'Пожалуйста подождите.', - Preferences: 'Настройки', - Preferences_saved: 'Настройки сохранены!', - Privacy_Policy: ' Политика конфиденциальности', - Private_Channel: 'Приватный канал', - Private_Groups: 'Приватные группы', - Private: 'Приватный', - Processing: 'Обработка...', - Profile_saved_successfully: 'Профиль успешно сохранен!', - Profile: 'Профиль', - Public_Channel: 'Публичный канал', - Public: 'Публичный', - Push_Notifications: 'Push Уведомления', - Push_Notifications_Alert_Info: 'Эти уведомления доставляются вам, когда приложение не открыто', - Quote: 'Цитата', - Reactions_are_disabled: 'Реакции отключены', - Reactions_are_enabled: 'Реакции активированы', - Reactions: 'Реакции', - Read: 'Читать', - Read_External_Permission_Message: 'Rocket.Chat необходим доступ к фотографиям, медиа и другим файлам на вашем устройстве', - Read_External_Permission: 'Разрешение на Чтение Медиа', - Read_Only_Channel: 'Канал только для чтения', - Read_Only: 'Только для чтения', - Read_Receipt: 'Уведомление о прочтении', - Receive_Group_Mentions: 'Получать групповые уведомления', - Receive_Group_Mentions_Info: 'Получать @all и @here уведомления', - Register: 'Зарегистрировать', - Repeat_Password: 'Повторите пароль', - Replied_on: 'Ответил на:', - replies: 'ответы', - reply: 'ответить', - Reply: 'Ответить', - Report: 'Жалоба', - Receive_Notification: 'Получать уведомления', - Receive_notifications_from: 'Получать уведомления от {{name}}', - Resend: 'Отправить повторно', - Reset_password: 'Сброс пароля', - resetting_password: 'сброс пароля', - RESET: 'СБРОС', - Return: 'Возврат', - Review_app_title: 'Нравится ли вам это приложение?', - Review_app_desc: 'Поставьте нам 5 звезд в {{store}}', - Review_app_yes: 'Конечно!', - Review_app_no: 'Нет', - Review_app_later: 'Может позже', - Review_app_unable_store: 'Невозможно открыть {{store}}', - Review_this_app: 'Оценить это приложение', - Remove: 'Удалить', - Roles: 'Роли', - Room_actions: 'Действия с чатом', - Room_changed_announcement: 'Объявление чата было изменено на: {{announcement}} пользователем {{userBy}}', - Room_changed_avatar: 'Аватар чата изменен пользователем {{userBy}}', - Room_changed_description: 'Описание чата было изменено на: {{description}} пользователем {{userBy}}', - Room_changed_privacy: 'Тип чата был изменен на: {{type}} пользователем {{userBy}}', - Room_changed_topic: 'Тема чата была изменена на: {{topic}} пользователем {{userBy}}', - Room_Files: 'Файлы', - Room_Info_Edit: 'Изменить информацию о чате', - Room_Info: 'Информация о канале', - Room_Members: 'Пользователи', - Room_name_changed: 'Название чата было изменено на: {{name}} пользователем {{userBy}}', - SAVE: 'СОХРАНИТЬ', - Save_Changes: 'Сохранить изменения', - Save: 'Сохранить', - Saved: 'Сохранено', - saving_preferences: 'сохранение персональных настроек', - saving_profile: 'сохранение профиля', - saving_settings: 'сохранение настроек', - saved_to_gallery: 'Сохранено в Галерею', - Save_Your_E2E_Password: 'Сохранить Ваш E2E Пароль', - Save_Your_Encryption_Password: 'Сохранить Ваш Пароль Шифрования', - Save_Your_Encryption_Password_warning: 'Этот пароль не сохраняется нигде, поэтому бережно сохраните его в надежном месте.', - Save_Your_Encryption_Password_info: 'Имейте ввиду, что если вы потеряете свой пароль, его будет невозможно восстановить и вы потеряете доступ к вашим сообщениям.', - Search_Messages: 'Поиск сообщений', - Search: 'Поиск', - Search_by: 'Поиск по', - Search_global_users: 'Глобальный поиск пользователей', - Search_global_users_description: 'При активации станет возможен поиск пользователей на других серверах.', - Seconds: '{{second}} секунд', - Security_and_privacy: 'Безопасность и конфиденциальность', - Select_Avatar: 'Выбор аватара', - Select_Server: 'Выбор сервера', - Select_Users: 'Выбор пользователей', - Select_a_Channel: 'Выбор Канала', - Select_a_Department: 'Выбор отдела', - Select_an_option: 'Выбор Опции', - Select_a_User: 'Выбор Пользователя', - Send: 'Отправить', - Send_audio_message: 'Отправить аудиосообщение', - Send_crash_report: 'Отправить отчет об ошибке', - Send_message: 'Отправить сообщение', - Send_me_the_code_again: 'Отправить мне код снова', - Send_to: 'Отправить...', - Sending_to: 'Отправляется', - Sent_an_attachment: 'Отправить вложение', - Server: 'Сервер', - Servers: 'Серверы', - Server_version: 'Версия сервера: {{version}}', - Set_username_subtitle: 'Имя пользователя необходимо для того, чтобы позволить другим упомянуть вас в сообщениях', - Set_custom_status: 'Установить персонализированный статус', - Set_status: 'Установить статус', - Status_saved_successfully: 'Статус установлен успешно!', - Settings: 'Настройки', - Settings_succesfully_changed: 'Настройки успешно изменены!', - Share: 'Поделиться', - Share_Link: 'Ссылка, чтобы Поделиться', - Share_this_app: 'Рассказать о приложении', - Show_more: 'Показать больше..', - Show_Unread_Counter: 'Показать счетчик непрочитанных', - Show_Unread_Counter_Info: 'Счетчик непрочитанных отображается в виде значка справа от канала в списке каналов', - Sign_in_your_server: 'Войдите на ваш сервер', - Sign_Up: 'Регистрация', - Some_field_is_invalid_or_empty: 'Некоторые поля недопустимы или пусты', - Sorting_by: 'Сортировка по {{key}}', - Sound: 'Звук', - Star_room: 'В избранное', - Star: 'Отметить', - Starred_Messages: 'Отмеченные сообщения', - starred: 'отмечено', - Starred: 'Отмечено', - Start_of_conversation: 'Начало разговора', - Start_a_Discussion: 'Начать Обсуждение', - Started_discussion: 'Началось обсуждение :', - Started_call: 'Звонок, начат {{userBy}}', - Submit: 'Отправить', - Table: 'Таблица', - Tags: 'Тэги', - Take_a_photo: 'Сделать фото', - Take_a_video: 'Записать видео', - Take_it: 'Снять!', - tap_to_change_status: 'нажмите для изменения статуса', - Tap_to_view_servers_list: 'Нажмите, чтобы просмотреть список серверов', - Terms_of_Service: ' Условия использования ', - Theme: 'Тема', - The_user_wont_be_able_to_type_in_roomName: 'Пользователь не сможет писать сообщения в {{roomName}}', - The_user_will_be_able_to_type_in_roomName: 'Пользователь сможет писать сообщения в {{roomName}}', - There_was_an_error_while_action: 'Произошла ошибка в процессе {{action}}!', - This_room_is_blocked: 'Этот чат заблокирован', - This_room_is_read_only: 'Этот чат доступен только для чтения', - Thread: 'Тред', - Threads: 'Треды', - Timezone: 'Часовой пояс', - To: 'К', - topic: 'тема', - Topic: 'Тема', - Translate: 'Перевести', - Try_again: 'Попробуйте еще раз', - Two_Factor_Authentication: 'Двухфакторная аутентификация', - Type_the_channel_name_here: 'Введите название канала здесь', - unarchive: 'разархивировать', - UNARCHIVE: 'РАЗАРХИВИРОВАТЬ', - Unblock_user: 'Разблокировать пользователя', - Unfavorite: 'Удалить из избранного', - Unfollowed_thread: 'Не следить', - Unmute: 'Отменить заглушивание', - unmuted: 'Заглушивание отменено', - Unpin: 'Открепить', - unread_messages: 'непрочитанные', - Unread: 'Непрочитанные', - Unread_on_top: 'Непрочитанные сверху', - Unstar: 'Снять отметку', - Updating: 'Обновление...', - Uploading: 'Загрузка', - Upload_file_question_mark: 'Загрузить файл?', - User: 'Пользователь', - Users: 'Пользователи', - User_added_by: 'Пользователь {{userAdded}} добавлен по решению {{userBy}}', - User_Info: 'Информация о пользователе', - User_has_been_key: 'Пользователь был {{key}}', - User_is_no_longer_role_by_: '{{user}} больше не {{role}} по решению {{userBy}}', - User_muted_by: 'Пользователь {{userMuted}} заглушен по решению {{userBy}}', - User_removed_by: 'Пользователь {{userRemoved}} удален по решению {{userBy}}', - User_sent_an_attachment: '{{user}} отправил вложение', - User_unmuted_by: 'Пользователь {{userUnmuted}} перестал быть заглушенным по решению {{userBy}}', - User_was_set_role_by_: '{{user}} был назначен {{role}} пользователем {{userBy}}', - Username_is_empty: 'Имя пользователя пусто', - Username: 'Имя пользователя', - Username_or_email: 'Имя пользователя или email', - Uses_server_configuration: 'Используется конфигурация сервера', - Validating: 'Проверка', - Registration_Succeeded: 'Регистрация Успешна!', - Verify: 'Проверить', - Verify_email_title: 'Регистрация Успешна!', - Verify_email_desc: 'Вам был отправлен email для подтверждения регистрации. Если вы не получили этого сообщения, пожалуйста, попробуйте еще раз.', - Verify_your_email_for_the_code_we_sent: 'Проверка вашего email с помощью отправленного нами кода', - Video_call: 'Видеозвонок', - View_Original: 'Посмотреть оригинал', - Voice_call: 'Голосовой вызов', - Waiting_for_network: 'Ожидание сети...', - Websocket_disabled: 'Websocket отключен для этого сервера.\n{{contact}}', - Welcome: 'Добро пожаловать,', - What_are_you_doing_right_now: 'Что вы делаете сейчас?', - Whats_your_2fa: 'Какой у вас код 2FA?', - Without_Servers: 'Без серверов', - Workspaces: 'Серверы', - Would_you_like_to_return_the_inquiry: 'Вы хотите отозвать запрос?', - Write_External_Permission_Message: 'Rocket.Chat необходим доступ к ваше Галерее, чтобы Вы могли сохранять изображения.', - Write_External_Permission: 'Разрешения на запись в Галерею', - Yes: 'Да', - Yes_action_it: 'Да, {{action}} это!', - Yesterday: 'Вчера', - You_are_in_preview_mode: 'Вы находитесь в режиме предварительного просмотра', - You_are_offline: 'Вы не в сети', - You_can_search_using_RegExp_eg: 'Вы можете выполнить поиск с помощью регулярных выражений, например `/^text$/i`', - You_colon: 'Вы: ', - you_were_mentioned: 'вы были упомянуты', - You_were_removed_from_channel: 'Вы были удалены из {{channel}}', - you: 'вы', - You: 'Вы', - Logged_out_by_server: 'Сервером произведен ваш выход из системы. Пожалуйста, войдите снова.', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Вам нужно получить доступ как минимум к одному серверу Rocket.Chat, чтобы поделиться чем-то.', - You_need_to_verifiy_your_email_address_to_get_notications: 'Вам необходимо проверить ваш email адрес, чтобы получать уведомления', - Your_certificate: 'Ваш сертификат', - Your_invite_link_will_expire_after__usesLeft__uses: 'Ваша ссылка-приглашение станет не действительной после {{usesLeft}} ее использований.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Ваша ссылка-приглашение станет не действительной {{date}} или после {{usesLeft}} ее использований.', - Your_invite_link_will_expire_on__date__: 'Срок действия вашей ссылки-приглашения будет окончен {{date}}.', - Your_invite_link_will_never_expire: 'Ваша ссылка-приглашение никогда не будет просроченной.', - Your_workspace: 'Ваш сервер', - Your_password_is: 'Ваш пароль', - Version_no: 'Версия: {{version}}', - You_will_not_be_able_to_recover_this_message: 'Вы не сможете восстановить это сообщение!', - You_will_unset_a_certificate_for_this_server: 'Вы произведете сброс сертификата для этого сервера', - Change_Language: 'Изменить язык', - Crash_report_disclaimer: 'Мы никогда не отслеживаем содержание ваших чатов. Отчет о сбое содержит только важную для нас информацию для выявления проблем и их устранения.', - Type_message: 'Написать сообщение', - Room_search: 'Поиск в чате', - Room_selection: 'Выбор чата 1...9', - Next_room: 'Следующий чат', - Previous_room: 'Предыдущий чат', - New_room: 'Новый чат', - Upload_room: 'Загрузить в чат', - Search_messages: 'Поиск сообщений', - Scroll_messages: 'Прокрутка сообщений', - Reply_latest: 'Ответить на последнее', - Reply_in_Thread: 'Ответить в Треде', - Server_selection: 'Выбор сервера', - Server_selection_numbers: 'Выбор сервера 1...9', - Add_server: 'Добавить сервер', - New_line: 'Новая линия', - You_will_be_logged_out_of_this_application: 'Будет осуществлен ваш выход из этого приложения.', - Clear: 'Очистка', - This_will_clear_all_your_offline_data: 'Это очистит все ваши офлайн данные.', - This_will_remove_all_data_from_this_server: 'Это удалит все данные с этого сервера.', - Mark_unread: 'Отметить Непрочитанным', - Wait_activation_warning: 'До того как вы сможете войти, ваш аккаунт должен быть вручную активирован администратором сервера.', - Screen_lock: 'Блокировка экрана', - Local_authentication_biometry_title: 'Аутентификация', - Local_authentication_biometry_fallback: 'Использовать пароль', - Local_authentication_unlock_option: 'Разблокировать при помощи Пароля', - Local_authentication_change_passcode: 'Изменить Пароль', - Local_authentication_info: 'Внимание: Если вы забудете ваш Пароль, вам нужно будет удалить и заново установить это приложение.', - Local_authentication_facial_recognition: 'распознавания лица', - Local_authentication_fingerprint: 'отпечатка пальца', - Local_authentication_unlock_with_label: 'Разблокировать при помощи {{label}}', - Local_authentication_auto_lock_60: 'Через 1 минуту', - Local_authentication_auto_lock_300: 'Через 5 минут', - Local_authentication_auto_lock_900: 'Через 15 минут', - Local_authentication_auto_lock_1800: 'Через 30 минут', - Local_authentication_auto_lock_3600: 'Через 1 час', - Passcode_enter_title: 'Введите ваш пароль', - Passcode_choose_title: 'Выберите ваш новый пароль', - Passcode_choose_confirm_title: 'Подтвердите ваш новый пароль', - Passcode_choose_error: 'Пароли не соответствуют. Попробуйте еще раз.', - Passcode_choose_force_set: 'Пароль затребован вашим администратором', - Passcode_app_locked_title: 'Приложение заблокировано', - Passcode_app_locked_subtitle: 'Попробуйте снова через {{timeLeft}} секунд', - After_seconds_set_by_admin: 'Через {{seconds}} секунд (установлено администратором сервера)', - Dont_activate: 'Не активировать сейчас', - Queued_chats: 'Чаты в очереди', - Queue_is_empty: 'Очередь пуста', - Logout_from_other_logged_in_locations: 'Выйти из всех других подключенных расположений', - You_will_be_logged_out_from_other_locations: 'Будет произведен ваш выход из всех других подключенных расположений.', - Logged_out_of_other_clients_successfully: 'Выход из других клиентских подключений выполнен успешно', - Logout_failed: 'Выход не успешен!', - Log_analytics_events: 'Журнал событий аналитики', - E2E_encryption_change_password_title: 'Изменить пароль шифрования', - E2E_encryption_change_password_description: 'Теперь вы можете создавать зашифрованные приватные чаты и личные беседы. Вы так же можете сделать существующие приватные чаты и личные беседы шифрованными. \nЭто сквозное шифрование, поэтому ключ для шифрования и дешифрования ваших сообщений не будет сохранен на сервере. Именно поэтому вам необходимо сохранить ваш пароль в надежном и безопасном месте. Вам необходимо вводить этот пароль на всех устройствах, где вы хотите использовать E2E шифрование.', - E2E_encryption_change_password_error: 'Ошибка при смене пароля E2E ключа!', - E2E_encryption_change_password_success: 'Пароль ключа E2E изменен успешно!', - E2E_encryption_change_password_message: 'Убедитесь, что вы сохранили пароль в надежном месте.', - E2E_encryption_change_password_confirmation: 'Да, изменить его', - E2E_encryption_reset_title: 'Сбросить E2E ключ', - E2E_encryption_reset_description: 'Эта опция удалит ваш текущий E2E ключ и произведет ваш выход из системы. \nКогда вы снова войдете в систему, Rocket.Chat сгенерирует для вас новый ключ и восстановит ваш доступ ко всем зашифрованным чатам, в которых есть пользователи в сети. \nИсходя из природы E2E шифрования, Rocket.Chat не сможет восстановить доступ к чатам, в которых нет участников в сети.', - E2E_encryption_reset_button: 'Сбросить E2E ключ', - E2E_encryption_reset_error: 'Ошибка при сбросе E2E ключа!', - E2E_encryption_reset_message: 'Будет совершен ваш выход из системы.', - E2E_encryption_reset_confirmation: 'Да, сбросить его', - Following: 'Следить', - Threads_displaying_all: 'Показать все', - Threads_displaying_following: 'Показать отслеживаемые', - Threads_displaying_unread: 'Показать непрочитанные', - No_threads: 'Тредов нет', - No_threads_following: 'Нет тредов, за которыми вы следите', - No_threads_unread: 'Непрочитанных тредов нет', - Messagebox_Send_to_channel: 'Отправить в чат', - Set_as_leader: 'Назначить лидером', - Set_as_moderator: 'Назначить модератором', - Set_as_owner: 'Назначить владельцем', - Remove_as_leader: 'Удалить из лидеров', - Remove_as_moderator: 'Удалить из модераторов', - Remove_as_owner: 'Удалить из владельцев', - Remove_from_room: 'Удалить из чата', - Ignore: 'Игнориновать', - Unignore: 'Прекратить игнорировать', - User_has_been_ignored: 'Пользователь теперь игнорируется', - User_has_been_unignored: 'Пользователь больше не игнорируется', - User_has_been_removed_from_s: 'Пользователь удален из {{s}}', - User__username__is_now_a_leader_of__room_name_: 'Пользователь {{username}} больше не лидер в чате {{room_name}}', - User__username__is_now_a_moderator_of__room_name_: 'Пользователь {{username}} больше не модератор в чате {{room_name}}', - User__username__is_now_a_owner_of__room_name_: 'Пользователь {{username}} больше не владелец в чате {{room_name}}', - User__username__removed_from__room_name__leaders: 'Пользователь {{username}} удален из {{room_name}} лидеров', - User__username__removed_from__room_name__moderators: 'Пользователь {{username}} удален из {{room_name}} модераторов', - User__username__removed_from__room_name__owners: 'Пользователь {{username}} удален из {{room_name}} владельцев', - The_user_will_be_removed_from_s: 'Пользователь будет удален из {{s}}', - Yes_remove_user: 'Да, удалить пользователя!', - Direct_message: 'Личное сообщение', - Message_Ignored: 'Сообщение игнорируется. Тапните по нему, чтобы отобразить его.', - Enter_workspace_URL: 'Введите URL вашего рабочего пространства', - Workspace_URL_Example: 'Например, your-company.rocket.chat', - This_room_encryption_has_been_enabled_by__username_: 'Шифрование для этого чата включено {{username}}', - This_room_encryption_has_been_disabled_by__username_: 'Шифрование для этого чата выключено {{username}}' -}; diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json new file mode 100644 index 00000000000..d63a078a525 --- /dev/null +++ b/app/i18n/locales/ru.json @@ -0,0 +1,708 @@ +{ + "1_person_reacted": "1 человек отреагировал", + "1_user": "1 пользователь", + "error-action-not-allowed": "{{action}} не допускается", + "error-application-not-found": "Приложение не найдено", + "error-archived-duplicate-name": "Есть архивный канал с именем {{room_name}}", + "error-avatar-invalid-url": "Недопустимый URL-адрес аватара: {{url}}", + "error-avatar-url-handling": "Ошибка при обработке настроек аватара с URL-адреса ({{url}}) для {{username}}", + "error-cant-invite-for-direct-room": "Невозможно пригласить пользователя в личную переписку", + "error-could-not-change-email": "Не удалось изменить адрес электронной почты", + "error-could-not-change-name": "Не удалось изменить имя", + "error-could-not-change-username": "Не удалось изменить имя пользователя", + "error-could-not-change-status": "Не удалось изменить статус", + "error-delete-protected-role": "Не удается удалить защищенную роль", + "error-department-not-found": "Отдел не найден", + "error-direct-message-file-upload-not-allowed": "Общий доступ к файлам не разрешен в личных сообщениях", + "error-duplicate-channel-name": "Канал с именем {{channel_name}} существует", + "error-email-domain-blacklisted": "Домен электронной почты включен в черный список", + "error-email-send-failed": "Ошибка при попытке отправить электронное письмо: {{message}}", + "error-save-image": "Ошибка при попытке сохранить изображение", + "error-save-video": "Ошибка при попытке сохранить видео", + "error-field-unavailable": "{{field}} уже используется :(", + "error-file-too-large": "Файл слишком большой", + "error-importer-not-defined": "Импортер не был определен правильно, ему не хватает класса Import.", + "error-input-is-not-a-valid-field": "{{input}} недействительно {{field}}", + "error-invalid-actionlink": "Недействительная ссылка действия", + "error-invalid-arguments": "Недопустимые аргументы", + "error-invalid-asset": "Недопустимый ресурс", + "error-invalid-channel": "Недействительный канал.", + "error-invalid-channel-start-with-chars": "Недействительный канал. Начните с @ или #", + "error-invalid-custom-field": "Неверное настраиваемое поле", + "error-invalid-custom-field-name": "Неверное имя настраиваемого поля. Используйте только буквы, цифры, дефисы и символы подчеркивания.", + "error-invalid-date": "Указана недопустимая дата.", + "error-invalid-description": "Недопустимое описание", + "error-invalid-domain": "Недопустимый домен", + "error-invalid-email": "Неверный адрес электронной почты {{email}}", + "error-invalid-email-address": "Неверный адрес электронной почты", + "error-invalid-file-height": "Недопустимая высота файла", + "error-invalid-file-type": "Неверный тип файла", + "error-invalid-file-width": "Недопустимая ширина файла", + "error-invalid-from-address": "Вы указали неверный адрес FROM.", + "error-invalid-integration": "Недопустимая интеграция", + "error-invalid-message": "Недопустимое сообщение", + "error-invalid-method": "Недопустимый метод", + "error-invalid-name": "Недопустимое имя", + "error-invalid-password": "Неверный пароль", + "error-invalid-redirectUri": "Недопустимый redirectUri", + "error-invalid-role": "Недопустимая роль", + "error-invalid-room": "Недопустимый канал", + "error-invalid-room-name": "{{room_name}} не является допустимым именем канала", + "error-invalid-room-type": "{{type}} не является допустимым типом канала.", + "error-invalid-settings": "Недопустимые параметры", + "error-invalid-subscription": "Недействительная подписка", + "error-invalid-token": "Недопустимый токен", + "error-invalid-triggerWords": "Недопустимые триггеры", + "error-invalid-urls": "Недопустимые URL-адреса", + "error-invalid-user": "Недопустимый пользователь", + "error-invalid-username": "Неверное имя пользователя", + "error-invalid-webhook-response": "URL-адрес ответил статусом, отличным от 200", + "error-message-deleting-blocked": "Удаление сообщений заблокировано", + "error-message-editing-blocked": "Правка сообщений заблокирована", + "error-message-size-exceeded": "Размер сообщения превышает максимально разрешенный", + "error-missing-unsubscribe-link": "Вы должны указать ссылку [отписаться].", + "error-no-tokens-for-this-user": "Для этого пользователя нет токенов", + "error-not-allowed": "Не допускается", + "error-not-authorized": "Не разрешено", + "error-push-disabled": "Push отключен", + "error-remove-last-owner": "Это последний владелец. Прежде чем удалить его, установите нового владельца.", + "error-role-in-use": "Невозможно удалить роль, потому что она используется", + "error-role-name-required": "Требуется имя роли", + "error-the-field-is-required": "Требуется поле {{field}}.", + "error-too-many-requests": "Ошибка, слишком много запросов. Пожалуйста, помедленнее. Вы должны подождать {{seconds}} секунд, прежде чем повторить попытку.", + "error-user-is-not-activated": "Пользователь не активирован", + "error-user-has-no-roles": "Пользователь не имеет ролей", + "error-user-limit-exceeded": "Количество пользователей, которых вы пытаетесь пригласить на #channel_name, превышает лимит, установленный администратором", + "error-user-not-in-room": "Пользователя нет на этом канале", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "Регистрация пользователей отключена", + "error-user-registration-secret": "Регистрация пользователей разрешена только через секретный URL", + "error-you-are-last-owner": "Вы последний владелец. Пожалуйста, установите нового владельца, прежде чем покинуть комнату.", + "Actions": "Действия", + "activity": "активности", + "Activity": "По активности", + "Add_Reaction": "Добавить реакцию", + "Add_Server": "Добавить сервер", + "Add_users": "Добавить пользователей", + "Admin_Panel": "Панель админа", + "Agent": "Агент", + "Alert": "Оповещение", + "alert": "оповещение", + "alerts": "оповещения", + "All_users_in_the_channel_can_write_new_messages": "Все пользователи канала могут писать новые сообщения", + "A_meaningful_name_for_the_discussion_room": "Осмысленное имя для обсуждения", + "All": "Все", + "All_Messages": "Все сообщения", + "Allow_Reactions": "Разрешить реакции", + "Alphabetical": "По алфавиту", + "and_more": "и более", + "and": "и", + "announcement": "объявление", + "Announcement": "Объявление", + "Apply_Your_Certificate": "Применить ваш сертификат", + "ARCHIVE": "АРХИВ", + "archive": "архив", + "are_typing": "печатают", + "Are_you_sure_question_mark": "Вы уверены?", + "Are_you_sure_you_want_to_leave_the_room": "Вы действительно хотите покинуть чат {{room}}?", + "Audio": "Аудио", + "Authenticating": "Аутентификация", + "Automatic": "Автоматически", + "Auto_Translate": "Автоперевод", + "Avatar_changed_successfully": "Аватар успешно изменен!", + "Avatar_Url": "URL аватара", + "Away": "Отошел", + "Back": "Назад", + "Black": "Черный", + "Block_user": "Блокировать пользователя", + "Browser": "Браузер", + "Broadcast_channel_Description": "Только авторизованные пользователи могут писать новые сообщения, но другие пользователи смогут ответить", + "Broadcast_Channel": "Широковещательный канал", + "Busy": "Занят", + "By_proceeding_you_are_agreeing": "Продолжая, вы соглашаетесь с нашими", + "Cancel_editing": "Отменить правку", + "Cancel_recording": "Отменить запись", + "Cancel": "Отмена", + "changing_avatar": "изменение аватара", + "creating_channel": "создание канала", + "creating_invite": "создание приглашения", + "Channel_Name": "Название канала", + "Channels": "Каналы", + "Chats": "Чаты", + "Call_already_ended": "Вызов уже завершен!", + "Clear_cookies_alert": "Вы действительно хотите очистить все cookies?", + "Clear_cookies_desc": "Это действие очистит все ваши cookies для входа, это позволит вам войти под другой учетной записью.", + "Clear_cookies_yes": "Да, очистить cookies", + "Clear_cookies_no": "Нет, сохранить cookies", + "Click_to_join": "Нажмите, чтобы присоединиться!", + "Close": "Закрыть", + "Close_emoji_selector": "Закрыть выбор emoji", + "Closing_chat": "Закрытие чата", + "Change_language_loading": "Изменение языка.", + "Chat_closed_by_agent": "Чат закрыт агентом", + "Choose": "Выбрать", + "Choose_from_library": "Выбрать из библиотеки", + "Choose_file": "Выбрать файл", + "Choose_where_you_want_links_be_opened": "Выберите где вы хотите открывать ссылки", + "Code": "Код", + "Code_or_password_invalid": "Код или пароль не верны", + "Collaborative": "Совместный", + "Confirm": "Подтверждение", + "Connect": "Соединение", + "Connected": "Подключено", + "connecting_server": "подключение к серверу", + "Connecting": "Соединение...", + "Contact_us": "Связаться с нами", + "Contact_your_server_admin": "Свяжитесь с администратором сервера.", + "Continue_with": "Продолжить с", + "Copied_to_clipboard": "Скопировано в буфер обмена!", + "Copy": "Копировать", + "Conversation": "Диалог", + "Permalink": "Постоянная ссылка", + "Certificate_password": "Пароль сертификата", + "Clear_cache": "Очистить локальный кэш сервера", + "Clear_cache_loading": "Очистка кэша.", + "Whats_the_password_for_your_certificate": "Какой пароль для вашего сертификата?", + "Create_account": "Создать аккаунт", + "Create_Channel": "Создать канал", + "Create_Direct_Messages": "Создать личное сообщение", + "Create_Discussion": "Создать обсуждение", + "Created_snippet": "создать сниппет", + "Create_a_new_workspace": "Новое рабочее пространство", + "Create": "Создать", + "Custom_Status": "Персонализированный Статус", + "Dark": "Темный", + "Dark_level": "Уровень затемненности", + "Default": "По умолчанию", + "Default_browser": "Браузер по умолчанию", + "Delete_Room_Warning": "Удаление канала приведет к удалению всех сообщений, размещенных в нем. Это не может быть отменено.", + "Department": "Отдел", + "delete": "удалить", + "Delete": "Удалить", + "DELETE": "УДАЛИТЬ", + "deleting_room": "удаление чата", + "description": "описание", + "Description": "Описание", + "Desktop_Options": "Параметры рабочего стола", + "Desktop_Notifications": "Уведомления рабочего стола", + "Desktop_Alert_info": "Эти уведомления появятся на рабочем столе", + "Directory": "Директория", + "Direct_Messages": "Личные сообщения", + "Disable_notifications": "Отключить уведомления", + "Discussions": "Обсуждения", + "Discussion_Desc": "Помогают разобраться в том, что происходит! При создании Обсуждения, суб-канала одного из выбранных вами каналов так же создается и привязка к нему.", + "Discussion_name": "Имя Обсуждения", + "Done": "Готово", + "Dont_Have_An_Account": "Нет аккаунта?", + "Do_you_have_an_account": "У вас есть аккаунт?", + "Do_you_have_a_certificate": "У вас есть сертификат?", + "Do_you_really_want_to_key_this_room_question_mark": "Вы действительно хотите {{key}} этот канал?", + "E2E_Encryption": "E2E шифрование", + "E2E_How_It_Works_info1": "Теперь Вы можете создавать зашифрованные приватные чаты и личные сообщения. Вы так же можете изменить существующе приватные чаты и личные сообщения сделав их зашифрованными.", + "E2E_How_It_Works_info2": "Это *сквозное шифрование*, поэтому ключ для шифрования/расшифровки ваших сообщений не будет сохранен на сервере. Значит *Вам нужно сохранить этот пароль где-то в безопасном месте*, где он будет Вам доступен, если потребуется.", + "E2E_How_It_Works_info3": "В случаем продолжения, пароль Е2Е будет сгенерирован автоматически.", + "E2E_How_It_Works_info4": "Так же Вы можете задать новый пароль для вашего ключа шифрования в любое время при помощи браузера там же, где Вы ввели существующий Е2Е пароль.", + "edit": "править", + "edited": "исправлено", + "Edit": "Правка", + "Edit_Status": "Изменить статус", + "Edit_Invite": "Редактировать Приглашение", + "End_to_end_encrypted_room": "Чат со сквозным шифрованием", + "end_to_end_encryption": "сквозное шифрование", + "Email_Notification_Mode_All": "Каждое Упоминание/Личное сообщение", + "Email_Notification_Mode_Disabled": "Отключено", + "Email_or_password_field_is_empty": "Поле электронной почты или пароля пусты", + "Email": "E-mail", + "email": "e-mail", + "Empty_title": "Пустой заголовок", + "Enable_Auto_Translate": "Включить автоперевод", + "Enable_notifications": "Включить уведомления", + "Encrypted": "Зашифрован", + "Encrypted_message": "Зашифрованное сообщение", + "Enter_Your_E2E_Password": "Введите Ваш E2E Пароль", + "Enter_Your_Encryption_Password_desc1": "Вы сможете получить доступ к вашим зашифрованным приватным чатам и личным сообщениям.", + "Enter_Your_Encryption_Password_desc2": "Вам нужно ввести пароль для шифрования/расшифровки сообщений в каждом клиенте.", + "Encryption_error_title": "Введен не верный пароль шифрования", + "Encryption_error_desc": "Невозможно расшифровать ваш ключ шифрования, чтобы импортировать его", + "Everyone_can_access_this_channel": "Каждый может получить доступ к этому каналу", + "Error_uploading": "Ошибка загрузки", + "Expiration_Days": "Срок действия (Дни)", + "Favorite": "Избранное", + "Favorites": "Избранные", + "Files": "Файлы", + "File_description": "Описание файла", + "File_name": "Имя файла", + "Finish_recording": "Завершить запись", + "Following_thread": "Следить за тредом", + "For_your_security_you_must_enter_your_current_password_to_continue": "В целях вашей безопасности вы должны ввести свой текущий пароль для продолжения", + "Forgot_password_If_this_email_is_registered": "Если эта электронная почта зарегистрирована, мы отправим инструкции о том, как сбросить пароль. Если вы не получите письмо в ближайшее время, вернитесь и повторите попытку.", + "Forgot_password": "Забыли пароль", + "Forgot_Password": "Забыли Пароль", + "Forward": "Перенаправить", + "Forward_Chat": "Перенаправить Чат", + "Forward_to_department": "Перенаправить в отдел", + "Forward_to_user": "Перенаправить пользователю", + "Full_table": "Нажмите, чтобы увидеть полную таблицу", + "Generate_New_Link": "Сгенерировать Новую Ссылку", + "Group_by_favorites": "По избранным", + "Group_by_type": "По типу", + "Hide": "Скрыть", + "Has_joined_the_channel": "присоединился к каналу", + "Has_joined_the_conversation": "присоединился к беседе", + "Has_left_the_channel": "покинул канал", + "Hide_System_Messages": "Скрыть Системные Сообщения", + "Hide_type_messages": "Скрыть \"{{type}}\" сообщения", + "How_It_Works": "Как Это Работает", + "Message_HideType_uj": "Пользователь Присоединился", + "Message_HideType_ul": "Пользователь Покинул", + "Message_HideType_ru": "Пользователь Удален", + "Message_HideType_au": "Пользователь Добавлен", + "Message_HideType_mute_unmute": "Пользователь Заглушен / Заглушивание отменено", + "Message_HideType_r": "Имя Чата Изменено", + "Message_HideType_ut": "Пользователь Присоединился к Беседе", + "Message_HideType_wm": "Добро пожаловать", + "Message_HideType_rm": "Сообщение Удалено", + "Message_HideType_subscription_role_added": "Была назначена Роль", + "Message_HideType_subscription_role_removed": "Роль более не определена", + "Message_HideType_room_archived": "Чат Архивирован", + "Message_HideType_room_unarchived": "Чат Разархивирован", + "I_Saved_My_E2E_Password": "Я Сохранил Свой E2E Пароль", + "IP": "IP", + "In_app": "В приложении", + "In_App_And_Desktop": "В приложении и на десктопе", + "In_App_and_Desktop_Alert_info": "Отображает баннер в верхней части экрана, когда приложение открыто, и отображает уведомление на рабочем столе.", + "Invisible": "Невидимый", + "Invite": "Приглашение", + "is_a_valid_RocketChat_instance": "является действительным сервером Rocket.Chat", + "is_not_a_valid_RocketChat_instance": "не является действительным сервером Rocket.Chat", + "is_typing": "печатает", + "Invalid_or_expired_invite_token": "Токен приглашения не действителен или с истекшим сроком действия", + "Invalid_server_version": "Сервер, к которому вы пытаетесь подключиться, использует версию, которая больше не поддерживается приложением: {{currentVersion}}.\n\nНам нужна версия {{minVersion}}", + "Invite_Link": "Ссылка Приглашения", + "Invite_users": "Приглашение пользователей", + "Join": "Присоединиться", + "Join_our_open_workspace": "Присоединиться к нашему открытому серверу", + "Join_your_workspace": "Присоединиться к вашему серверу", + "Just_invited_people_can_access_this_channel": "Только приглашенные люди могут получить доступ к этому каналу", + "Language": "Язык", + "last_message": "последнее сообщение", + "Leave_channel": "Покинуть канал", + "leaving_room": "покинуть комнату", + "leave": "покинуть", + "Legal": "Правовые аспекты", + "Light": "Светлая", + "License": "Лицензия", + "Livechat": "Livechat", + "Livechat_edit": "Редактирование Livechat", + "Login": "Вход", + "Login_error": "Ваши учетные данные были отклонены! Пожалуйста, попробуйте еще раз.", + "Login_with": "Войти с", + "Logging_out": "Осуществляется выход.", + "Logout": "Выйти", + "Max_number_of_uses": "Максимальное количество", + "Max_number_of_users_allowed_is_number": "Максимальное количество разрешенных пользователей {{maxUsers}}", + "members": "пользователи", + "Members": "Пользователи", + "Mentioned_Messages": "Упомянутые сообщения", + "mentioned": "упомянутые", + "Mentions": "Упоминания", + "Message_accessibility": "Сообщение от {{user}} в {{time}}: {{message}}", + "Message_actions": "Действия с сообщением", + "Message_pinned": "Сообщение прикреплено", + "Message_removed": "Сообщение удалено", + "Message_starred": "Сообщение отмечено звездой", + "Message_unstarred": "Отметка сообщения звездой удалена", + "message": "сообщение", + "messages": "сообщения", + "Message": "Сообщение", + "Messages": "Сообщения", + "Message_Reported": "Сообщение отправлено", + "Microphone_Permission_Message": "Rocket.Chat нужен доступ к вашему микрофону, чтобы вы могли отправлять аудио сообщения.", + "Microphone_Permission": "Разрешение на использование микрофона", + "Mute": "Заглушить", + "muted": "Заглушен", + "My_servers": "Мои серверы", + "N_person_reacted": "{{n}} людей отреагировало", + "N_users": "{{n}} пользователи", + "name": "имя", + "Name": "Имя", + "Navigation_history": "История навигации", + "Never": "Никогда", + "New_Message": "Новое сообщение", + "New_Password": "Новый пароль", + "New_Server": "Новый сервер", + "Next": "Далее", + "No_files": "Нет файлов", + "No_limit": "Нет ограничений", + "No_mentioned_messages": "Нет упоминаний", + "No_pinned_messages": "Нет прикрепленных сообщений", + "No_results_found": "Ничего не найдено", + "No_starred_messages": "Нет отмеченных сообщений", + "No_thread_messages": "Нет сообщений в теме", + "No_label_provided": "{{label}} не указан.", + "No_Message": "Нет сообщения", + "No_messages_yet": "Пока нет сообщений", + "No_Reactions": "Нет реакций", + "No_Read_Receipts": "Нет информации о прочтении", + "Not_logged": "Не зарегистрирован", + "Not_RC_Server": "Это не сервер Rocket.Chat.\n{{contact}}", + "Nothing": "Ничего", + "Nothing_to_save": "Нечего сохранять!", + "Notify_active_in_this_room": "Уведомить всех активных пользователей в этом чате", + "Notify_all_in_this_room": "Уведомить всех в этом чате", + "Notifications": "Уведомления", + "Notification_Duration": "Продолжительность уведомлений", + "Notification_Preferences": "Настройки уведомлений", + "No_available_agents_to_transfer": "Нет свободных агентов для передачи", + "Offline": "Офлайн", + "Oops": "Упс!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Чаты в Работе", + "Omnichannel_enable_alert": "Вы не доступны в Omnichannel. Хотите стать доступными?", + "Onboarding_description": "Сервер это пространство для взаимодействия вашей команды или организации. Уточните адрес сервера у вашего администратора или создайте свой сервер для команды.", + "Onboarding_join_workspace": "Присоединиться к серверу", + "Onboarding_subtitle": "За пределами Командного Взаимодействия", + "Onboarding_title": "Добро пожаловать в Rocket.Chat", + "Onboarding_join_open_description": "Присоединяйтесь к нашему открытому серверу, чтобы пообщаться с командой и сообществом Rocket.Chat.", + "Onboarding_agree_terms": "Продолжая вы соглашаетесь с правилами Rocket.Chat", + "Onboarding_less_options": "Меньше опций", + "Onboarding_more_options": "Больше опций", + "Online": "В сети", + "Only_authorized_users_can_write_new_messages": "Только авторизованные пользователи могут писать новые сообщения", + "Open_emoji_selector": "Открыть выбор emoji", + "Open_Source_Communication": "Общение с открытым кодом", + "Open_your_authentication_app_and_enter_the_code": "Откройте ваше приложение для аутентификации и введите код и него.", + "OR": "ИЛИ", + "OS": "ОС", + "Overwrites_the_server_configuration_and_use_room_config": "Перезаписывает конфигурацию сервера и использует конфигурацию чата", + "Password": "Пароль", + "Parent_channel_or_group": "Родительский канал или чат", + "Permalink_copied_to_clipboard": "Постоянная ссылка скопирована в буфер обмена!", + "Phone": "Телефон", + "Pin": "Прикрепить сообщение", + "Pinned_Messages": "Прикрепленные сообщения", + "pinned": "прикреплено", + "Pinned": "Прикреплено", + "Please_add_a_comment": "Пожалуйста добавьте комментарий", + "Please_enter_your_password": "Пожалуйста введите ваш пароль", + "Please_wait": "Пожалуйста подождите.", + "Preferences": "Настройки", + "Preferences_saved": "Настройки сохранены!", + "Privacy_Policy": " Политика конфиденциальности", + "Private_Channel": "Приватный канал", + "Private_Groups": "Приватные группы", + "Private": "Приватный", + "Processing": "Обработка...", + "Profile_saved_successfully": "Профиль успешно сохранен!", + "Profile": "Профиль", + "Public_Channel": "Публичный канал", + "Public": "Публичный", + "Push_Notifications": "Push Уведомления", + "Push_Notifications_Alert_Info": "Эти уведомления доставляются вам, когда приложение не открыто", + "Quote": "Цитата", + "Reactions_are_disabled": "Реакции отключены", + "Reactions_are_enabled": "Реакции активированы", + "Reactions": "Реакции", + "Read": "Читать", + "Read_External_Permission_Message": "Rocket.Chat необходим доступ к фотографиям, медиа и другим файлам на вашем устройстве", + "Read_External_Permission": "Разрешение на Чтение Медиа", + "Read_Only_Channel": "Канал только для чтения", + "Read_Only": "Только для чтения", + "Read_Receipt": "Уведомление о прочтении", + "Receive_Group_Mentions": "Получать групповые уведомления", + "Receive_Group_Mentions_Info": "Получать @all и @here уведомления", + "Register": "Зарегистрировать", + "Repeat_Password": "Повторите пароль", + "Replied_on": "Ответил на:", + "replies": "ответы", + "reply": "ответить", + "Reply": "Ответить", + "Report": "Жалоба", + "Receive_Notification": "Получать уведомления", + "Receive_notifications_from": "Получать уведомления от {{name}}", + "Resend": "Отправить повторно", + "Reset_password": "Сброс пароля", + "resetting_password": "сброс пароля", + "RESET": "СБРОС", + "Return": "Возврат", + "Review_app_title": "Нравится ли вам это приложение?", + "Review_app_desc": "Поставьте нам 5 звезд в {{store}}", + "Review_app_yes": "Конечно!", + "Review_app_no": "Нет", + "Review_app_later": "Может позже", + "Review_app_unable_store": "Невозможно открыть {{store}}", + "Review_this_app": "Оценить это приложение", + "Remove": "Удалить", + "Roles": "Роли", + "Room_actions": "Действия с чатом", + "Room_changed_announcement": "Объявление чата было изменено на: {{announcement}} пользователем {{userBy}}", + "Room_changed_avatar": "Аватар чата изменен пользователем {{userBy}}", + "Room_changed_description": "Описание чата было изменено на: {{description}} пользователем {{userBy}}", + "Room_changed_privacy": "Тип чата был изменен на: {{type}} пользователем {{userBy}}", + "Room_changed_topic": "Тема чата была изменена на: {{topic}} пользователем {{userBy}}", + "Room_Files": "Файлы", + "Room_Info_Edit": "Изменить информацию о чате", + "Room_Info": "Информация о канале", + "Room_Members": "Пользователи", + "Room_name_changed": "Название чата было изменено на: {{name}} пользователем {{userBy}}", + "SAVE": "СОХРАНИТЬ", + "Save_Changes": "Сохранить изменения", + "Save": "Сохранить", + "Saved": "Сохранено", + "saving_preferences": "сохранение персональных настроек", + "saving_profile": "сохранение профиля", + "saving_settings": "сохранение настроек", + "saved_to_gallery": "Сохранено в Галерею", + "Save_Your_E2E_Password": "Сохранить Ваш E2E Пароль", + "Save_Your_Encryption_Password": "Сохранить Ваш Пароль Шифрования", + "Save_Your_Encryption_Password_warning": "Этот пароль не сохраняется нигде, поэтому бережно сохраните его в надежном месте.", + "Save_Your_Encryption_Password_info": "Имейте ввиду, что если вы потеряете свой пароль, его будет невозможно восстановить и вы потеряете доступ к вашим сообщениям.", + "Search_Messages": "Поиск сообщений", + "Search": "Поиск", + "Search_by": "Поиск по", + "Search_global_users": "Глобальный поиск пользователей", + "Search_global_users_description": "При активации станет возможен поиск пользователей на других серверах.", + "Seconds": "{{second}} секунд", + "Security_and_privacy": "Безопасность и конфиденциальность", + "Select_Avatar": "Выбор аватара", + "Select_Server": "Выбор сервера", + "Select_Users": "Выбор пользователей", + "Select_a_Channel": "Выбор Канала", + "Select_a_Department": "Выбор отдела", + "Select_an_option": "Выбор Опции", + "Select_a_User": "Выбор Пользователя", + "Send": "Отправить", + "Send_audio_message": "Отправить аудиосообщение", + "Send_crash_report": "Отправить отчет об ошибке", + "Send_message": "Отправить сообщение", + "Send_me_the_code_again": "Отправить мне код снова", + "Send_to": "Отправить...", + "Sending_to": "Отправляется", + "Sent_an_attachment": "Отправить вложение", + "Server": "Сервер", + "Servers": "Серверы", + "Server_version": "Версия сервера: {{version}}", + "Set_username_subtitle": "Имя пользователя необходимо для того, чтобы позволить другим упомянуть вас в сообщениях", + "Set_custom_status": "Установить персонализированный статус", + "Set_status": "Установить статус", + "Status_saved_successfully": "Статус установлен успешно!", + "Settings": "Настройки", + "Settings_succesfully_changed": "Настройки успешно изменены!", + "Share": "Поделиться", + "Share_Link": "Ссылка, чтобы Поделиться", + "Share_this_app": "Рассказать о приложении", + "Show_more": "Показать больше..", + "Show_Unread_Counter": "Показать счетчик непрочитанных", + "Show_Unread_Counter_Info": "Счетчик непрочитанных отображается в виде значка справа от канала в списке каналов", + "Sign_in_your_server": "Войдите на ваш сервер", + "Sign_Up": "Регистрация", + "Some_field_is_invalid_or_empty": "Некоторые поля недопустимы или пусты", + "Sorting_by": "Сортировка по {{key}}", + "Sound": "Звук", + "Star_room": "В избранное", + "Star": "Отметить", + "Starred_Messages": "Отмеченные сообщения", + "starred": "отмечено", + "Starred": "Отмечено", + "Start_of_conversation": "Начало разговора", + "Start_a_Discussion": "Начать Обсуждение", + "Started_discussion": "Началось обсуждение :", + "Started_call": "Звонок, начат {{userBy}}", + "Submit": "Отправить", + "Table": "Таблица", + "Tags": "Тэги", + "Take_a_photo": "Сделать фото", + "Take_a_video": "Записать видео", + "Take_it": "Снять!", + "tap_to_change_status": "нажмите для изменения статуса", + "Tap_to_view_servers_list": "Нажмите, чтобы просмотреть список серверов", + "Terms_of_Service": " Условия использования ", + "Theme": "Тема", + "The_user_wont_be_able_to_type_in_roomName": "Пользователь не сможет писать сообщения в {{roomName}}", + "The_user_will_be_able_to_type_in_roomName": "Пользователь сможет писать сообщения в {{roomName}}", + "There_was_an_error_while_action": "Произошла ошибка в процессе {{action}}!", + "This_room_is_blocked": "Этот чат заблокирован", + "This_room_is_read_only": "Этот чат доступен только для чтения", + "Thread": "Тред", + "Threads": "Треды", + "Timezone": "Часовой пояс", + "To": "К", + "topic": "тема", + "Topic": "Тема", + "Translate": "Перевести", + "Try_again": "Попробуйте еще раз", + "Two_Factor_Authentication": "Двухфакторная аутентификация", + "Type_the_channel_name_here": "Введите название канала здесь", + "unarchive": "разархивировать", + "UNARCHIVE": "РАЗАРХИВИРОВАТЬ", + "Unblock_user": "Разблокировать пользователя", + "Unfavorite": "Удалить из избранного", + "Unfollowed_thread": "Не следить", + "Unmute": "Отменить заглушивание", + "unmuted": "Заглушивание отменено", + "Unpin": "Открепить", + "unread_messages": "непрочитанные", + "Unread": "Непрочитанные", + "Unread_on_top": "Непрочитанные сверху", + "Unstar": "Снять отметку", + "Updating": "Обновление...", + "Uploading": "Загрузка", + "Upload_file_question_mark": "Загрузить файл?", + "User": "Пользователь", + "Users": "Пользователи", + "User_added_by": "Пользователь {{userAdded}} добавлен по решению {{userBy}}", + "User_Info": "Информация о пользователе", + "User_has_been_key": "Пользователь был {{key}}", + "User_is_no_longer_role_by_": "{{user}} больше не {{role}} по решению {{userBy}}", + "User_muted_by": "Пользователь {{userMuted}} заглушен по решению {{userBy}}", + "User_removed_by": "Пользователь {{userRemoved}} удален по решению {{userBy}}", + "User_sent_an_attachment": "{{user}} отправил вложение", + "User_unmuted_by": "Пользователь {{userUnmuted}} перестал быть заглушенным по решению {{userBy}}", + "User_was_set_role_by_": "{{user}} был назначен {{role}} пользователем {{userBy}}", + "Username_is_empty": "Имя пользователя пусто", + "Username": "Имя пользователя", + "Username_or_email": "Имя пользователя или email", + "Uses_server_configuration": "Используется конфигурация сервера", + "Validating": "Проверка", + "Registration_Succeeded": "Регистрация Успешна!", + "Verify": "Проверить", + "Verify_email_title": "Регистрация Успешна!", + "Verify_email_desc": "Вам был отправлен email для подтверждения регистрации. Если вы не получили этого сообщения, пожалуйста, попробуйте еще раз.", + "Verify_your_email_for_the_code_we_sent": "Проверка вашего email с помощью отправленного нами кода", + "Video_call": "Видеозвонок", + "View_Original": "Посмотреть оригинал", + "Voice_call": "Голосовой вызов", + "Waiting_for_network": "Ожидание сети...", + "Websocket_disabled": "Websocket отключен для этого сервера.\n{{contact}}", + "Welcome": "Добро пожаловать,", + "What_are_you_doing_right_now": "Что вы делаете сейчас?", + "Whats_your_2fa": "Какой у вас код 2FA?", + "Without_Servers": "Без серверов", + "Workspaces": "Серверы", + "Would_you_like_to_return_the_inquiry": "Вы хотите отозвать запрос?", + "Write_External_Permission_Message": "Rocket.Chat необходим доступ к ваше Галерее, чтобы Вы могли сохранять изображения.", + "Write_External_Permission": "Разрешения на запись в Галерею", + "Yes": "Да", + "Yes_action_it": "Да, {{action}} это!", + "Yesterday": "Вчера", + "You_are_in_preview_mode": "Вы находитесь в режиме предварительного просмотра", + "You_are_offline": "Вы не в сети", + "You_can_search_using_RegExp_eg": "Вы можете выполнить поиск с помощью регулярных выражений, например `/^text$/i`", + "You_colon": "Вы: ", + "you_were_mentioned": "вы были упомянуты", + "You_were_removed_from_channel": "Вы были удалены из {{channel}}", + "you": "вы", + "You": "Вы", + "Logged_out_by_server": "Сервером произведен ваш выход из системы. Пожалуйста, войдите снова.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Вам нужно получить доступ как минимум к одному серверу Rocket.Chat, чтобы поделиться чем-то.", + "You_need_to_verifiy_your_email_address_to_get_notications": "Вам необходимо проверить ваш email адрес, чтобы получать уведомления", + "Your_certificate": "Ваш сертификат", + "Your_invite_link_will_expire_after__usesLeft__uses": "Ваша ссылка-приглашение станет не действительной после {{usesLeft}} ее использований.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Ваша ссылка-приглашение станет не действительной {{date}} или после {{usesLeft}} ее использований.", + "Your_invite_link_will_expire_on__date__": "Срок действия вашей ссылки-приглашения будет окончен {{date}}.", + "Your_invite_link_will_never_expire": "Ваша ссылка-приглашение никогда не будет просроченной.", + "Your_workspace": "Ваш сервер", + "Your_password_is": "Ваш пароль", + "Version_no": "Версия: {{version}}", + "You_will_not_be_able_to_recover_this_message": "Вы не сможете восстановить это сообщение!", + "You_will_unset_a_certificate_for_this_server": "Вы произведете сброс сертификата для этого сервера", + "Change_Language": "Изменить язык", + "Crash_report_disclaimer": "Мы никогда не отслеживаем содержание ваших чатов. Отчет о сбое содержит только важную для нас информацию для выявления проблем и их устранения.", + "Type_message": "Написать сообщение", + "Room_search": "Поиск в чате", + "Room_selection": "Выбор чата 1...9", + "Next_room": "Следующий чат", + "Previous_room": "Предыдущий чат", + "New_room": "Новый чат", + "Upload_room": "Загрузить в чат", + "Search_messages": "Поиск сообщений", + "Scroll_messages": "Прокрутка сообщений", + "Reply_latest": "Ответить на последнее", + "Reply_in_Thread": "Ответить в Треде", + "Server_selection": "Выбор сервера", + "Server_selection_numbers": "Выбор сервера 1...9", + "Add_server": "Добавить сервер", + "New_line": "Новая линия", + "You_will_be_logged_out_of_this_application": "Будет осуществлен ваш выход из этого приложения.", + "Clear": "Очистка", + "This_will_clear_all_your_offline_data": "Это очистит все ваши офлайн данные.", + "This_will_remove_all_data_from_this_server": "Это удалит все данные с этого сервера.", + "Mark_unread": "Отметить Непрочитанным", + "Wait_activation_warning": "До того как вы сможете войти, ваш аккаунт должен быть вручную активирован администратором сервера.", + "Screen_lock": "Блокировка экрана", + "Local_authentication_biometry_title": "Аутентификация", + "Local_authentication_biometry_fallback": "Использовать пароль", + "Local_authentication_unlock_option": "Разблокировать при помощи Пароля", + "Local_authentication_change_passcode": "Изменить Пароль", + "Local_authentication_info": "Внимание: Если вы забудете ваш Пароль, вам нужно будет удалить и заново установить это приложение.", + "Local_authentication_facial_recognition": "распознавания лица", + "Local_authentication_fingerprint": "отпечатка пальца", + "Local_authentication_unlock_with_label": "Разблокировать при помощи {{label}}", + "Local_authentication_auto_lock_60": "Через 1 минуту", + "Local_authentication_auto_lock_300": "Через 5 минут", + "Local_authentication_auto_lock_900": "Через 15 минут", + "Local_authentication_auto_lock_1800": "Через 30 минут", + "Local_authentication_auto_lock_3600": "Через 1 час", + "Passcode_enter_title": "Введите ваш пароль", + "Passcode_choose_title": "Выберите ваш новый пароль", + "Passcode_choose_confirm_title": "Подтвердите ваш новый пароль", + "Passcode_choose_error": "Пароли не соответствуют. Попробуйте еще раз.", + "Passcode_choose_force_set": "Пароль затребован вашим администратором", + "Passcode_app_locked_title": "Приложение заблокировано", + "Passcode_app_locked_subtitle": "Попробуйте снова через {{timeLeft}} секунд", + "After_seconds_set_by_admin": "Через {{seconds}} секунд (установлено администратором сервера)", + "Dont_activate": "Не активировать сейчас", + "Queued_chats": "Чаты в очереди", + "Queue_is_empty": "Очередь пуста", + "Logout_from_other_logged_in_locations": "Выйти из всех других подключенных расположений", + "You_will_be_logged_out_from_other_locations": "Будет произведен ваш выход из всех других подключенных расположений.", + "Logged_out_of_other_clients_successfully": "Выход из других клиентских подключений выполнен успешно", + "Logout_failed": "Выход не успешен!", + "Log_analytics_events": "Журнал событий аналитики", + "E2E_encryption_change_password_title": "Изменить пароль шифрования", + "E2E_encryption_change_password_description": "Теперь вы можете создавать зашифрованные приватные чаты и личные беседы. Вы так же можете сделать существующие приватные чаты и личные беседы шифрованными. \nЭто сквозное шифрование, поэтому ключ для шифрования и дешифрования ваших сообщений не будет сохранен на сервере. Именно поэтому вам необходимо сохранить ваш пароль в надежном и безопасном месте. Вам необходимо вводить этот пароль на всех устройствах, где вы хотите использовать E2E шифрование.", + "E2E_encryption_change_password_error": "Ошибка при смене пароля E2E ключа!", + "E2E_encryption_change_password_success": "Пароль ключа E2E изменен успешно!", + "E2E_encryption_change_password_message": "Убедитесь, что вы сохранили пароль в надежном месте.", + "E2E_encryption_change_password_confirmation": "Да, изменить его", + "E2E_encryption_reset_title": "Сбросить E2E ключ", + "E2E_encryption_reset_description": "Эта опция удалит ваш текущий E2E ключ и произведет ваш выход из системы. \nКогда вы снова войдете в систему, Rocket.Chat сгенерирует для вас новый ключ и восстановит ваш доступ ко всем зашифрованным чатам, в которых есть пользователи в сети. \nИсходя из природы E2E шифрования, Rocket.Chat не сможет восстановить доступ к чатам, в которых нет участников в сети.", + "E2E_encryption_reset_button": "Сбросить E2E ключ", + "E2E_encryption_reset_error": "Ошибка при сбросе E2E ключа!", + "E2E_encryption_reset_message": "Будет совершен ваш выход из системы.", + "E2E_encryption_reset_confirmation": "Да, сбросить его", + "Following": "Следить", + "Threads_displaying_all": "Показать все", + "Threads_displaying_following": "Показать отслеживаемые", + "Threads_displaying_unread": "Показать непрочитанные", + "No_threads": "Тредов нет", + "No_threads_following": "Нет тредов, за которыми вы следите", + "No_threads_unread": "Непрочитанных тредов нет", + "Messagebox_Send_to_channel": "Отправить в чат", + "Set_as_leader": "Назначить лидером", + "Set_as_moderator": "Назначить модератором", + "Set_as_owner": "Назначить владельцем", + "Remove_as_leader": "Удалить из лидеров", + "Remove_as_moderator": "Удалить из модераторов", + "Remove_as_owner": "Удалить из владельцев", + "Remove_from_room": "Удалить из чата", + "Ignore": "Игнориновать", + "Unignore": "Прекратить игнорировать", + "User_has_been_ignored": "Пользователь теперь игнорируется", + "User_has_been_unignored": "Пользователь больше не игнорируется", + "User_has_been_removed_from_s": "Пользователь удален из {{s}}", + "User__username__is_now_a_leader_of__room_name_": "Пользователь {{username}} больше не лидер в чате {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "Пользователь {{username}} больше не модератор в чате {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "Пользователь {{username}} больше не владелец в чате {{room_name}}", + "User__username__removed_from__room_name__leaders": "Пользователь {{username}} удален из {{room_name}} лидеров", + "User__username__removed_from__room_name__moderators": "Пользователь {{username}} удален из {{room_name}} модераторов", + "User__username__removed_from__room_name__owners": "Пользователь {{username}} удален из {{room_name}} владельцев", + "The_user_will_be_removed_from_s": "Пользователь будет удален из {{s}}", + "Yes_remove_user": "Да, удалить пользователя!", + "Direct_message": "Личное сообщение", + "Message_Ignored": "Сообщение игнорируется. Тапните по нему, чтобы отобразить его.", + "Enter_workspace_URL": "Введите URL вашего рабочего пространства", + "Workspace_URL_Example": "Например, your-company.rocket.chat", + "This_room_encryption_has_been_enabled_by__username_": "Шифрование для этого чата включено {{username}}", + "This_room_encryption_has_been_disabled_by__username_": "Шифрование для этого чата выключено {{username}}" +} \ No newline at end of file diff --git a/app/i18n/locales/tr.js b/app/i18n/locales/tr.js deleted file mode 100644 index 5ca3648e265..00000000000 --- a/app/i18n/locales/tr.js +++ /dev/null @@ -1,710 +0,0 @@ -export default { - '1_person_reacted': '1 kişi tepki verdi.', - '1_user': '1 kullanıcı', - 'error-action-not-allowed': '{{action}}\'a izin verilmiyor!', - 'error-application-not-found': 'Uygulama bulunamadı!', - 'error-archived-duplicate-name': '{{room_name}} adında arşivlenmiş bir kanal var!', - 'error-avatar-invalid-url': 'Geçersiz avatar URL\'si: {{url}}', - 'error-avatar-url-handling': '{{username}} için bir URL\'den ({{url}}) avatar ayarı işlenirken hata oluştu!', - 'error-cant-invite-for-direct-room': 'Kullanıcı özel odalara davet edilemedi!', - 'error-could-not-change-email': 'E-posta değiştirilemedi!', - 'error-could-not-change-name': 'İsim değiştirilemedi!', - 'error-could-not-change-username': 'Kullanıcı adı değiştirilemedi!', - 'error-could-not-change-status': 'Durum değiştirilemedi!', - 'error-delete-protected-role': 'Korunan bir rol silinemez!', - 'error-department-not-found': 'Bölüm bulunamadı!', - 'error-direct-message-file-upload-not-allowed': 'Özel iletilerde dosya paylaşımına izin verilmiyor!', - 'error-duplicate-channel-name': '{{channel_name}} adında bir kanal var!', - 'error-email-domain-blacklisted': 'E-posta alan adı kara listeye alındı!', - 'error-email-send-failed': 'E-posta göndermeye çalışırken hata oluştu: {{message}}', - 'error-save-image': 'Görüntüyü kaydederken hata oluştu!', - 'error-save-video': 'Videoyu kaydederken hata oluştu!', - 'error-field-unavailable': '{{field}} zaten kullanılıyor! :(', - 'error-file-too-large': 'Dosya çok büyük!', - 'error-importer-not-defined': 'İçe aktarıcı doğru tanımlanmadı, "Import" sınıfı eksik!', - 'error-input-is-not-a-valid-field': '{{input}} geçerli bir {{field}} değil!', - 'error-invalid-actionlink': 'Geçersiz işlem bağlantısı!', - 'error-invalid-arguments': 'Geçersiz parametreler!', - 'error-invalid-asset': 'Geçersiz veri!', - 'error-invalid-channel': 'Geçersiz kanal.', - 'error-invalid-channel-start-with-chars': 'Geçersiz kanal! @ veya # ile başlayın.', - 'error-invalid-custom-field': 'Geçersiz özelleştirilmiş alan', - 'error-invalid-custom-field-name': 'Geçersiz özelleştirilmiş alan adı! Yalnızca harf, rakam, kısa çizgi ve alt çizgi kullanın.', - 'error-invalid-date': 'Geçersiz tarih!', - 'error-invalid-description': 'Geçersiz açıklama!', - 'error-invalid-domain': 'Geçersiz alan adı!', - 'error-invalid-email': 'Geçersiz e-posta {{email}}!', - 'error-invalid-email-address': 'Geçersiz e-posta adresi!', - 'error-invalid-file-height': 'Geçersiz fotoğraf yüksekliği!', - 'error-invalid-file-type': 'Geçersiz dosya türü!', - 'error-invalid-file-width': 'Geçersiz fotoğraf genişliği!', - 'error-invalid-from-address': 'Geçersiz bir KİMDEN adresi bildirdiniz!', - 'error-invalid-integration': 'Geçersiz entegrasyon', - 'error-invalid-message': 'Geçersiz ileti!', - 'error-invalid-method': 'Geçersiz metot!', - 'error-invalid-name': 'Geçersiz isim!', - 'error-invalid-password': 'Geçersiz şifre!', - 'error-invalid-redirectUri': 'Geçersiz yönlendirme bağlantısı!', - 'error-invalid-role': 'Geçersiz rol!', - 'error-invalid-room': 'Geçersiz oda!', - 'error-invalid-room-name': '{{room_name}}, geçerli bir oda adı değil!', - 'error-invalid-room-type': '{{type}}, geçerli bir oda türü değil!', - 'error-invalid-settings': 'Geçersiz ayar!', - 'error-invalid-subscription': 'Geçersiz başvuru!', - 'error-invalid-token': 'Geçersiz belirteç!', - 'error-invalid-triggerWords': 'Geçersiz tetikleyici parametreleri!', - 'error-invalid-urls': 'Geçersiz URL\'ler!', - 'error-invalid-user': 'Geçersiz kullanıcı!', - 'error-invalid-username': 'Geçersiz kullanıcı adı!', - 'error-invalid-webhook-response': 'İstek URL\'si 200\'den farklı bir durumla yanıt verdi!', - 'error-message-deleting-blocked': 'İleti silme engellendi!', - 'error-message-editing-blocked': 'İleti düzenleme engellendi', - 'error-message-size-exceeded': 'İleti boyutu, Message_MaxAllowedSize değerini aşıyor', - 'error-missing-unsubscribe-link': '[unsubscribe] bağlantısını belirtmelisiniz.', - 'error-no-tokens-for-this-user': 'Bu kullanıcı için belirteç (token) yok', - 'error-not-allowed': 'İzin verilmedi', - 'error-not-authorized': 'Yetkili değil', - 'error-push-disabled': 'Push devre dışı', - 'error-remove-last-owner': 'Lütfen bunu kaldırmadan önce yeni bir sahip belirleyin.', - 'error-role-in-use': 'Rol kullanımda olduğu için silinemiyor', - 'error-role-name-required': 'Rol adı gerekli', - 'error-the-field-is-required': '{{field}} alanı gereklidir.', - 'error-too-many-requests': 'Hata, çok fazla istek. Lütfen yavaşla. Tekrar denemeden önce {{seconds}} saniye beklemelisiniz.', - 'error-user-is-not-activated': 'Kullanıcı etkinleştirilmedi!', - 'error-user-has-no-roles': 'Kullanıcıya tanımlı rol yok!', - 'error-user-limit-exceeded': '#channel_name kanalına davet etmeye çalıştığınız kullanıcıların sayısı, yönetici tarafından belirlenen sınırı aşıyor!', - 'error-user-not-in-room': 'Kullanıcı bu odada değil!', - 'error-user-registration-custom-field': 'error-user-registration-custom-field', - 'error-user-registration-disabled': 'Kullanıcı kaydı devre dışı bırakıldı!', - 'error-user-registration-secret': 'Kullanıcı kaydına yalnızca Gizli URL aracılığıyla izin verilir!', - 'error-you-are-last-owner': 'Son sahibi sizsiniz. Lütfen odadan ayrılmadan önce yeni bir sahip belirleyin.', - Actions: 'İşlemler', - activity: 'etkinlik', - Activity: 'Etkinlik', - Add_Reaction: 'Tepki ekle', - Add_Server: 'Sunucu ekle', - Add_users: 'Kullanıcı ekle', - Admin_Panel: 'Yönetim Paneli', - Agent: 'Temsilci', - Alert: 'Uyarı', - alert: 'uyarı', - alerts: 'uyarılar', - All_users_in_the_channel_can_write_new_messages: 'Kanaldaki tüm kullanıcılar yeni ileti yazabilir!', - A_meaningful_name_for_the_discussion_room: 'Tartışma odası için anlamlı bir isim', - All: 'Tümü', - All_Messages: 'Tüm İletiler', - Allow_Reactions: 'Tüm Tepkiler', - Alphabetical: 'Alfabetik', - and_more: 've daha', - and: 've', - announcement: 'duyuru', - Announcement: 'Duyuru', - Apply_Your_Certificate: 'Sertifikanızı Onaylayın', - ARCHIVE: 'ARŞİVLE', - archive: 'arşivle', - are_typing: 'yazıyor', - Are_you_sure_question_mark: 'Emin misiniz?', - Are_you_sure_you_want_to_leave_the_room: '{{room}} odasından ayrılmak istediğinizden emin misiniz?', - Audio: 'Ses', - Authenticating: 'Doğrulanıyor', - Automatic: 'Otomatik', - Auto_Translate: 'Otomatik Çevir', - Avatar_changed_successfully: 'Profil fotoğrafı başarıyla değiştirildi!', - Avatar_Url: 'Profil fotoğrafı URL\'si', - Away: 'Uzakta', - Back: 'Geri', - Black: 'Koyu', - Block_user: 'Kullanıcıyı engelle', - Browser: 'Tarayıcı', - Broadcast_channel_Description: 'Yalnızca yetkili kullanıcılar yeni ileti yazabilir, ancak diğer kullanıcılar yanıt verebilir', - Broadcast_Channel: 'Kanala Yayınla', - Busy: 'Meşgul', - By_proceeding_you_are_agreeing: 'Devam ederek kabul ediyorsunuz: ', - Cancel_editing: 'Düzenlemeyi iptal et', - Cancel_recording: 'Kaydı iptal et', - Cancel: 'İptal et', - changing_avatar: 'profil fotoğrafı değiştirme', - creating_channel: 'kanal açılıyor', - creating_invite: 'davet üretiliyor', - Channel_Name: 'Kanal Adı', - Channels: 'Kanallar', - Chats: 'Sohbetler', - Call_already_ended: 'Çağrı sona erdi!', - Clear_cookies_alert: 'Tüm çerezleri temizlemek istiyor musunuz?', - Clear_cookies_desc: 'Bu işlem, tüm oturum açma çerezlerini temizleyerek diğer hesaplara giriş yapmanıza olanak tanır.', - Clear_cookies_yes: 'Evet, çerezleri temizle', - Clear_cookies_no: 'Hayır, çerezleri koru', - Click_to_join: 'Katılmak için tıklayın!', - Close: 'Kapat', - Close_emoji_selector: 'Emoji seçiciyi kapat', - Closing_chat: 'Sohbet kapatılıyor', - Change_language_loading: 'Dil değiştiriliyor', - Chat_closed_by_agent: 'Sohbet temsilci tarafından kapatıldı', - Choose: 'Seç', - Choose_from_library: 'Kütüphaneden seç', - Choose_file: 'Dosya seç', - Choose_where_you_want_links_be_opened: 'Bağlantıların açılmasını istediğiniz yeri seçin', - Code: 'Kod', - Code_or_password_invalid: 'Kod veya şifre geçersiz', - Collaborative: 'İşbirlikçi', - Confirm: 'Onayla', - Connect: 'Bağlan', - Connected: 'Bağlandı', - connecting_server: 'sunucuya bağlanıyor', - Connecting: 'Bağlanıyor...', - Contact_us: 'Bize ulaşın', - Contact_your_server_admin: 'Sunucu yöneticisiyle iletişime geçin.', - Continue_with: 'Devam et:', - Copied_to_clipboard: 'Panoya kopyalandı!', - Copy: 'Kopyala', - Conversation: 'Sohbet', - Permalink: 'Kalıcı bağlantı', - Certificate_password: 'Sertifika Şifresi', - Clear_cache: 'Yerel sunucu önbelleğini temizleyin', - Clear_cache_loading: 'Önbellek temizleniyor.', - Whats_the_password_for_your_certificate: 'Sertifikanızın şifresi nedir?', - Create_account: 'Hesap oluştur', - Create_Channel: 'Kanal Oluştur', - Create_Direct_Messages: 'Özel İleti Oluştur', - Create_Discussion: 'Tartışma Oluştur', - Created_snippet: 'kalıp oluşturdu', - Create_a_new_workspace: 'Çalışma alanı oluştur', - Create: 'Oluştur', - Custom_Status: 'Özelleştirilmiş durum', - Dark: 'Karanlık', - Dark_level: 'Karanlık Seviyesi', - Default: 'Varsayılan', - Default_browser: 'Varsayılan tarayıcı', - Delete_Room_Warning: 'Bir odanın silinmesi, oda içinde yayınlanan tüm iletileri silecektir. Bu geri alınamaz.', - Department: 'Bölüm', - delete: 'sil', - Delete: 'Sil', - DELETE: 'SİL', - deleting_room: 'oda siliniyor', - description: 'açıklama', - Description: 'Açıklama', - Desktop_Options: 'Masaüstü Seçenekleri', - Desktop_Notifications: 'Masaüstü Bildirimleri', - Desktop_Alert_info: 'Bu bildirimler masaüstünde teslim edilir', - Directory: 'Dizin', - Direct_Messages: 'Özel İletiler', - Disable_notifications: 'Bildirimleri devre dışı bırak', - Discussions: 'Tartışmalar', - Discussion_Desc: 'Neler olup bittiğini gözden geçirmeye yardımcı olun! Bir tartışma oluşturarak, seçtiğinizin bir alt kanalı oluşturulur ve her ikisi de bağlanır.', - Discussion_name: 'Tartışma adı', - Done: 'Tamamlandı', - Dont_Have_An_Account: 'Hesabın yok mu?', - Do_you_have_an_account: 'Hesabın var mı?', - Do_you_have_a_certificate: 'Sertifikanız var mı?', - Do_you_really_want_to_key_this_room_question_mark: 'Bu odayı gerçekten {{key}} istiyor musun?', - E2E_Encryption: 'Uçtan Uca Şifreleme (E2E)', - E2E_How_It_Works_info1: 'Artık şifrelenmiş özel gruplar ve doğrudan iletiler oluşturabilirsiniz. Mevcut özel grupları veya özel iletileri şifreli olarak da değiştirebilirsiniz.', - E2E_How_It_Works_info2: 'Bu, *Uçtan Uca Şifreleme\'dir (E2E)*, böylece iletilerinizi şifrelemek / çözmek için anahtar ve bunlar sunucuya kaydedilmez. Bu nedenle *bu şifreyi daha sonra ihtiyaç duyduğunuzda erişebileceğiniz güvenli bir yerde* saklamanız gerekir.', - E2E_How_It_Works_info3: 'Devam ederseniz, otomatik olarak bir Uçtan Uca Şifreleme (E2E) şifresi oluşturulacaktır.', - E2E_How_It_Works_info4: 'Mevcut Uçtan Uca Şifreleme (E2E) şifresini, herhangi bir tarayıcıdan istediğiniz zaman girdiğiniz şifreleme anahtarınız için yeni bir şifre de ayarlayabilirsiniz.', - edit: 'düzenle', - edited: 'düzenlendi', - Edit: 'Düzenle', - Edit_Status: 'Durumu Düzenle', - Edit_Invite: 'Daveti Düzenle', - End_to_end_encrypted_room: 'Uçtan uca şifreli oda', - end_to_end_encryption: 'uçtan uca şifreleme', - Email_Notification_Mode_All: 'Tüm Bahsetmeler/Özel İletiler', - Email_Notification_Mode_Disabled: 'Devre Dışı', - Email_or_password_field_is_empty: 'E-posta veya şifre alanı boş', - Email: 'E-posta', - email: 'e-posta', - Empty_title: 'Boş başlık', - Enable_Auto_Translate: 'Otomatik Çeviriyi Etkinleştir', - Enable_notifications: 'Bildirimleri etkinleştir', - Encrypted: 'Şifreli', - Encrypted_message: 'Şifreli ileti', - Enter_Your_E2E_Password: 'Uçtan Uca Şifreleme (E2E) Şifrenizi Girin', - Enter_Your_Encryption_Password_desc1: 'Bu, şifrelenmiş özel gruplarınıza ve doğrudan iletilerinize erişmenize izin verecektir.', - Enter_Your_Encryption_Password_desc2: 'Sohbeti kullandığınız her yerde iletileri şifrelemek / çözmek için şifre girmeniz gerekir.', - Encryption_error_title: 'Şifreleme şifreniz yanlış görünüyor', - Encryption_error_desc: 'İçe aktarılacak şifreleme anahtarınızın kodu çözülemedi.', - Everyone_can_access_this_channel: 'Bu kanala herkes erişebilir', - Error_uploading: 'Yükleme hatası', - Expiration_Days: 'Geçerlilik Süresi (Gün)', - Favorite: 'Favori', - Favorites: 'Favoriler', - Files: 'Dosyalar', - File_description: 'Dosya açıklaması', - File_name: 'Dosya adı', - Finish_recording: 'Kaydı bitir', - Following_thread: 'Konu takip ediliyor', - For_your_security_you_must_enter_your_current_password_to_continue: 'Güvenliğiniz için, devam etmek için mevcut şifrenizi girmelisiniz', - Forgot_password_If_this_email_is_registered: 'Bu e-posta kayıtlıysa, şifrenizi nasıl sıfırlayacağınıza dair talimatlar göndereceğiz. Kısa süre içinde bir e-posta almazsanız, lütfen geri gelin ve tekrar deneyin.', - Forgot_password: 'Parolanızı mı unuttunuz?', - Forgot_Password: 'Parolamı Unuttum', - Forward: 'İlet', - Forward_Chat: 'Sohbete İlet', - Forward_to_department: 'Bölüme İlet', - Forward_to_user: 'Kullanıcıya İlet', - Full_table: 'Tam tabloyu görmek için tıklayın', - Generate_New_Link: 'Yeni Bağlantı Oluştur', - Group_by_favorites: 'Favorilere göre grupla', - Group_by_type: 'Türe göre grupla', - Hide: 'Gizle', - Has_joined_the_channel: 'kanala katıldı', - Has_joined_the_conversation: 'sohbete katıldı', - Has_left_the_channel: 'kanaldan ayrıldı', - Hide_System_Messages: 'Sistem İletilerını Gizle', - Hide_type_messages: '"{{type}}" iletilerini gizle', - How_It_Works: 'Nasıl Çalışır', - Message_HideType_uj: 'Kullanıcı Katıldı', - Message_HideType_ul: 'Kullanıcı Ayrıldı', - Message_HideType_ru: 'Kullanıcı Kaldırıldı', - Message_HideType_au: 'Kullanıcı Eklendi', - Message_HideType_mute_unmute: 'Kullanıcı Sesi Kapatıldı / Sesi Açıldı', - Message_HideType_r: 'Oda Adı Değiştirildi', - Message_HideType_ut: 'Kullanıcı Sohbete Katıldı', - Message_HideType_wm: 'Hoşgeldiniz', - Message_HideType_rm: 'İleti Kaldırıldı', - Message_HideType_subscription_role_added: 'Rol Belirlendi', - Message_HideType_subscription_role_removed: 'Artık Kullanılmayan Rol', - Message_HideType_room_archived: 'Oda Arşivlendi', - Message_HideType_room_unarchived: 'Oda Arşivden Çıkarıldı', - I_Saved_My_E2E_Password: 'Uçtan Uca Şifreleme (E2E) Şifremi Kaydettim', - IP: 'IP', - In_app: 'Uygulama İçi', - In_App_And_Desktop: 'Uygulama İçi ve Masaüstü', - In_App_and_Desktop_Alert_info: 'Uygulama açıkken ekranın üst kısmında bir başlık görüntüler ve masaüstünde bir bildirim görüntüler', - Invisible: 'Görünmez', - Invite: 'Davet Et', - is_a_valid_RocketChat_instance: 'geçerli bir Rocket.Chat örneği', - is_not_a_valid_RocketChat_instance: 'geçerli bir Rocket.Chat örneği değil', - is_typing: 'yazıyor', - Invalid_or_expired_invite_token: 'Geçersiz veya süresi dolmuş davet belirteci (token)', - Invalid_server_version: 'Bağlanmaya çalıştığınız sunucu artık uygulama tarafından desteklenmeyen bir sürüm kullanıyor: {{currentVersion}}.\n\n{{minVersion}} sürümüne ihtiyacımız var', - Invite_Link: 'Davet Bağlantısı', - Invite_users: 'Kullanıcıları davet et', - Join: 'Katıl', - Join_Code: 'Katılım Kodu', - Insert_Join_Code: 'Katılım Kodu Girin', - Join_our_open_workspace: 'Açık çalışma alanımıza katılın', - Join_your_workspace: 'Çalışma alanınıza katılın', - Just_invited_people_can_access_this_channel: 'Yalnızca davet edilen kişiler bu kanala erişebilir', - Language: 'Dil', - last_message: 'son ileti', - Leave_channel: 'Kanaldan ayrıl', - leaving_room: 'odadan ayrılıyor', - leave: 'ayrıl', - Legal: 'Yasal', - Light: 'Açık', - License: 'Lisans', - Livechat: 'Canlı Sohbet', - Livechat_edit: 'Canlı sohbeti düzenle', - Login: 'Oturum aç', - Login_error: 'Kimlik bilgileriniz reddedildi! Lütfen tekrar deneyin.', - Login_with: 'ile giriş', - Logging_out: 'Çıkış Yapılıyor', - Logout: 'Çıkış Yap', - Max_number_of_uses: 'Maksimum kullanım sayısı', - Max_number_of_users_allowed_is_number: 'İzin verilen maksimum kullanıcı sayısı {{maxUsers}}', - members: 'üyeler', - Members: 'Üyeler', - Mentioned_Messages: 'Bahsedilen İletiler', - mentioned: 'bahsedildi', - Mentions: 'Bahsetmeler', - Message_accessibility: '{{user}} tarafından {{time}} itibarıyla ileti: {{message}}', - Message_actions: 'İleti işlemleri', - Message_pinned: 'İleti sabitlendi', - Message_removed: 'İleti kaldırıldı', - Message_starred: 'İletia yıldız eklendi', - Message_unstarred: 'İletiın yıldızı kaldırıldı', - message: 'ileti', - messages: 'iletiler', - Message: 'İleti', - Messages: 'İletiler', - Message_Reported: 'İleti bildirildi', - Microphone_Permission_Message: 'Rocket.Chat\'in mikrofonunuza erişmesi gerekiyor, böylece sesli ileti gönderebilirsiniz.', - Microphone_Permission: 'Mikrofon İzni', - Mute: 'Sessize Al', - muted: 'sessize alındı', - My_servers: 'Sunucularım', - N_people_reacted: '{{n}} kişi tepki verdi', - N_users: '{{n}} kullanıcı', - name: 'isim', - Name: 'İsim', - Navigation_history: 'Gezinti geçmişi', - Never: 'Asla', - New_Message: 'Yeni İleti', - New_Password: 'Yeni Şifre', - New_Server: 'Yeni Sunucu', - Next: 'Sonraki', - No_files: 'Dosya yok', - No_limit: 'Limit yok', - No_mentioned_messages: 'Belirtilen ileti yok', - No_pinned_messages: 'Sabitlenmiş ileti yok', - No_results_found: 'Sonuç bulunamadı', - No_starred_messages: 'Yıldızlı ileti yok', - No_thread_messages: 'Konu iletisi yok', - No_label_provided: 'Hiç {{label}} sağlanmadı.', - No_Message: 'İleti Yok', - No_messages_yet: 'Şu ana kadar ileti yok', - No_Reactions: 'Tepki Yok', - No_Read_Receipts: 'Okundu Bilgisi Yok', - Not_logged: 'Kayıtlı değil', - Not_RC_Server: 'Bu bir Rocket.Chat sunucusu değil.\n{{contact}}', - Nothing: 'Hiçbir Şey', - Nothing_to_save: 'Kaydedilecek bir şey yok!', - Notify_active_in_this_room: 'Bu odadaki çevrimiçi kullanıcıları bilgilendir', - Notify_all_in_this_room: 'Bu odadaki herkesi bilgilendir', - Notifications: 'Bildirimler', - Notification_Duration: 'Bildirim Süresi', - Notification_Preferences: 'Bildirim Tercihleri', - No_available_agents_to_transfer: 'Aktarılacak yemsilci yok', - Offline: 'Çevrimdışı', - Oops: 'Ahh!', - Omnichannel: 'Çoklu Kanal', - Open_Livechats: 'Devam Eden Sohbetler', - Omnichannel_enable_alert: 'Çoklu Kanal\'da mevcut değilsiniz. Erişilebilir olmak ister misiniz?', - Onboarding_description: 'Çalışma alanı, ekibinizin veya kuruluşunuzun işbirliği alanıdır. Çalışma alanı yöneticisinden bir ekibe katılmak veya bir ekip oluşturmak için yardım isteyin.', - Onboarding_join_workspace: 'Bir çalışma alanına katılın', - Onboarding_subtitle: 'Ekip İşbirliğinin Ötesinde', - Onboarding_title: 'Rocket.Chat\'e hoş geldiniz', - Onboarding_join_open_description: 'Rocket.Chat ekibi ve topluluğu ile sohbet etmek için açık çalışma alanımıza katılın.', - Onboarding_agree_terms: 'Devam ederek Rocket.Chat\'i kabul etmiş olursunuz', - Onboarding_less_options: 'Daha az seçenek', - Onboarding_more_options: 'Daha çok seçenek', - Online: 'Çevrimiçi', - Only_authorized_users_can_write_new_messages: 'Yalnızca yetkili kullanıcılar yeni ileti yazabilir', - Open_emoji_selector: 'Emoji seçiciyi aç', - Open_Source_Communication: 'Açık Kaynak İletişim', - Open_your_authentication_app_and_enter_the_code: 'Kimlik doğrulama uygulamanızı açın ve kodu girin.', - OR: 'OR', - OS: 'OS', - Overwrites_the_server_configuration_and_use_room_config: 'Sunucu yapılandırmasının üzerine yazar ve oda yapılandırmasını kullanır', - Password: 'Şifre', - Parent_channel_or_group: 'Üst kanal veya grup', - Permalink_copied_to_clipboard: 'Kalıcı bağlantı panoya kopyalandı!', - Phone: 'Telefon', - Pin: 'Sabitle', - Pinned_Messages: 'Sabitlenen İletiler', - pinned: 'sabitlendi', - Pinned: 'Sabitlendi', - Please_add_a_comment: 'Lütfen bir yorum ekleyin', - Please_enter_your_password: 'Lütfen şifrenizi giriniz', - Please_wait: 'Lütfen bekle.', - Preferences: 'Tercihler', - Preferences_saved: 'Tercihler kaydedildi!', - Privacy_Policy: ' Privacy Policy', - Private_Channel: 'Özel Kanal', - Private_Groups: 'Özel Gruplar', - Private: 'Özel', - Processing: 'İşleniyor...', - Profile_saved_successfully: 'Profil başarıyla kaydedildi!', - Profile: 'Profil', - Public_Channel: 'Herkese Açık Kanal', - Public: 'Herkese Açık', - Push_Notifications: 'Anlık Bildirimler', - Push_Notifications_Alert_Info: 'Bu bildirimler, uygulama açık olmadığında size teslim edilir', - Quote: 'Alıntı', - Reactions_are_disabled: 'Tepkiler devre dışı bırakıldı', - Reactions_are_enabled: 'Tepkiler etkinleştirildi', - Reactions: 'Tepkiler', - Read: 'Oku', - Read_External_Permission_Message: 'Rocket.Chat\'in cihazınızdaki fotoğraflara, medyaya ve dosyalara erişmesi gerekiyor', - Read_External_Permission: 'Medya Okuma İzni ', - Read_Only_Channel: 'Yazma Kısıtlı Kanal', - Read_Only: 'Yazma Kısıtlı', - Read_Receipt: 'Okundu Bilgisi', - Receive_Group_Mentions: 'Grup Bahsetmelerini Al', - Receive_Group_Mentions_Info: 'Grup bahsetmelerini al', - Register: 'Kayıt Ol', - Repeat_Password: 'Şifre Tekrarı', - Replied_on: 'Yanıtlandı:', - replies: 'yanıtlar', - reply: 'yanıtla', - Reply: 'Yanıtla', - Report: 'Bildir', - Receive_Notification: 'Bildirim Al', - Receive_notifications_from: '{{name}} bildirimlerini alın', - Resend: 'Yeniden yolla', - Reset_password: 'Şifre sıfırla', - resetting_password: 'şifre sıfırlanıyor', - RESET: 'SIFIRLA', - Return: 'Geri dön', - Review_app_title: 'Uygulama hoşunuza gitti mi?', - Review_app_desc: '{{store}} üzerinde bize 5 yıldız verin', - Review_app_yes: 'Elbette!', - Review_app_no: 'Hayır', - Review_app_later: 'Belki daha sonra', - Review_app_unable_store: '{{store}} açılamıyor!', - Review_this_app: 'Bu uygulamayı değerlendirin', - Remove: 'Kaldır', - Roles: 'Roller', - Room_actions: 'Oda işlemleri', - Room_changed_announcement: 'Oda duyurusu, {{userBy}} tarafından {{announcement}} olarak değiştirildi', - Room_changed_avatar: 'Oda profil fotoğrafı {{userBy}} tarafından değiştirildi', - Room_changed_description: 'Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi', - Room_changed_privacy: 'Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi', - Room_changed_topic: 'Oda konusu, {{userBy}} tarafından {{topic}} olarak değiştirildi', - Room_Files: 'Oda Dosyaları', - Room_Info_Edit: 'Oda Bilgilerini Düzenle', - Room_Info: 'Oda Bilgisi', - Room_Members: 'Oda Üyeleri', - Room_name_changed: 'Oda adı, {{userBy}} tarafından {{name}} olarak değiştirildi', - SAVE: 'KAYDET', - Save_Changes: 'Değişiklikleri Kaydet', - Save: 'Kaydet', - Saved: 'Kaydedildi', - saving_preferences: 'tercihler kaydediliyor', - saving_profile: 'profil kaydediliyor', - saving_settings: 'ayarlar kaydediliyor', - saved_to_gallery: 'Galeriye kaydedildi', - Save_Your_E2E_Password: '(E2E) Şifrenizi Kaydedin', - Save_Your_Encryption_Password: 'Şifreleme Parolanızı Kaydedin', - Save_Your_Encryption_Password_warning: 'Bu parola hiçbir yerde saklanmadığından başka bir yere dikkatlice kaydedin.', - Save_Your_Encryption_Password_info: 'Parolanızı kaybettiğinizde, kurtarmanın bir yolu olmadığını ve iletilerinize erişiminizi kaybedeceğinizi unutmayın.', - Search_Messages: 'İleti ara', - Search: 'Ara', - Search_by: 'Ara', - Search_global_users: 'Global kullanıcıları ara', - Search_global_users_description: 'Açarsanız, diğer şirketlerden veya sunuculardan herhangi bir kullanıcıyı arayabilirsiniz.', - Seconds: '{{second}} saniye', - Security_and_privacy: 'Güvenlik ve gizlilik', - Select_Avatar: 'Profil resmi seç', - Select_Server: 'Sunucu seç', - Select_Users: 'Kullanıcıları seç', - Select_a_Channel: 'Kanal Seç', - Select_a_Department: 'Bölüm Seç', - Select_an_option: 'Bir seçenek seçin', - Select_a_User: 'Kullanıcı Seç', - Send: 'Yolla', - Send_audio_message: 'Sesli ileti gönder', - Send_crash_report: 'Çökme raporu gönder', - Send_message: 'İleti gönder', - Send_me_the_code_again: 'Kodu tekrar gönder', - Send_to: 'Gönderiliyor...', - Sending_to: 'Gönderiliyor:', - Sent_an_attachment: 'Bir ek gönderildi', - Server: 'Sunucu', - Servers: 'Sunucular', - Server_version: 'Sunucu versiyonu: {{version}}', - Set_username_subtitle: 'Kullanıcı adı başkalarının iletilerde sizden bahsetmesine izin vermek için kullanılır', - Set_custom_status: 'Özelleştirilmiş durumu ayarlayın', - Set_status: 'Durumu ayarla', - Status_saved_successfully: 'Durum başarıyla kaydedildi!', - Settings: 'Ayarlar', - Settings_succesfully_changed: 'Ayarlar başarıyla değiştirildi!', - Share: 'Paylaş', - Share_Link: 'Bağlantı paylaş', - Share_this_app: 'Bu uygulamayı paylaş', - Show_more: 'Daha fazla göster..', - Show_Unread_Counter: 'Okunmamış Sayacını Göster', - Show_Unread_Counter_Info: 'Okunmamış sayacı, listede kanalın sağ tarafında bir rozet olarak görüntülenir', - Sign_in_your_server: 'Sunucunuzda oturum açın', - Sign_Up: 'Kaydol', - Some_field_is_invalid_or_empty: 'Bazı alanlar geçersiz veya boş', - Sorting_by: '{{key}} göre sıralanıyor', - Sound: 'Ses', - Star_room: 'Odayı Yıldızla', - Star: 'Yıldızla', - Starred_Messages: 'Yıldızlı İletiler', - starred: 'yıldızlandı', - Starred: 'Yıldızlandı', - Start_of_conversation: 'Konuşma başlangıcı', - Start_a_Discussion: 'Tartışma Başlat', - Started_discussion: 'Bir tartışma başlattı:', - Started_call: 'Arama {{userBy}} tarafından başlatıldı', - Submit: 'Kaydet', - Table: 'Tablo', - Tags: 'Etiketler', - Take_a_photo: 'Fotoğraf çek', - Take_a_video: 'Video çek', - Take_it: 'Al!', - tap_to_change_status: 'durumu değiştirmek için dokunun', - Tap_to_view_servers_list: 'Sunucu listesini görüntülemek için dokunun', - Terms_of_Service: ' Kullanım Şartları ', - Theme: 'Tema', - The_user_wont_be_able_to_type_in_roomName: 'Kullanıcı {{roomName}} içinde yazamayacak', - The_user_will_be_able_to_type_in_roomName: 'Kullanıcı {{roomName}} içinde yazabilecek', - There_was_an_error_while_action: '{{action}} sırasında bir hata oluştu!', - This_room_is_blocked: 'Bu oda engellendi', - This_room_is_read_only: 'Bu oda yazma kısıtlı', - Thread: 'Başlık', - Threads: 'Başlıklar', - Timezone: 'Saat dilimi', - To: 'Kime', - topic: 'konu', - Topic: 'Konu', - Translate: 'Çevir', - Try_again: 'Tekrar deneyin', - Two_Factor_Authentication: 'İki faktörlü Kimlik Doğrulama', - Type_the_channel_name_here: 'Kanal adını buraya yazın', - unarchive: 'arşivden çıkar', - UNARCHIVE: 'ARŞİVDEN ÇIKAR', - Unblock_user: 'Kullanıcının engelini kaldır', - Unfavorite: 'Favorilerden Çıkar', - Unfollowed_thread: 'Takip edilmeyen başlık', - Unmute: 'Sesi Aç', - unmuted: 'Sesi Açıldı', - Unpin: 'Sabitlemeyi kaldır', - unread_messages: 'okunmamış', - Unread: 'Okunmamış', - Unread_on_top: 'Okunmamışlar üstte', - Unstar: 'Yıldızı kaldır', - Updating: 'Güncelleniyor...', - Uploading: 'Gönderiliyor', - Upload_file_question_mark: 'Dosya gönderilsin mi?', - User: 'Kullanıcı', - Users: 'Kullanıcılar', - User_added_by: '{{userAdded}} adlı kullanıcı {{userBy}} tarafından eklendi', - User_Info: 'Kullanıcı bilgisi', - User_has_been_key: 'Kullanıcı {{key}} olmuştur', - User_is_no_longer_role_by_: '{{user}} artık {{role}} değil ({{userBy}} tarafından)', - User_muted_by: '{{userMuted}} adlı kullanıcının sesini {{userBy}} kapattı', - User_removed_by: '{{userRemoved}} kullanıcısı {{userBy}} tarafından kaldırıldı', - User_sent_an_attachment: '{{user}} bir ek gönderdi', - User_unmuted_by: '{{userUnmuted}} kullanıcısının sesi {{userBy}} tarafından açıldı', - User_was_set_role_by_: '{{user}}, {{userBy}} tarafından {{role}} ayarlandı', - Username_is_empty: 'Kullanıcı adı boş!', - Username: 'Kullanıcı adı', - Username_or_email: 'Kullanıcı adı ya da e-posta', - Uses_server_configuration: 'Sunucu yapılandırmasını kullanır', - Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Genellikle tartışma, "Nasıl resim yüklerim?" gibi bir soruyla başlar.', - Validating: 'Doğrulanıyor', - Registration_Succeeded: 'Kayıt Başarılı!', - Verify: 'Onayla', - Verify_email_title: 'Kaydınızı onaylayın!', - Verify_email_desc: 'Kaydınızı onaylamak için size bir e-posta gönderdik. Kısa süre içinde bir e-posta almazsanız, lütfen geri gelin ve tekrar deneyin.', - Verify_your_email_for_the_code_we_sent: 'Gönderdiğimiz kod için e-postanızı doğrulayın', - Video_call: 'Görüntülü arama', - View_Original: 'Orijinali Görüntüle', - Voice_call: 'Sesli arama', - Waiting_for_network: 'Ağ bağlantısı bekleniyor ...', - Websocket_disabled: 'Bu sunucu için Websocket devre dışı bırakıldı.\n{{contact}}', - Welcome: 'Hoşgeldiniz', - What_are_you_doing_right_now: 'Şu an ne yapıyorsun?', - Whats_your_2fa: '2 faktör doğrulama (2FA) kodunuz nedir?', - Without_Servers: 'Sunucusuz', - Workspaces: 'Çalışma alanları', - Would_you_like_to_return_the_inquiry: 'Başvuruyu geri çevirmek ister misiniz?', - Write_External_Permission_Message: 'Rocket.Chat\'in galerinize erişmesi gerekiyor, böylece resimleri kaydedebilirsiniz.', - Write_External_Permission: 'Galeri İzni', - Yes: 'Evet', - Yes_action_it: 'Evet, {{action}}!', - Yesterday: 'Dün', - You_are_in_preview_mode: 'İzleme modundasınız', - You_are_offline: 'Çevrimdışısınız', - You_can_search_using_RegExp_eg: 'Düzenli ifadeleri (Regular Expressions) kullanabilirsiniz. Örneğin: `/^text$/i`', - You_colon: 'Siz: ', - you_were_mentioned: 'senden bahsedildi', - You_were_removed_from_channel: '{{channel}} kanalından çıkarıldınız', - you: 'siz', - You: 'Siz', - Logged_out_by_server: 'Sunucu tarafından çıkış yaptınız. Lütfen tekrar giriş yapın.', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Bir şeyler paylaşmak için Rocket.Chat sunucusuna erişmeniz gerekir.', - You_need_to_verifiy_your_email_address_to_get_notications: 'Bildirim almak için e-posta adresinizi doğrulamanız gerekiyor', - Your_certificate: 'Sertifikanız', - Your_message: 'İletiınız', - Your_invite_link_will_expire_after__usesLeft__uses: 'Davet bağlantınızın geçerliliği {{usesLeft}} kullanımdan sonra sona erecek.', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Davet bağlantınızın geçerliliği {{date}} tarihinde veya {{usesLeft}} kullanımdan sonra sona erecek.', - Your_invite_link_will_expire_on__date__: 'Davet bağlantınızın geçerlilik süresi {{date}} tarihinde sona erecek.', - Your_invite_link_will_never_expire: 'Davet bağlantınızın geçerlilik süresi asla dolmayacak.', - Your_workspace: 'Çalışma alanınız', - Your_password_is: 'Şifreniz', - Version_no: 'Versiyon: {{version}}', - You_will_not_be_able_to_recover_this_message: 'Bu iletiyi kurtaramayacaksınız!', - You_will_unset_a_certificate_for_this_server: 'Bu sunucu için bir sertifika ayarını kaldıracaksınız', - Change_Language: 'Dili değiştir', - Crash_report_disclaimer: 'Sohbetlerinizin içeriğini asla takip etmiyoruz. Çökme raporu ve analiz olayları, sorunları tanımlamak ve düzeltmek için yalnızca bizim için ilgili bilgileri içerir.', - Type_message: 'İleti yaz', - Room_search: 'Oda arama', - Room_selection: 'Oda seçimi 1...9', - Next_room: 'Sonraki oda', - Previous_room: 'Önceki oda', - New_room: 'Yeni oda', - Upload_room: 'Odaya yükle', - Search_messages: 'İletilerda ara', - Scroll_messages: 'İletilerı kaydır', - Reply_latest: 'Sonuncuyu yanıtla', - Reply_in_Thread: 'Konu içinde cevapla', - Server_selection: 'Sunucu seçimi', - Server_selection_numbers: 'Sunucu seçimi 1...9', - Add_server: 'Sunucu ekle', - New_line: 'Yeni satır', - You_will_be_logged_out_of_this_application: 'Bu uygulamadan çıkış yapacaksınız.', - Clear: 'Temizle', - This_will_clear_all_your_offline_data: 'Bu, tüm çevrimdışı verilerinizi temizleyecektir.', - This_will_remove_all_data_from_this_server: 'Bu, bu sunucudaki tüm verileri kaldıracaktır.', - Mark_unread: 'Okunmadı olarak işaretle', - Wait_activation_warning: 'Giriş yapmadan önce, hesabınız bir yönetici tarafından manuel olarak etkinleştirilmelidir.', - Screen_lock: 'Ekran kilidi', - Local_authentication_biometry_title: 'Doğrula', - Local_authentication_biometry_fallback: 'Parola kullan', - Local_authentication_unlock_option: 'Şifre ile Kilidi Açın', - Local_authentication_change_passcode: 'Parolayı Değiştir', - Local_authentication_info: 'Not: Parolayı unutursanız, uygulamayı silmeniz ve yeniden yüklemeniz gerekir.', - Local_authentication_facial_recognition: 'yüz tanıma', - Local_authentication_fingerprint: 'parmak izi', - Local_authentication_unlock_with_label: '{{label}} ile kilidi açın', - Local_authentication_auto_lock_60: '1 dakika sonra', - Local_authentication_auto_lock_300: '5 dakika sonra', - Local_authentication_auto_lock_900: '15 dakika sonra', - Local_authentication_auto_lock_1800: '30 dakika sonra', - Local_authentication_auto_lock_3600: '1 saat sonra', - Passcode_enter_title: 'Şifrenizi giriniz', - Passcode_choose_title: 'Yeni şifrenizi yazın', - Passcode_choose_confirm_title: 'Yeni şifrenizi onaylayın', - Passcode_choose_error: 'Parolalar eşleşmiyor. Tekrar deneyin.', - Passcode_choose_force_set: 'Yönetici tarafından istenen şifre', - Passcode_app_locked_title: 'Uygulama kilitlendi', - Passcode_app_locked_subtitle: '{{timeLeft}} saniye içinde tekrar deneyin', - After_seconds_set_by_admin: '{{seconds}} saniye sonra (yönetici tarafından belirlenir)', - Dont_activate: 'Şimdi etkinleştirme', - Queued_chats: 'Sıralı sohbetler', - Queue_is_empty: 'Sıra boş', - Logout_from_other_logged_in_locations: 'Giriş yapılan diğer konumlardan çıkış yap', - You_will_be_logged_out_from_other_locations: 'Diğer konumlardan çıkış yapacaksınız.', - Logged_out_of_other_clients_successfully: 'Diğer istemcilerden başarıyla çıkış yapıldı', - Logout_failed: 'Oturum kapatma başarısız oldu!', - Log_analytics_events: 'Olayları günlüğe kaydet', - E2E_encryption_change_password_title: 'Şifreleme Parolasını Değiştir', - E2E_encryption_change_password_description: 'Artık şifrelenmiş özel gruplar ve doğrudan iletiler oluşturabilirsiniz. Mevcut özel grupları veya özel iletileri şifreli olarak da değiştirebilirsiniz. \nBu uçtan uca şifrelemedir, bu nedenle iletilerinizi şifrelemek / çözmek için kullanılan anahtar sunucuya kaydedilmez. Bu nedenle şifrenizi güvenli bir yerde saklamanız gerekir. Uçtan uca şifrelemeyi (E2E) kullanmak istediğiniz diğer cihazlara girmeniz istenecektir.', - E2E_encryption_change_password_error: 'Uçtan uca şifreleme (E2E) anahtar şifresi değiştirilirken hata!', - E2E_encryption_change_password_success: 'Uçtan uca şifreleme (E2E) anahtar şifresi başarıyla değiştirildi!', - E2E_encryption_change_password_message: 'Dikkatlice kaydettiğinizden emin olun.', - E2E_encryption_change_password_confirmation: 'Evet, değiştir!', - E2E_encryption_reset_title: 'Uçtan uca şifreleme (E2E) Anahtarını Sıfırla', - E2E_encryption_reset_description: 'Bu seçenek mevcut uçtan uca şifreleme (E2E) anahtarınızı kaldıracak ve oturumu kapatacaktır. \nTekrar oturum açtığınızda, Rocket.Chat size yeni bir anahtar oluşturacak ve çevrimiçi olarak bir veya daha fazla üyesi olan şifreli herhangi bir odaya erişiminizi geri yükleyecektir. \nUçtan uca şifrelemenin (E2E) doğası gereği Rocket.Chat, çevrimiçi üyesi olmayan hiçbir şifreli odaya erişimi geri yükleyemez.', - E2E_encryption_reset_button: 'Uçtan uca şifreleme (E2E) anahtarını sıfırla', - E2E_encryption_reset_error: 'Uçtan uca şifreleme (E2E) anahtarı sıfırlanırken hata!', - E2E_encryption_reset_message: 'Oturumunuz kapatılacak!', - E2E_encryption_reset_confirmation: 'Evet, sıfırla', - Following: 'Takip ediliyor', - Threads_displaying_all: 'Tüm konular görüntüleniyor', - Threads_displaying_following: 'Takip edilen konular görüntüleniyor', - Threads_displaying_unread: 'Okunmamış konular görüntüleniyor', - No_threads: 'Konu yok', - No_threads_following: 'Herhangi bir konuyu takip etmiyorsunuz', - No_threads_unread: 'Okunmamış konu yok', - Messagebox_Send_to_channel: 'Kanala gönder', - Set_as_leader: 'Lider olarak ayarla', - Set_as_moderator: 'Moderatör olarak ayarla', - Set_as_owner: 'Sahip olarak ayarla', - Remove_as_leader: 'Lider olarak kaldır', - Remove_as_moderator: 'Moderatör olarak kaldır', - Remove_as_owner: 'Sahip olarak kaldır', - Remove_from_room: 'Odadan çıkar', - Ignore: 'Yok say', - Unignore: 'Yok sayma', - User_has_been_ignored: 'Kullanıcı yok sayıldı.', - User_has_been_unignored: 'Kullanıcı artık yok sayılmıyor.', - User_has_been_removed_from_s: 'Kullanıcı {{s}} alanından kaldırıldı.', - User__username__is_now_a_leader_of__room_name_: '{{Username}} kullanıcısı artık {{room_name}} lideridir.', - User__username__is_now_a_moderator_of__room_name_: '{{Username}} kullanıcısı artık bir {{room_name}} moderatörüdür.', - User__username__is_now_a_owner_of__room_name_: '{{Username}} kullanıcısı artık {{room_name}} adlı odanın sahibidir.', - User__username__removed_from__room_name__leaders: '{{Username}} adlı kullanıcı, {{room_name}} liderlerinden kaldırıldı.', - User__username__removed_from__room_name__moderators: '{{Username}} adlı kullanıcı, {{room_name}} moderatörlerinden kaldırıldı.', - User__username__removed_from__room_name__owners: '{{Username}} adlı kullanıcı, {{room_name}} sahiplerinden kaldırıldı.', - The_user_will_be_removed_from_s: 'Kullanıcı, {{s}} alanından kaldırılacak!', - Yes_remove_user: 'Evet, kullanıcıyı kaldır!', - Direct_message: 'Özel ileti', - Message_Ignored: 'İleti yok sayıldı. Görüntülemek için dokunun.', - Enter_workspace_URL: 'Çalışma alanı URL\'nizi girin', - Workspace_URL_Example: 'Örn. sirketiniz.rocket.chat' -}; diff --git a/app/i18n/locales/tr.json b/app/i18n/locales/tr.json new file mode 100644 index 00000000000..1029893adfd --- /dev/null +++ b/app/i18n/locales/tr.json @@ -0,0 +1,710 @@ +{ + "1_person_reacted": "1 kişi tepki verdi.", + "1_user": "1 kullanıcı", + "error-action-not-allowed": "{{action}}'a izin verilmiyor!", + "error-application-not-found": "Uygulama bulunamadı!", + "error-archived-duplicate-name": "{{room_name}} adında arşivlenmiş bir kanal var!", + "error-avatar-invalid-url": "Geçersiz avatar URL'si: {{url}}", + "error-avatar-url-handling": "{{username}} için bir URL'den ({{url}}) avatar ayarı işlenirken hata oluştu!", + "error-cant-invite-for-direct-room": "Kullanıcı özel odalara davet edilemedi!", + "error-could-not-change-email": "E-posta değiştirilemedi!", + "error-could-not-change-name": "İsim değiştirilemedi!", + "error-could-not-change-username": "Kullanıcı adı değiştirilemedi!", + "error-could-not-change-status": "Durum değiştirilemedi!", + "error-delete-protected-role": "Korunan bir rol silinemez!", + "error-department-not-found": "Bölüm bulunamadı!", + "error-direct-message-file-upload-not-allowed": "Özel iletilerde dosya paylaşımına izin verilmiyor!", + "error-duplicate-channel-name": "{{channel_name}} adında bir kanal var!", + "error-email-domain-blacklisted": "E-posta alan adı kara listeye alındı!", + "error-email-send-failed": "E-posta göndermeye çalışırken hata oluştu: {{message}}", + "error-save-image": "Görüntüyü kaydederken hata oluştu!", + "error-save-video": "Videoyu kaydederken hata oluştu!", + "error-field-unavailable": "{{field}} zaten kullanılıyor! :(", + "error-file-too-large": "Dosya çok büyük!", + "error-importer-not-defined": "İçe aktarıcı doğru tanımlanmadı, \"Import\" sınıfı eksik!", + "error-input-is-not-a-valid-field": "{{input}} geçerli bir {{field}} değil!", + "error-invalid-actionlink": "Geçersiz işlem bağlantısı!", + "error-invalid-arguments": "Geçersiz parametreler!", + "error-invalid-asset": "Geçersiz veri!", + "error-invalid-channel": "Geçersiz kanal.", + "error-invalid-channel-start-with-chars": "Geçersiz kanal! @ veya # ile başlayın.", + "error-invalid-custom-field": "Geçersiz özelleştirilmiş alan", + "error-invalid-custom-field-name": "Geçersiz özelleştirilmiş alan adı! Yalnızca harf, rakam, kısa çizgi ve alt çizgi kullanın.", + "error-invalid-date": "Geçersiz tarih!", + "error-invalid-description": "Geçersiz açıklama!", + "error-invalid-domain": "Geçersiz alan adı!", + "error-invalid-email": "Geçersiz e-posta {{email}}!", + "error-invalid-email-address": "Geçersiz e-posta adresi!", + "error-invalid-file-height": "Geçersiz fotoğraf yüksekliği!", + "error-invalid-file-type": "Geçersiz dosya türü!", + "error-invalid-file-width": "Geçersiz fotoğraf genişliği!", + "error-invalid-from-address": "Geçersiz bir KİMDEN adresi bildirdiniz!", + "error-invalid-integration": "Geçersiz entegrasyon", + "error-invalid-message": "Geçersiz ileti!", + "error-invalid-method": "Geçersiz metot!", + "error-invalid-name": "Geçersiz isim!", + "error-invalid-password": "Geçersiz şifre!", + "error-invalid-redirectUri": "Geçersiz yönlendirme bağlantısı!", + "error-invalid-role": "Geçersiz rol!", + "error-invalid-room": "Geçersiz oda!", + "error-invalid-room-name": "{{room_name}}, geçerli bir oda adı değil!", + "error-invalid-room-type": "{{type}}, geçerli bir oda türü değil!", + "error-invalid-settings": "Geçersiz ayar!", + "error-invalid-subscription": "Geçersiz başvuru!", + "error-invalid-token": "Geçersiz belirteç!", + "error-invalid-triggerWords": "Geçersiz tetikleyici parametreleri!", + "error-invalid-urls": "Geçersiz URL'ler!", + "error-invalid-user": "Geçersiz kullanıcı!", + "error-invalid-username": "Geçersiz kullanıcı adı!", + "error-invalid-webhook-response": "İstek URL'si 200'den farklı bir durumla yanıt verdi!", + "error-message-deleting-blocked": "İleti silme engellendi!", + "error-message-editing-blocked": "İleti düzenleme engellendi", + "error-message-size-exceeded": "İleti boyutu, Message_MaxAllowedSize değerini aşıyor", + "error-missing-unsubscribe-link": "[unsubscribe] bağlantısını belirtmelisiniz.", + "error-no-tokens-for-this-user": "Bu kullanıcı için belirteç (token) yok", + "error-not-allowed": "İzin verilmedi", + "error-not-authorized": "Yetkili değil", + "error-push-disabled": "Push devre dışı", + "error-remove-last-owner": "Lütfen bunu kaldırmadan önce yeni bir sahip belirleyin.", + "error-role-in-use": "Rol kullanımda olduğu için silinemiyor", + "error-role-name-required": "Rol adı gerekli", + "error-the-field-is-required": "{{field}} alanı gereklidir.", + "error-too-many-requests": "Hata, çok fazla istek. Lütfen yavaşla. Tekrar denemeden önce {{seconds}} saniye beklemelisiniz.", + "error-user-is-not-activated": "Kullanıcı etkinleştirilmedi!", + "error-user-has-no-roles": "Kullanıcıya tanımlı rol yok!", + "error-user-limit-exceeded": "#channel_name kanalına davet etmeye çalıştığınız kullanıcıların sayısı, yönetici tarafından belirlenen sınırı aşıyor!", + "error-user-not-in-room": "Kullanıcı bu odada değil!", + "error-user-registration-custom-field": "error-user-registration-custom-field", + "error-user-registration-disabled": "Kullanıcı kaydı devre dışı bırakıldı!", + "error-user-registration-secret": "Kullanıcı kaydına yalnızca Gizli URL aracılığıyla izin verilir!", + "error-you-are-last-owner": "Son sahibi sizsiniz. Lütfen odadan ayrılmadan önce yeni bir sahip belirleyin.", + "Actions": "İşlemler", + "activity": "etkinlik", + "Activity": "Etkinlik", + "Add_Reaction": "Tepki ekle", + "Add_Server": "Sunucu ekle", + "Add_users": "Kullanıcı ekle", + "Admin_Panel": "Yönetim Paneli", + "Agent": "Temsilci", + "Alert": "Uyarı", + "alert": "uyarı", + "alerts": "uyarılar", + "All_users_in_the_channel_can_write_new_messages": "Kanaldaki tüm kullanıcılar yeni ileti yazabilir!", + "A_meaningful_name_for_the_discussion_room": "Tartışma odası için anlamlı bir isim", + "All": "Tümü", + "All_Messages": "Tüm İletiler", + "Allow_Reactions": "Tüm Tepkiler", + "Alphabetical": "Alfabetik", + "and_more": "ve daha", + "and": "ve", + "announcement": "duyuru", + "Announcement": "Duyuru", + "Apply_Your_Certificate": "Sertifikanızı Onaylayın", + "ARCHIVE": "ARŞİVLE", + "archive": "arşivle", + "are_typing": "yazıyor", + "Are_you_sure_question_mark": "Emin misiniz?", + "Are_you_sure_you_want_to_leave_the_room": "{{room}} odasından ayrılmak istediğinizden emin misiniz?", + "Audio": "Ses", + "Authenticating": "Doğrulanıyor", + "Automatic": "Otomatik", + "Auto_Translate": "Otomatik Çevir", + "Avatar_changed_successfully": "Profil fotoğrafı başarıyla değiştirildi!", + "Avatar_Url": "Profil fotoğrafı URL'si", + "Away": "Uzakta", + "Back": "Geri", + "Black": "Koyu", + "Block_user": "Kullanıcıyı engelle", + "Browser": "Tarayıcı", + "Broadcast_channel_Description": "Yalnızca yetkili kullanıcılar yeni ileti yazabilir, ancak diğer kullanıcılar yanıt verebilir", + "Broadcast_Channel": "Kanala Yayınla", + "Busy": "Meşgul", + "By_proceeding_you_are_agreeing": "Devam ederek kabul ediyorsunuz: ", + "Cancel_editing": "Düzenlemeyi iptal et", + "Cancel_recording": "Kaydı iptal et", + "Cancel": "İptal et", + "changing_avatar": "profil fotoğrafı değiştirme", + "creating_channel": "kanal açılıyor", + "creating_invite": "davet üretiliyor", + "Channel_Name": "Kanal Adı", + "Channels": "Kanallar", + "Chats": "Sohbetler", + "Call_already_ended": "Çağrı sona erdi!", + "Clear_cookies_alert": "Tüm çerezleri temizlemek istiyor musunuz?", + "Clear_cookies_desc": "Bu işlem, tüm oturum açma çerezlerini temizleyerek diğer hesaplara giriş yapmanıza olanak tanır.", + "Clear_cookies_yes": "Evet, çerezleri temizle", + "Clear_cookies_no": "Hayır, çerezleri koru", + "Click_to_join": "Katılmak için tıklayın!", + "Close": "Kapat", + "Close_emoji_selector": "Emoji seçiciyi kapat", + "Closing_chat": "Sohbet kapatılıyor", + "Change_language_loading": "Dil değiştiriliyor", + "Chat_closed_by_agent": "Sohbet temsilci tarafından kapatıldı", + "Choose": "Seç", + "Choose_from_library": "Kütüphaneden seç", + "Choose_file": "Dosya seç", + "Choose_where_you_want_links_be_opened": "Bağlantıların açılmasını istediğiniz yeri seçin", + "Code": "Kod", + "Code_or_password_invalid": "Kod veya şifre geçersiz", + "Collaborative": "İşbirlikçi", + "Confirm": "Onayla", + "Connect": "Bağlan", + "Connected": "Bağlandı", + "connecting_server": "sunucuya bağlanıyor", + "Connecting": "Bağlanıyor...", + "Contact_us": "Bize ulaşın", + "Contact_your_server_admin": "Sunucu yöneticisiyle iletişime geçin.", + "Continue_with": "Devam et:", + "Copied_to_clipboard": "Panoya kopyalandı!", + "Copy": "Kopyala", + "Conversation": "Sohbet", + "Permalink": "Kalıcı bağlantı", + "Certificate_password": "Sertifika Şifresi", + "Clear_cache": "Yerel sunucu önbelleğini temizleyin", + "Clear_cache_loading": "Önbellek temizleniyor.", + "Whats_the_password_for_your_certificate": "Sertifikanızın şifresi nedir?", + "Create_account": "Hesap oluştur", + "Create_Channel": "Kanal Oluştur", + "Create_Direct_Messages": "Özel İleti Oluştur", + "Create_Discussion": "Tartışma Oluştur", + "Created_snippet": "kalıp oluşturdu", + "Create_a_new_workspace": "Çalışma alanı oluştur", + "Create": "Oluştur", + "Custom_Status": "Özelleştirilmiş durum", + "Dark": "Karanlık", + "Dark_level": "Karanlık Seviyesi", + "Default": "Varsayılan", + "Default_browser": "Varsayılan tarayıcı", + "Delete_Room_Warning": "Bir odanın silinmesi, oda içinde yayınlanan tüm iletileri silecektir. Bu geri alınamaz.", + "Department": "Bölüm", + "delete": "sil", + "Delete": "Sil", + "DELETE": "SİL", + "deleting_room": "oda siliniyor", + "description": "açıklama", + "Description": "Açıklama", + "Desktop_Options": "Masaüstü Seçenekleri", + "Desktop_Notifications": "Masaüstü Bildirimleri", + "Desktop_Alert_info": "Bu bildirimler masaüstünde teslim edilir", + "Directory": "Dizin", + "Direct_Messages": "Özel İletiler", + "Disable_notifications": "Bildirimleri devre dışı bırak", + "Discussions": "Tartışmalar", + "Discussion_Desc": "Neler olup bittiğini gözden geçirmeye yardımcı olun! Bir tartışma oluşturarak, seçtiğinizin bir alt kanalı oluşturulur ve her ikisi de bağlanır.", + "Discussion_name": "Tartışma adı", + "Done": "Tamamlandı", + "Dont_Have_An_Account": "Hesabın yok mu?", + "Do_you_have_an_account": "Hesabın var mı?", + "Do_you_have_a_certificate": "Sertifikanız var mı?", + "Do_you_really_want_to_key_this_room_question_mark": "Bu odayı gerçekten {{key}} istiyor musun?", + "E2E_Encryption": "Uçtan Uca Şifreleme (E2E)", + "E2E_How_It_Works_info1": "Artık şifrelenmiş özel gruplar ve doğrudan iletiler oluşturabilirsiniz. Mevcut özel grupları veya özel iletileri şifreli olarak da değiştirebilirsiniz.", + "E2E_How_It_Works_info2": "Bu, *Uçtan Uca Şifreleme'dir (E2E)*, böylece iletilerinizi şifrelemek / çözmek için anahtar ve bunlar sunucuya kaydedilmez. Bu nedenle *bu şifreyi daha sonra ihtiyaç duyduğunuzda erişebileceğiniz güvenli bir yerde* saklamanız gerekir.", + "E2E_How_It_Works_info3": "Devam ederseniz, otomatik olarak bir Uçtan Uca Şifreleme (E2E) şifresi oluşturulacaktır.", + "E2E_How_It_Works_info4": "Mevcut Uçtan Uca Şifreleme (E2E) şifresini, herhangi bir tarayıcıdan istediğiniz zaman girdiğiniz şifreleme anahtarınız için yeni bir şifre de ayarlayabilirsiniz.", + "edit": "düzenle", + "edited": "düzenlendi", + "Edit": "Düzenle", + "Edit_Status": "Durumu Düzenle", + "Edit_Invite": "Daveti Düzenle", + "End_to_end_encrypted_room": "Uçtan uca şifreli oda", + "end_to_end_encryption": "uçtan uca şifreleme", + "Email_Notification_Mode_All": "Tüm Bahsetmeler/Özel İletiler", + "Email_Notification_Mode_Disabled": "Devre Dışı", + "Email_or_password_field_is_empty": "E-posta veya şifre alanı boş", + "Email": "E-posta", + "email": "e-posta", + "Empty_title": "Boş başlık", + "Enable_Auto_Translate": "Otomatik Çeviriyi Etkinleştir", + "Enable_notifications": "Bildirimleri etkinleştir", + "Encrypted": "Şifreli", + "Encrypted_message": "Şifreli ileti", + "Enter_Your_E2E_Password": "Uçtan Uca Şifreleme (E2E) Şifrenizi Girin", + "Enter_Your_Encryption_Password_desc1": "Bu, şifrelenmiş özel gruplarınıza ve doğrudan iletilerinize erişmenize izin verecektir.", + "Enter_Your_Encryption_Password_desc2": "Sohbeti kullandığınız her yerde iletileri şifrelemek / çözmek için şifre girmeniz gerekir.", + "Encryption_error_title": "Şifreleme şifreniz yanlış görünüyor", + "Encryption_error_desc": "İçe aktarılacak şifreleme anahtarınızın kodu çözülemedi.", + "Everyone_can_access_this_channel": "Bu kanala herkes erişebilir", + "Error_uploading": "Yükleme hatası", + "Expiration_Days": "Geçerlilik Süresi (Gün)", + "Favorite": "Favori", + "Favorites": "Favoriler", + "Files": "Dosyalar", + "File_description": "Dosya açıklaması", + "File_name": "Dosya adı", + "Finish_recording": "Kaydı bitir", + "Following_thread": "Konu takip ediliyor", + "For_your_security_you_must_enter_your_current_password_to_continue": "Güvenliğiniz için, devam etmek için mevcut şifrenizi girmelisiniz", + "Forgot_password_If_this_email_is_registered": "Bu e-posta kayıtlıysa, şifrenizi nasıl sıfırlayacağınıza dair talimatlar göndereceğiz. Kısa süre içinde bir e-posta almazsanız, lütfen geri gelin ve tekrar deneyin.", + "Forgot_password": "Parolanızı mı unuttunuz?", + "Forgot_Password": "Parolamı Unuttum", + "Forward": "İlet", + "Forward_Chat": "Sohbete İlet", + "Forward_to_department": "Bölüme İlet", + "Forward_to_user": "Kullanıcıya İlet", + "Full_table": "Tam tabloyu görmek için tıklayın", + "Generate_New_Link": "Yeni Bağlantı Oluştur", + "Group_by_favorites": "Favorilere göre grupla", + "Group_by_type": "Türe göre grupla", + "Hide": "Gizle", + "Has_joined_the_channel": "kanala katıldı", + "Has_joined_the_conversation": "sohbete katıldı", + "Has_left_the_channel": "kanaldan ayrıldı", + "Hide_System_Messages": "Sistem İletilerını Gizle", + "Hide_type_messages": "\"{{type}}\" iletilerini gizle", + "How_It_Works": "Nasıl Çalışır", + "Message_HideType_uj": "Kullanıcı Katıldı", + "Message_HideType_ul": "Kullanıcı Ayrıldı", + "Message_HideType_ru": "Kullanıcı Kaldırıldı", + "Message_HideType_au": "Kullanıcı Eklendi", + "Message_HideType_mute_unmute": "Kullanıcı Sesi Kapatıldı / Sesi Açıldı", + "Message_HideType_r": "Oda Adı Değiştirildi", + "Message_HideType_ut": "Kullanıcı Sohbete Katıldı", + "Message_HideType_wm": "Hoşgeldiniz", + "Message_HideType_rm": "İleti Kaldırıldı", + "Message_HideType_subscription_role_added": "Rol Belirlendi", + "Message_HideType_subscription_role_removed": "Artık Kullanılmayan Rol", + "Message_HideType_room_archived": "Oda Arşivlendi", + "Message_HideType_room_unarchived": "Oda Arşivden Çıkarıldı", + "I_Saved_My_E2E_Password": "Uçtan Uca Şifreleme (E2E) Şifremi Kaydettim", + "IP": "IP", + "In_app": "Uygulama İçi", + "In_App_And_Desktop": "Uygulama İçi ve Masaüstü", + "In_App_and_Desktop_Alert_info": "Uygulama açıkken ekranın üst kısmında bir başlık görüntüler ve masaüstünde bir bildirim görüntüler", + "Invisible": "Görünmez", + "Invite": "Davet Et", + "is_a_valid_RocketChat_instance": "geçerli bir Rocket.Chat örneği", + "is_not_a_valid_RocketChat_instance": "geçerli bir Rocket.Chat örneği değil", + "is_typing": "yazıyor", + "Invalid_or_expired_invite_token": "Geçersiz veya süresi dolmuş davet belirteci (token)", + "Invalid_server_version": "Bağlanmaya çalıştığınız sunucu artık uygulama tarafından desteklenmeyen bir sürüm kullanıyor: {{currentVersion}}.\n\n{{minVersion}} sürümüne ihtiyacımız var", + "Invite_Link": "Davet Bağlantısı", + "Invite_users": "Kullanıcıları davet et", + "Join": "Katıl", + "Join_Code": "Katılım Kodu", + "Insert_Join_Code": "Katılım Kodu Girin", + "Join_our_open_workspace": "Açık çalışma alanımıza katılın", + "Join_your_workspace": "Çalışma alanınıza katılın", + "Just_invited_people_can_access_this_channel": "Yalnızca davet edilen kişiler bu kanala erişebilir", + "Language": "Dil", + "last_message": "son ileti", + "Leave_channel": "Kanaldan ayrıl", + "leaving_room": "odadan ayrılıyor", + "leave": "ayrıl", + "Legal": "Yasal", + "Light": "Açık", + "License": "Lisans", + "Livechat": "Canlı Sohbet", + "Livechat_edit": "Canlı sohbeti düzenle", + "Login": "Oturum aç", + "Login_error": "Kimlik bilgileriniz reddedildi! Lütfen tekrar deneyin.", + "Login_with": "ile giriş", + "Logging_out": "Çıkış Yapılıyor", + "Logout": "Çıkış Yap", + "Max_number_of_uses": "Maksimum kullanım sayısı", + "Max_number_of_users_allowed_is_number": "İzin verilen maksimum kullanıcı sayısı {{maxUsers}}", + "members": "üyeler", + "Members": "Üyeler", + "Mentioned_Messages": "Bahsedilen İletiler", + "mentioned": "bahsedildi", + "Mentions": "Bahsetmeler", + "Message_accessibility": "{{user}} tarafından {{time}} itibarıyla ileti: {{message}}", + "Message_actions": "İleti işlemleri", + "Message_pinned": "İleti sabitlendi", + "Message_removed": "İleti kaldırıldı", + "Message_starred": "İletia yıldız eklendi", + "Message_unstarred": "İletiın yıldızı kaldırıldı", + "message": "ileti", + "messages": "iletiler", + "Message": "İleti", + "Messages": "İletiler", + "Message_Reported": "İleti bildirildi", + "Microphone_Permission_Message": "Rocket.Chat'in mikrofonunuza erişmesi gerekiyor, böylece sesli ileti gönderebilirsiniz.", + "Microphone_Permission": "Mikrofon İzni", + "Mute": "Sessize Al", + "muted": "sessize alındı", + "My_servers": "Sunucularım", + "N_people_reacted": "{{n}} kişi tepki verdi", + "N_users": "{{n}} kullanıcı", + "name": "isim", + "Name": "İsim", + "Navigation_history": "Gezinti geçmişi", + "Never": "Asla", + "New_Message": "Yeni İleti", + "New_Password": "Yeni Şifre", + "New_Server": "Yeni Sunucu", + "Next": "Sonraki", + "No_files": "Dosya yok", + "No_limit": "Limit yok", + "No_mentioned_messages": "Belirtilen ileti yok", + "No_pinned_messages": "Sabitlenmiş ileti yok", + "No_results_found": "Sonuç bulunamadı", + "No_starred_messages": "Yıldızlı ileti yok", + "No_thread_messages": "Konu iletisi yok", + "No_label_provided": "Hiç {{label}} sağlanmadı.", + "No_Message": "İleti Yok", + "No_messages_yet": "Şu ana kadar ileti yok", + "No_Reactions": "Tepki Yok", + "No_Read_Receipts": "Okundu Bilgisi Yok", + "Not_logged": "Kayıtlı değil", + "Not_RC_Server": "Bu bir Rocket.Chat sunucusu değil.\n{{contact}}", + "Nothing": "Hiçbir Şey", + "Nothing_to_save": "Kaydedilecek bir şey yok!", + "Notify_active_in_this_room": "Bu odadaki çevrimiçi kullanıcıları bilgilendir", + "Notify_all_in_this_room": "Bu odadaki herkesi bilgilendir", + "Notifications": "Bildirimler", + "Notification_Duration": "Bildirim Süresi", + "Notification_Preferences": "Bildirim Tercihleri", + "No_available_agents_to_transfer": "Aktarılacak yemsilci yok", + "Offline": "Çevrimdışı", + "Oops": "Ahh!", + "Omnichannel": "Çoklu Kanal", + "Open_Livechats": "Devam Eden Sohbetler", + "Omnichannel_enable_alert": "Çoklu Kanal'da mevcut değilsiniz. Erişilebilir olmak ister misiniz?", + "Onboarding_description": "Çalışma alanı, ekibinizin veya kuruluşunuzun işbirliği alanıdır. Çalışma alanı yöneticisinden bir ekibe katılmak veya bir ekip oluşturmak için yardım isteyin.", + "Onboarding_join_workspace": "Bir çalışma alanına katılın", + "Onboarding_subtitle": "Ekip İşbirliğinin Ötesinde", + "Onboarding_title": "Rocket.Chat'e hoş geldiniz", + "Onboarding_join_open_description": "Rocket.Chat ekibi ve topluluğu ile sohbet etmek için açık çalışma alanımıza katılın.", + "Onboarding_agree_terms": "Devam ederek Rocket.Chat'i kabul etmiş olursunuz", + "Onboarding_less_options": "Daha az seçenek", + "Onboarding_more_options": "Daha çok seçenek", + "Online": "Çevrimiçi", + "Only_authorized_users_can_write_new_messages": "Yalnızca yetkili kullanıcılar yeni ileti yazabilir", + "Open_emoji_selector": "Emoji seçiciyi aç", + "Open_Source_Communication": "Açık Kaynak İletişim", + "Open_your_authentication_app_and_enter_the_code": "Kimlik doğrulama uygulamanızı açın ve kodu girin.", + "OR": "OR", + "OS": "OS", + "Overwrites_the_server_configuration_and_use_room_config": "Sunucu yapılandırmasının üzerine yazar ve oda yapılandırmasını kullanır", + "Password": "Şifre", + "Parent_channel_or_group": "Üst kanal veya grup", + "Permalink_copied_to_clipboard": "Kalıcı bağlantı panoya kopyalandı!", + "Phone": "Telefon", + "Pin": "Sabitle", + "Pinned_Messages": "Sabitlenen İletiler", + "pinned": "sabitlendi", + "Pinned": "Sabitlendi", + "Please_add_a_comment": "Lütfen bir yorum ekleyin", + "Please_enter_your_password": "Lütfen şifrenizi giriniz", + "Please_wait": "Lütfen bekle.", + "Preferences": "Tercihler", + "Preferences_saved": "Tercihler kaydedildi!", + "Privacy_Policy": " Privacy Policy", + "Private_Channel": "Özel Kanal", + "Private_Groups": "Özel Gruplar", + "Private": "Özel", + "Processing": "İşleniyor...", + "Profile_saved_successfully": "Profil başarıyla kaydedildi!", + "Profile": "Profil", + "Public_Channel": "Herkese Açık Kanal", + "Public": "Herkese Açık", + "Push_Notifications": "Anlık Bildirimler", + "Push_Notifications_Alert_Info": "Bu bildirimler, uygulama açık olmadığında size teslim edilir", + "Quote": "Alıntı", + "Reactions_are_disabled": "Tepkiler devre dışı bırakıldı", + "Reactions_are_enabled": "Tepkiler etkinleştirildi", + "Reactions": "Tepkiler", + "Read": "Oku", + "Read_External_Permission_Message": "Rocket.Chat'in cihazınızdaki fotoğraflara, medyaya ve dosyalara erişmesi gerekiyor", + "Read_External_Permission": "Medya Okuma İzni ", + "Read_Only_Channel": "Yazma Kısıtlı Kanal", + "Read_Only": "Yazma Kısıtlı", + "Read_Receipt": "Okundu Bilgisi", + "Receive_Group_Mentions": "Grup Bahsetmelerini Al", + "Receive_Group_Mentions_Info": "Grup bahsetmelerini al", + "Register": "Kayıt Ol", + "Repeat_Password": "Şifre Tekrarı", + "Replied_on": "Yanıtlandı:", + "replies": "yanıtlar", + "reply": "yanıtla", + "Reply": "Yanıtla", + "Report": "Bildir", + "Receive_Notification": "Bildirim Al", + "Receive_notifications_from": "{{name}} bildirimlerini alın", + "Resend": "Yeniden yolla", + "Reset_password": "Şifre sıfırla", + "resetting_password": "şifre sıfırlanıyor", + "RESET": "SIFIRLA", + "Return": "Geri dön", + "Review_app_title": "Uygulama hoşunuza gitti mi?", + "Review_app_desc": "{{store}} üzerinde bize 5 yıldız verin", + "Review_app_yes": "Elbette!", + "Review_app_no": "Hayır", + "Review_app_later": "Belki daha sonra", + "Review_app_unable_store": "{{store}} açılamıyor!", + "Review_this_app": "Bu uygulamayı değerlendirin", + "Remove": "Kaldır", + "Roles": "Roller", + "Room_actions": "Oda işlemleri", + "Room_changed_announcement": "Oda duyurusu, {{userBy}} tarafından {{announcement}} olarak değiştirildi", + "Room_changed_avatar": "Oda profil fotoğrafı {{userBy}} tarafından değiştirildi", + "Room_changed_description": "Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi", + "Room_changed_privacy": "Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi", + "Room_changed_topic": "Oda konusu, {{userBy}} tarafından {{topic}} olarak değiştirildi", + "Room_Files": "Oda Dosyaları", + "Room_Info_Edit": "Oda Bilgilerini Düzenle", + "Room_Info": "Oda Bilgisi", + "Room_Members": "Oda Üyeleri", + "Room_name_changed": "Oda adı, {{userBy}} tarafından {{name}} olarak değiştirildi", + "SAVE": "KAYDET", + "Save_Changes": "Değişiklikleri Kaydet", + "Save": "Kaydet", + "Saved": "Kaydedildi", + "saving_preferences": "tercihler kaydediliyor", + "saving_profile": "profil kaydediliyor", + "saving_settings": "ayarlar kaydediliyor", + "saved_to_gallery": "Galeriye kaydedildi", + "Save_Your_E2E_Password": "(E2E) Şifrenizi Kaydedin", + "Save_Your_Encryption_Password": "Şifreleme Parolanızı Kaydedin", + "Save_Your_Encryption_Password_warning": "Bu parola hiçbir yerde saklanmadığından başka bir yere dikkatlice kaydedin.", + "Save_Your_Encryption_Password_info": "Parolanızı kaybettiğinizde, kurtarmanın bir yolu olmadığını ve iletilerinize erişiminizi kaybedeceğinizi unutmayın.", + "Search_Messages": "İleti ara", + "Search": "Ara", + "Search_by": "Ara", + "Search_global_users": "Global kullanıcıları ara", + "Search_global_users_description": "Açarsanız, diğer şirketlerden veya sunuculardan herhangi bir kullanıcıyı arayabilirsiniz.", + "Seconds": "{{second}} saniye", + "Security_and_privacy": "Güvenlik ve gizlilik", + "Select_Avatar": "Profil resmi seç", + "Select_Server": "Sunucu seç", + "Select_Users": "Kullanıcıları seç", + "Select_a_Channel": "Kanal Seç", + "Select_a_Department": "Bölüm Seç", + "Select_an_option": "Bir seçenek seçin", + "Select_a_User": "Kullanıcı Seç", + "Send": "Yolla", + "Send_audio_message": "Sesli ileti gönder", + "Send_crash_report": "Çökme raporu gönder", + "Send_message": "İleti gönder", + "Send_me_the_code_again": "Kodu tekrar gönder", + "Send_to": "Gönderiliyor...", + "Sending_to": "Gönderiliyor:", + "Sent_an_attachment": "Bir ek gönderildi", + "Server": "Sunucu", + "Servers": "Sunucular", + "Server_version": "Sunucu versiyonu: {{version}}", + "Set_username_subtitle": "Kullanıcı adı başkalarının iletilerde sizden bahsetmesine izin vermek için kullanılır", + "Set_custom_status": "Özelleştirilmiş durumu ayarlayın", + "Set_status": "Durumu ayarla", + "Status_saved_successfully": "Durum başarıyla kaydedildi!", + "Settings": "Ayarlar", + "Settings_succesfully_changed": "Ayarlar başarıyla değiştirildi!", + "Share": "Paylaş", + "Share_Link": "Bağlantı paylaş", + "Share_this_app": "Bu uygulamayı paylaş", + "Show_more": "Daha fazla göster..", + "Show_Unread_Counter": "Okunmamış Sayacını Göster", + "Show_Unread_Counter_Info": "Okunmamış sayacı, listede kanalın sağ tarafında bir rozet olarak görüntülenir", + "Sign_in_your_server": "Sunucunuzda oturum açın", + "Sign_Up": "Kaydol", + "Some_field_is_invalid_or_empty": "Bazı alanlar geçersiz veya boş", + "Sorting_by": "{{key}} göre sıralanıyor", + "Sound": "Ses", + "Star_room": "Odayı Yıldızla", + "Star": "Yıldızla", + "Starred_Messages": "Yıldızlı İletiler", + "starred": "yıldızlandı", + "Starred": "Yıldızlandı", + "Start_of_conversation": "Konuşma başlangıcı", + "Start_a_Discussion": "Tartışma Başlat", + "Started_discussion": "Bir tartışma başlattı:", + "Started_call": "Arama {{userBy}} tarafından başlatıldı", + "Submit": "Kaydet", + "Table": "Tablo", + "Tags": "Etiketler", + "Take_a_photo": "Fotoğraf çek", + "Take_a_video": "Video çek", + "Take_it": "Al!", + "tap_to_change_status": "durumu değiştirmek için dokunun", + "Tap_to_view_servers_list": "Sunucu listesini görüntülemek için dokunun", + "Terms_of_Service": " Kullanım Şartları ", + "Theme": "Tema", + "The_user_wont_be_able_to_type_in_roomName": "Kullanıcı {{roomName}} içinde yazamayacak", + "The_user_will_be_able_to_type_in_roomName": "Kullanıcı {{roomName}} içinde yazabilecek", + "There_was_an_error_while_action": "{{action}} sırasında bir hata oluştu!", + "This_room_is_blocked": "Bu oda engellendi", + "This_room_is_read_only": "Bu oda yazma kısıtlı", + "Thread": "Başlık", + "Threads": "Başlıklar", + "Timezone": "Saat dilimi", + "To": "Kime", + "topic": "konu", + "Topic": "Konu", + "Translate": "Çevir", + "Try_again": "Tekrar deneyin", + "Two_Factor_Authentication": "İki faktörlü Kimlik Doğrulama", + "Type_the_channel_name_here": "Kanal adını buraya yazın", + "unarchive": "arşivden çıkar", + "UNARCHIVE": "ARŞİVDEN ÇIKAR", + "Unblock_user": "Kullanıcının engelini kaldır", + "Unfavorite": "Favorilerden Çıkar", + "Unfollowed_thread": "Takip edilmeyen başlık", + "Unmute": "Sesi Aç", + "unmuted": "Sesi Açıldı", + "Unpin": "Sabitlemeyi kaldır", + "unread_messages": "okunmamış", + "Unread": "Okunmamış", + "Unread_on_top": "Okunmamışlar üstte", + "Unstar": "Yıldızı kaldır", + "Updating": "Güncelleniyor...", + "Uploading": "Gönderiliyor", + "Upload_file_question_mark": "Dosya gönderilsin mi?", + "User": "Kullanıcı", + "Users": "Kullanıcılar", + "User_added_by": "{{userAdded}} adlı kullanıcı {{userBy}} tarafından eklendi", + "User_Info": "Kullanıcı bilgisi", + "User_has_been_key": "Kullanıcı {{key}} olmuştur", + "User_is_no_longer_role_by_": "{{user}} artık {{role}} değil ({{userBy}} tarafından)", + "User_muted_by": "{{userMuted}} adlı kullanıcının sesini {{userBy}} kapattı", + "User_removed_by": "{{userRemoved}} kullanıcısı {{userBy}} tarafından kaldırıldı", + "User_sent_an_attachment": "{{user}} bir ek gönderdi", + "User_unmuted_by": "{{userUnmuted}} kullanıcısının sesi {{userBy}} tarafından açıldı", + "User_was_set_role_by_": "{{user}}, {{userBy}} tarafından {{role}} ayarlandı", + "Username_is_empty": "Kullanıcı adı boş!", + "Username": "Kullanıcı adı", + "Username_or_email": "Kullanıcı adı ya da e-posta", + "Uses_server_configuration": "Sunucu yapılandırmasını kullanır", + "Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture": "Genellikle tartışma, \"Nasıl resim yüklerim?\" gibi bir soruyla başlar.", + "Validating": "Doğrulanıyor", + "Registration_Succeeded": "Kayıt Başarılı!", + "Verify": "Onayla", + "Verify_email_title": "Kaydınızı onaylayın!", + "Verify_email_desc": "Kaydınızı onaylamak için size bir e-posta gönderdik. Kısa süre içinde bir e-posta almazsanız, lütfen geri gelin ve tekrar deneyin.", + "Verify_your_email_for_the_code_we_sent": "Gönderdiğimiz kod için e-postanızı doğrulayın", + "Video_call": "Görüntülü arama", + "View_Original": "Orijinali Görüntüle", + "Voice_call": "Sesli arama", + "Waiting_for_network": "Ağ bağlantısı bekleniyor ...", + "Websocket_disabled": "Bu sunucu için Websocket devre dışı bırakıldı.\n{{contact}}", + "Welcome": "Hoşgeldiniz", + "What_are_you_doing_right_now": "Şu an ne yapıyorsun?", + "Whats_your_2fa": "2 faktör doğrulama (2FA) kodunuz nedir?", + "Without_Servers": "Sunucusuz", + "Workspaces": "Çalışma alanları", + "Would_you_like_to_return_the_inquiry": "Başvuruyu geri çevirmek ister misiniz?", + "Write_External_Permission_Message": "Rocket.Chat'in galerinize erişmesi gerekiyor, böylece resimleri kaydedebilirsiniz.", + "Write_External_Permission": "Galeri İzni", + "Yes": "Evet", + "Yes_action_it": "Evet, {{action}}!", + "Yesterday": "Dün", + "You_are_in_preview_mode": "İzleme modundasınız", + "You_are_offline": "Çevrimdışısınız", + "You_can_search_using_RegExp_eg": "Düzenli ifadeleri (Regular Expressions) kullanabilirsiniz. Örneğin: `/^text$/i`", + "You_colon": "Siz: ", + "you_were_mentioned": "senden bahsedildi", + "You_were_removed_from_channel": "{{channel}} kanalından çıkarıldınız", + "you": "siz", + "You": "Siz", + "Logged_out_by_server": "Sunucu tarafından çıkış yaptınız. Lütfen tekrar giriş yapın.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Bir şeyler paylaşmak için Rocket.Chat sunucusuna erişmeniz gerekir.", + "You_need_to_verifiy_your_email_address_to_get_notications": "Bildirim almak için e-posta adresinizi doğrulamanız gerekiyor", + "Your_certificate": "Sertifikanız", + "Your_message": "İletiınız", + "Your_invite_link_will_expire_after__usesLeft__uses": "Davet bağlantınızın geçerliliği {{usesLeft}} kullanımdan sonra sona erecek.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Davet bağlantınızın geçerliliği {{date}} tarihinde veya {{usesLeft}} kullanımdan sonra sona erecek.", + "Your_invite_link_will_expire_on__date__": "Davet bağlantınızın geçerlilik süresi {{date}} tarihinde sona erecek.", + "Your_invite_link_will_never_expire": "Davet bağlantınızın geçerlilik süresi asla dolmayacak.", + "Your_workspace": "Çalışma alanınız", + "Your_password_is": "Şifreniz", + "Version_no": "Versiyon: {{version}}", + "You_will_not_be_able_to_recover_this_message": "Bu iletiyi kurtaramayacaksınız!", + "You_will_unset_a_certificate_for_this_server": "Bu sunucu için bir sertifika ayarını kaldıracaksınız", + "Change_Language": "Dili değiştir", + "Crash_report_disclaimer": "Sohbetlerinizin içeriğini asla takip etmiyoruz. Çökme raporu ve analiz olayları, sorunları tanımlamak ve düzeltmek için yalnızca bizim için ilgili bilgileri içerir.", + "Type_message": "İleti yaz", + "Room_search": "Oda arama", + "Room_selection": "Oda seçimi 1...9", + "Next_room": "Sonraki oda", + "Previous_room": "Önceki oda", + "New_room": "Yeni oda", + "Upload_room": "Odaya yükle", + "Search_messages": "İletilerda ara", + "Scroll_messages": "İletilerı kaydır", + "Reply_latest": "Sonuncuyu yanıtla", + "Reply_in_Thread": "Konu içinde cevapla", + "Server_selection": "Sunucu seçimi", + "Server_selection_numbers": "Sunucu seçimi 1...9", + "Add_server": "Sunucu ekle", + "New_line": "Yeni satır", + "You_will_be_logged_out_of_this_application": "Bu uygulamadan çıkış yapacaksınız.", + "Clear": "Temizle", + "This_will_clear_all_your_offline_data": "Bu, tüm çevrimdışı verilerinizi temizleyecektir.", + "This_will_remove_all_data_from_this_server": "Bu, bu sunucudaki tüm verileri kaldıracaktır.", + "Mark_unread": "Okunmadı olarak işaretle", + "Wait_activation_warning": "Giriş yapmadan önce, hesabınız bir yönetici tarafından manuel olarak etkinleştirilmelidir.", + "Screen_lock": "Ekran kilidi", + "Local_authentication_biometry_title": "Doğrula", + "Local_authentication_biometry_fallback": "Parola kullan", + "Local_authentication_unlock_option": "Şifre ile Kilidi Açın", + "Local_authentication_change_passcode": "Parolayı Değiştir", + "Local_authentication_info": "Not: Parolayı unutursanız, uygulamayı silmeniz ve yeniden yüklemeniz gerekir.", + "Local_authentication_facial_recognition": "yüz tanıma", + "Local_authentication_fingerprint": "parmak izi", + "Local_authentication_unlock_with_label": "{{label}} ile kilidi açın", + "Local_authentication_auto_lock_60": "1 dakika sonra", + "Local_authentication_auto_lock_300": "5 dakika sonra", + "Local_authentication_auto_lock_900": "15 dakika sonra", + "Local_authentication_auto_lock_1800": "30 dakika sonra", + "Local_authentication_auto_lock_3600": "1 saat sonra", + "Passcode_enter_title": "Şifrenizi giriniz", + "Passcode_choose_title": "Yeni şifrenizi yazın", + "Passcode_choose_confirm_title": "Yeni şifrenizi onaylayın", + "Passcode_choose_error": "Parolalar eşleşmiyor. Tekrar deneyin.", + "Passcode_choose_force_set": "Yönetici tarafından istenen şifre", + "Passcode_app_locked_title": "Uygulama kilitlendi", + "Passcode_app_locked_subtitle": "{{timeLeft}} saniye içinde tekrar deneyin", + "After_seconds_set_by_admin": "{{seconds}} saniye sonra (yönetici tarafından belirlenir)", + "Dont_activate": "Şimdi etkinleştirme", + "Queued_chats": "Sıralı sohbetler", + "Queue_is_empty": "Sıra boş", + "Logout_from_other_logged_in_locations": "Giriş yapılan diğer konumlardan çıkış yap", + "You_will_be_logged_out_from_other_locations": "Diğer konumlardan çıkış yapacaksınız.", + "Logged_out_of_other_clients_successfully": "Diğer istemcilerden başarıyla çıkış yapıldı", + "Logout_failed": "Oturum kapatma başarısız oldu!", + "Log_analytics_events": "Olayları günlüğe kaydet", + "E2E_encryption_change_password_title": "Şifreleme Parolasını Değiştir", + "E2E_encryption_change_password_description": "Artık şifrelenmiş özel gruplar ve doğrudan iletiler oluşturabilirsiniz. Mevcut özel grupları veya özel iletileri şifreli olarak da değiştirebilirsiniz. \nBu uçtan uca şifrelemedir, bu nedenle iletilerinizi şifrelemek / çözmek için kullanılan anahtar sunucuya kaydedilmez. Bu nedenle şifrenizi güvenli bir yerde saklamanız gerekir. Uçtan uca şifrelemeyi (E2E) kullanmak istediğiniz diğer cihazlara girmeniz istenecektir.", + "E2E_encryption_change_password_error": "Uçtan uca şifreleme (E2E) anahtar şifresi değiştirilirken hata!", + "E2E_encryption_change_password_success": "Uçtan uca şifreleme (E2E) anahtar şifresi başarıyla değiştirildi!", + "E2E_encryption_change_password_message": "Dikkatlice kaydettiğinizden emin olun.", + "E2E_encryption_change_password_confirmation": "Evet, değiştir!", + "E2E_encryption_reset_title": "Uçtan uca şifreleme (E2E) Anahtarını Sıfırla", + "E2E_encryption_reset_description": "Bu seçenek mevcut uçtan uca şifreleme (E2E) anahtarınızı kaldıracak ve oturumu kapatacaktır. \nTekrar oturum açtığınızda, Rocket.Chat size yeni bir anahtar oluşturacak ve çevrimiçi olarak bir veya daha fazla üyesi olan şifreli herhangi bir odaya erişiminizi geri yükleyecektir. \nUçtan uca şifrelemenin (E2E) doğası gereği Rocket.Chat, çevrimiçi üyesi olmayan hiçbir şifreli odaya erişimi geri yükleyemez.", + "E2E_encryption_reset_button": "Uçtan uca şifreleme (E2E) anahtarını sıfırla", + "E2E_encryption_reset_error": "Uçtan uca şifreleme (E2E) anahtarı sıfırlanırken hata!", + "E2E_encryption_reset_message": "Oturumunuz kapatılacak!", + "E2E_encryption_reset_confirmation": "Evet, sıfırla", + "Following": "Takip ediliyor", + "Threads_displaying_all": "Tüm konular görüntüleniyor", + "Threads_displaying_following": "Takip edilen konular görüntüleniyor", + "Threads_displaying_unread": "Okunmamış konular görüntüleniyor", + "No_threads": "Konu yok", + "No_threads_following": "Herhangi bir konuyu takip etmiyorsunuz", + "No_threads_unread": "Okunmamış konu yok", + "Messagebox_Send_to_channel": "Kanala gönder", + "Set_as_leader": "Lider olarak ayarla", + "Set_as_moderator": "Moderatör olarak ayarla", + "Set_as_owner": "Sahip olarak ayarla", + "Remove_as_leader": "Lider olarak kaldır", + "Remove_as_moderator": "Moderatör olarak kaldır", + "Remove_as_owner": "Sahip olarak kaldır", + "Remove_from_room": "Odadan çıkar", + "Ignore": "Yok say", + "Unignore": "Yok sayma", + "User_has_been_ignored": "Kullanıcı yok sayıldı.", + "User_has_been_unignored": "Kullanıcı artık yok sayılmıyor.", + "User_has_been_removed_from_s": "Kullanıcı {{s}} alanından kaldırıldı.", + "User__username__is_now_a_leader_of__room_name_": "{{Username}} kullanıcısı artık {{room_name}} lideridir.", + "User__username__is_now_a_moderator_of__room_name_": "{{Username}} kullanıcısı artık bir {{room_name}} moderatörüdür.", + "User__username__is_now_a_owner_of__room_name_": "{{Username}} kullanıcısı artık {{room_name}} adlı odanın sahibidir.", + "User__username__removed_from__room_name__leaders": "{{Username}} adlı kullanıcı, {{room_name}} liderlerinden kaldırıldı.", + "User__username__removed_from__room_name__moderators": "{{Username}} adlı kullanıcı, {{room_name}} moderatörlerinden kaldırıldı.", + "User__username__removed_from__room_name__owners": "{{Username}} adlı kullanıcı, {{room_name}} sahiplerinden kaldırıldı.", + "The_user_will_be_removed_from_s": "Kullanıcı, {{s}} alanından kaldırılacak!", + "Yes_remove_user": "Evet, kullanıcıyı kaldır!", + "Direct_message": "Özel ileti", + "Message_Ignored": "İleti yok sayıldı. Görüntülemek için dokunun.", + "Enter_workspace_URL": "Çalışma alanı URL'nizi girin", + "Workspace_URL_Example": "Örn. sirketiniz.rocket.chat" +} \ No newline at end of file diff --git a/app/i18n/locales/zh-CN.js b/app/i18n/locales/zh-CN.js deleted file mode 100644 index 62ee3da5359..00000000000 --- a/app/i18n/locales/zh-CN.js +++ /dev/null @@ -1,682 +0,0 @@ -export default { - '1_person_reacted': '1 人回复了', - '1_user': '1 位用户', - 'error-action-not-allowed': '{{action}} 不允許', - 'error-application-not-found': '找不到应用程式', - 'error-archived-duplicate-name': '已有一个名为「{{room_name}}」的封存频道', - 'error-avatar-invalid-url': '无效的头像网址:{{url}}', - 'error-avatar-url-handling': '错误,无法将 {{username}} 的头像设置为URL({{url}})', - 'error-cant-invite-for-direct-room': '无法邀请使用者进入私讯', - 'error-could-not-change-email': '无法更改电子邮件', - 'error-could-not-change-name': '无法更改名称', - 'error-could-not-change-username': '无法更改使用者名称', - 'error-could-not-change-status': '无法更改状态', - 'error-delete-protected-role': '无法删除受保护的角色', - 'error-department-not-found': '找不到部门', - 'error-direct-message-file-upload-not-allowed': '私人对话中不允许档案分享', - 'error-duplicate-channel-name': '名为「{{channel_name}}」的频道已存在', - 'error-email-domain-blacklisted': '电子邮件网域被禁用', - 'error-email-send-failed': '尝试发送电子邮件时出错:{{message}}', - 'error-save-image': '错误,无法保存图片', - 'error-save-video': '错误,无法保存視頻', - 'error-field-unavailable': '{{field}} 已被使用 :(', - 'error-file-too-large': '文件太大', - 'error-importer-not-defined': '没有正确定义,它缺少汇入类型', - 'error-input-is-not-a-valid-field': '{{input}} 不是合法的 {{field}}', - 'error-invalid-actionlink': '无效的操作链接', - 'error-invalid-arguments': '无效的参数', - 'error-invalid-asset': '无效的资源', - 'error-invalid-channel': '无效的频道', - 'error-invalid-channel-start-with-chars': '无效的频道,请以 @ 或 # 开头', - 'error-invalid-custom-field': '无效的自订字段', - 'error-invalid-custom-field-name': '无效的自订字段名. 只能包含字母、数字、中线(-)及底线(_).', - 'error-invalid-date': '无效的日期', - 'error-invalid-description': '无效的描述', - 'error-invalid-domain': '无效的域名', - 'error-invalid-email': '无效的电子邮件{{emai}}', - 'error-invalid-email-address': '无效的邮件地址', - 'error-invalid-file-height': '无效的文件长度', - 'error-invalid-file-type': '无效的文件类型', - 'error-invalid-file-width': '无效的文件宽度', - 'error-invalid-from-address': '无效的地址', - 'error-invalid-integration': '无效的整合', - 'error-invalid-message': '无效的信息', - 'error-invalid-method': '无效的方法', - 'error-invalid-name': '无效的名称', - 'error-invalid-password': '无效的密码', - 'error-invalid-redirectUri': '无效的转址', - 'error-invalid-role': '无效的角色', - 'error-invalid-room': '无效的聊天室', - 'error-invalid-room-name': '{{room_name}} 不是合法的聊天室名称', - 'error-invalid-room-type': '{{type}} 不是合法的聊天室类型.', - 'error-invalid-settings': '无效的设置', - 'error-invalid-subscription': '无效的订阅', - 'error-invalid-token': '无效的 token', - 'error-invalid-triggerWords': '无效的关键字', - 'error-invalid-urls': '无效的网址', - 'error-invalid-user': '无效的使用者', - 'error-invalid-username': '无效的使用者名称', - 'error-invalid-webhook-response': 'webhook 网址以200以外的状态响应', - 'error-message-deleting-blocked': '信息删除已停用', - 'error-message-editing-blocked': '信息编辑已停用', - 'error-message-size-exceeded': '信息大小超出上限', - 'error-missing-unsubscribe-link': '您必须提供[取消订阅]链接。', - 'error-no-tokens-for-this-user': '这个用户没有Token', - 'error-not-allowed': '不允许', - 'error-not-authorized': '未授权', - 'error-push-disabled': '推播已停用', - 'error-remove-last-owner': '这是最后一个所有者。请在删除这个之前设置一个新所有者。', - 'error-role-in-use': '无法删除正在使用中的角色', - 'error-role-name-required': '角色名称是必須的', - 'error-the-field-is-required': '字段 {{field}} 是必須的。', - 'error-too-many-requests': '错误,请求太多。请慢一点。在再次尝试之前,必须等待{{seconds}}秒。', - 'error-user-is-not-activated': '用户未被激活', - 'error-user-has-no-roles': '用户未设定角色', - 'error-user-limit-exceeded': '尝试邀请到 #channel_name 的用户数量超过了管理员设置的限制', - 'error-user-not-in-room': '用户不在这个聊天室', - 'error-user-registration-custom-field': '无效的自订注册栏位', - 'error-user-registration-disabled': '已停用用户注册', - 'error-user-registration-secret': '只能透过加密网址进行用戶注册', - 'error-you-are-last-owner': '您是最后的拥有者。请删除此人之前设置一个新的拥有者。', - Actions: '操作', - activity: '活动时间', - Activity: '按活动时间排列', - Add_Reaction: '增加表情貼', - Add_Server: '創建服务器', - Add_users: '創建用户', - Admin_Panel: '仪表板', - Agent: '代理', - Alert: '警报', - alert: '警报', - alerts: '警报', - All_users_in_the_channel_can_write_new_messages: '频道中的所有用户都可以发送新信息', - A_meaningful_name_for_the_discussion_room: '取一个有意义的讨论区的名称', - All: '所有', - All_Messages: '全部信息', - Allow_Reactions: '允许表情贴', - Alphabetical: '以名称排序', - and_more: '和更多的', - and: '和', - announcement: '公告', - Announcement: '公告', - Apply_Your_Certificate: '使用自己的凭证', - ARCHIVE: '封存', - archive: '封存', - are_typing: '正在输入', - Are_you_sure_question_mark: '你确定吗?', - Are_you_sure_you_want_to_leave_the_room: '你确定要离开聊天室 {{room}} 吗?', - Audio: '音讯', - Authenticating: '正在验证身份', - Automatic: '自动', - Auto_Translate: '自动翻译', - Avatar_changed_successfully: '头像更新成功!', - Avatar_Url: '头像地址', - Away: '离开', - Back: '返回', - Black: '黑色', - Block_user: '屏蔽此用户', - Browser: '浏览器', - Broadcast_channel_Description: '只有经过授权的用户才能写新信息,但其他用户可以回复', - Broadcast_Channel: '广播频道', - Busy: '忙碌', - By_proceeding_you_are_agreeing: '继续操作,请同意我们的', - Cancel_editing: '取消编辑', - Cancel_recording: '取消录制', - Cancel: '取消', - changing_avatar: '更改头像', - creating_channel: '创建频道', - creating_invite: '创建邀请', - Channel_Name: '频道名', - Channels: '频道', - Chats: '聊天', - Call_already_ended: '通话已经结束!', - Clear_cookies_alert: '是否清除所有 cookies?', - Clear_cookies_desc: '本操作将清除所有登入 cookies,以登入其他帐号', - Clear_cookies_yes: '是,清除 cookies', - Clear_cookies_no: '否,保留 cookies', - Click_to_join: '点击以参与', - Close: '关闭', - Close_emoji_selector: '关闭 emoji 选择器', - Closing_chat: '结束聊天', - Change_language_loading: '切换语言', - Chat_closed_by_agent: '聊天已被客服关闭', - Choose: '选择', - Choose_from_library: '从媒体库选择', - Choose_file: '选择文件', - Choose_where_you_want_links_be_opened: '请选择您要将链接开启在', - Code: '代码', - Code_or_password_invalid: '验证码或密码不正确', - Collaborative: '协作', - Confirm: '确认', - Connect: '连接', - Connected: '已连接', - connecting_server: '连接至服务器', - Connecting: '连接中', - Contact_us: '联系我们', - Contact_your_server_admin: '请联络系统管理员', - Continue_with: '继续采用', - Copied_to_clipboard: '复制到剪贴板', - Copy: '复制', - Conversation: '对话', - Permalink: '永久链接', - Certificate_password: '凭证密码', - Clear_cache: '清除本机资料', - Clear_cache_loading: '清除快取', - Whats_the_password_for_your_certificate: '您的凭证密码是?', - Create_account: '创建账户', - Create_Channel: '创建频道', - Create_Direct_Messages: '新增私人讯息', - Create_Discussion: '新增讨论区', - Created_snippet: '新增程式码片段', - Create_a_new_workspace: '创建一个新的工作区', - Create: '创建', - Custom_Status: '自订状态', - Dark: '深色', - Dark_level: '深色程度', - Default: '默認', - Default_browser: '预设浏览器', - Delete_Room_Warning: '删除聊天室将连带删除其中所有信息。此操作将无法还原。', - Department: '部门', - delete: '删除', - Delete: '删除', - DELETE: '删除', - deleting_room: '正在删除聊天室', - description: '描述', - Description: '描述', - Desktop_Options: '桌面选项', - Desktop_Notifications: '桌面通知', - Desktop_Alert_info: '这些通知将发送至桌面', - Directory: '目录', - Direct_Messages: '私訊', - Disable_notifications: '禁用信息通知', - Discussions: '讨论区', - Discussion_Desc: '帮助保持事态更新! 通过创建讨论,一个和所选频道双向关联的子频道将会被创建。', - Discussion_name: '讨论区名称', - Done: '完成', - Dont_Have_An_Account: '还没有账号?', - Do_you_have_an_account: '是否拥有帐号?', - Do_you_have_a_certificate: '是否拥有凭证?', - Do_you_really_want_to_key_this_room_question_mark: '您真的想要{{key}}这个聊天室吗?', - E2E_Encryption: 'E2E 加密', - E2E_How_It_Works_info1: '您现在可以创建加密的专用组和直接消息。您也可以将现有的私人组或直接信息加密。', - E2E_How_It_Works_info2: '这是點對點加密,因此编码/解码邮件的密钥不会保存在服务器上。因此,您需要将密码存储在安全的地方。您需要在希望使用點對點加密的其他设备上输入。', - E2E_How_It_Works_info3: '如果继续,将自动生成一组 E2E 密码', - E2E_How_It_Works_info4: '您也可以随时从已输入既有密码的任何浏览器设定新密码给您的加密金钥。', - edit: '编辑', - edited: '已编辑', - Edit: '编辑', - Edit_Status: '编辑状态', - Edit_Invite: '编辑邀请', - End_to_end_encrypted_room: 'E2E 加密聊天室', - end_to_end_encryption: 'E2E 加密', - Email_Notification_Mode_All: '每次被标记或私讯', - Email_Notification_Mode_Disabled: '禁用', - Email_or_password_field_is_empty: '邮件或密码字段为空', - Email: '邮箱', - email: '邮箱', - Empty_title: '空白标题', - Enable_Auto_Translate: '开启自动翻译', - Enable_notifications: '开启信息通知', - Encrypted: '已加密', - Encrypted_message: '加密信息', - Enter_Your_E2E_Password: '输入您的 E2E 密码', - Enter_Your_Encryption_Password_desc1: '这将会允许您存取您的加密私人群组和私訊', - Enter_Your_Encryption_Password_desc2: '您需要在任何使用此聊天的平台输入密码,以编码/解码您的信息', - Encryption_error_title: '您的加密密码似乎有误', - Encryption_error_desc: '无法使用汇入的加密密钥来解密', - Everyone_can_access_this_channel: '每个人都可以访问此频道', - Error_uploading: '错误上传', - Expiration_Days: '到期 (日)', - Favorite: '收藏', - Favorites: '收藏', - Files: '文件', - File_description: '文件描述', - File_name: '文件名称', - Finish_recording: '完成录制', - Following_thread: '追踪的讨论串', - For_your_security_you_must_enter_your_current_password_to_continue: '出于安全考虑,您必须输入您的密码以便继续操作', - Forgot_password_If_this_email_is_registered: '如果这邮箱已注册,我们将发送如何重置密码的说明。如果您没有在短时间内收到电子邮件,请再试一次。', - Forgot_password: '忘记密码', - Forgot_Password: '忘记密码', - Forward: '转发', - Forward_Chat: '转发聊天', - Forward_to_department: '转发到部门', - Forward_to_user: '转发给用戶', - Full_table: '点击以查看完整表格', - Generate_New_Link: '产生新的链接', - Group_by_favorites: '收藏优先', - Group_by_type: '以类型分组', - Hide: '隐藏', - Has_joined_the_channel: '已加入频道', - Has_joined_the_conversation: '已经加入此对话', - Has_left_the_channel: '已离开频道', - Hide_System_Messages: '隐藏系统信息', - Hide_type_messages: '隐藏 "{{type}}" 信息', - How_It_Works: '运作方式', - Message_HideType_uj: '隐藏“用戶加入”信息', - Message_HideType_ul: '隐藏“用戶离开”信息', - Message_HideType_ru: '隐藏“用戶已删除”信息', - Message_HideType_au: '隐藏“用戶已增加”信息', - Message_HideType_mute_unmute: '隐藏“用戶静音/取消静音”信息', - Message_HideType_r: '隐藏“房间名称已更改”的信息', - Message_HideType_ut: '隐藏“用戶已加入对话”的信息', - Message_HideType_wm: '隐藏“欢迎”的信息', - Message_HideType_rm: '隐藏“已删除信息”的信息', - Message_HideType_subscription_role_added: '隐藏“已设置角色”的信息', - Message_HideType_subscription_role_removed: '隐藏“不再定义的角色”的信息', - Message_HideType_room_archived: '隐藏“聊天室已封存”的信息', - Message_HideType_room_unarchived: '隐藏“聊天室未封存”的信息', - I_Saved_My_E2E_Password: '保存我的 E2E 密码', - IP: 'IP', - In_app: 'App 内', - In_App_And_Desktop: 'App 内及桌面', - In_App_and_Desktop_Alert_info: '打开 app 时,會在屏幕上方显示横幅;显示桌面通知', - Invisible: '隐身', - Invite: '邀请', - is_a_valid_RocketChat_instance: '是一个有效的 Rocket.Chat 实例', - is_not_a_valid_RocketChat_instance: '不是有效的 Rocket.Chat 实例', - is_typing: '正在输入', - Invalid_or_expired_invite_token: '无效或到期的邀请 token', - Invalid_server_version: '此 App 版本已不支援您正在连线之服务器版本。当前版本: {{currentVersion}}.\\n\\n最低版本要求: {{minVersion}}', - Join_your_workspace: '加入您的工作区', - Invite_Link: '邀请链接', - Invite_users: '邀请用戶', - Join: '加入', - Join_our_open_workspace: '加入开放工作区', - Just_invited_people_can_access_this_channel: '仅有被邀请人能进入这个频道', - Language: '语言', - last_message: '最后一条信息', - Leave_channel: '离开频道', - leaving_room: '离开聊天室', - leave: '离开', - Legal: '合法', - Light: '浅色', - License: '授权条款', - Livechat: '即时聊天', - Livechat_edit: '即时聊天编辑', - Login: '登陆', - Login_error: '认证失败!请再试一次', - Login_with: '登陆为', - Logging_out: '正在登出', - Logout: '注销', - Max_number_of_uses: '最大使用次数', - Max_number_of_users_allowed_is_number: '允许使用者上限数量', - members: '成员', - Members: '成员', - Mentioned_Messages: '被提及的信息', - mentioned: '提到', - Mentions: '被提及', - Message_accessibility: '{{time}}来自{{user}}的消息: {{message}}', - Message_actions: '信息操作', - Message_pinned: '信息被钉选', - Message_removed: '信息被删除', - Message_starred: '信息被标注', - Message_unstarred: '信息被取消标注', - message: '信息', - messages: '信息', - Message: '信息', - Messages: '信息', - Message_Reported: '信息已举报', - Microphone_Permission_Message: 'Rocket.Chat 需要存取您的麦克风,以便发送音频信息。', - Microphone_Permission: '麦克风授权', - Mute: '静音', - muted: '被静音', - My_servers: '我的服务器', - N_people_reacted: '{{n}} 人回复', - N_users: '{{n}} 位用户', - name: '名称', - Name: '名称', - Navigation_history: '浏览历史记录', - Never: '从不', - New_Message: '新信息', - New_Password: '新密码', - New_Server: '新服务器', - Next: '下一步', - No_files: '没有文件', - No_limit: '没有限制', - No_mentioned_messages: '没有被提及的信息', - No_pinned_messages: '没有钉选的消息', - No_results_found: '没有搜寻结果', - No_starred_messages: '没有加星标的消息', - No_thread_messages: '没有讨论串信息', - No_label_provided: '没有提供 {{label}}', - No_Message: '没有信息', - No_messages_yet: '当前未有信息', - No_Reactions: '没有表情貼', - No_Read_Receipts: '没有已读人员', - Not_logged: '没有记录', - Not_RC_Server: '这不是一个 Rocket.Chat server.\\n{{contact}}', - Nothing: '无', - Nothing_to_save: '什么都没有保存!', - Notify_active_in_this_room: '通知这个聊天室的活跃用户', - Notify_all_in_this_room: '通知这个聊天室的所有人', - Notifications: '通知', - Notification_Duration: '通知持续时间', - Notification_Preferences: '通知偏好设置', - No_available_agents_to_transfer: '没有可用的代理进行传输', - Offline: '离线', - Oops: '哎呀!', - Omnichannel: 'Omnichannel', - Open_Livechats: '打开即时聊天', - Omnichannel_enable_alert: '您尚未启用 Omnichannel,是否想要启用?', - Onboarding_description: '工作区是团队或组织协作的空间。向工作区管理员询问要加入的地址或为您的团队创建一个。', - Onboarding_join_workspace: '加入一个工作区', - Onboarding_subtitle: '超越团队合作', - Onboarding_title: '欢迎来到 Rocket.Chat', - Onboarding_join_open_description: '加入我们的开放工作区以与 Rocket.Chat 团队及社群交谈', - Onboarding_agree_terms: '继续,即表示您同意 Rocket.Chat', - Onboarding_less_options: '较少选项', - Onboarding_more_options: '较多选项', - Online: '在线', - Only_authorized_users_can_write_new_messages: '只有经过授权的用户才能写新信息', - Open_emoji_selector: '打开 emoji 选择器', - Open_Source_Communication: '开源沟通', - Open_your_authentication_app_and_enter_the_code: '打开您的验证应用程式并输入代码。您也可以使用其中一个备用代码。', - OR: '或', - OS: '作业系统', - Overwrites_the_server_configuration_and_use_room_config: '覆写服务器设置和使用聊天室设置', - Password: '密码', - Parent_channel_or_group: '父频道或群组', - Permalink_copied_to_clipboard: '永久链接已复制到剪贴板!', - Phone: '电话', - Pin: '钉选', - Pinned_Messages: '钉选信息', - pinned: '已被钉选', - Pinned: '被钉选', - Please_add_a_comment: '请新增评论', - Please_enter_your_password: '请输入密码', - Please_wait: '请稍候', - Preferences: '偏好设置', - Preferences_saved: '偏好已保存!', - Privacy_Policy: '隐私政策', - Private_Channel: '私人频道', - Private_Groups: '私人群组', - Private: '私有的', - Processing: '处理中', - Profile_saved_successfully: '个人资料保存成功!', - Profile: '个人资料', - Public_Channel: '公共频道', - Public: '公共', - Push_Notifications: '推送通知', - Push_Notifications_Alert_Info: '这些通知将在未开启 App 时发送给您', - Quote: '引用', - Reactions_are_disabled: '表情貼被禁用', - Reactions_are_enabled: '表情貼被启用', - Reactions: '表情貼', - Read: '读取', - Read_External_Permission_Message: 'Rocket.Chat 需要存取您装置上的相片、多媒体及文件', - Read_External_Permission: '读取媒体权限', - Read_Only_Channel: '只读频道', - Read_Only: '只读', - Read_Receipt: '查看已读人员', - Receive_Group_Mentions: '接收群组提及', - Receive_Group_Mentions_Info: '接收@all和@here提及', - Register: '注册', - Repeat_Password: '重复输入密码', - Replied_on: '回覆在', - replies: '回覆', - reply: '回复', - Reply: '回复', - Report: '举报', - Receive_Notification: '接收通知', - Receive_notifications_from: '接收来自 {{name}} 的通知', - Resend: '重新发送', - Reset_password: '重置密码', - resetting_password: '正在重置密码', - RESET: '重置', - Return: '返回', - Review_app_title: '对此 App 满意吗?', - Review_app_desc: '请在 {{store}} 给予我们 5 星好评', - Review_app_yes: '没问题', - Review_app_no: '婉拒', - Review_app_later: '之后再说', - Review_app_unable_store: '无法开启 {{store}}', - Review_this_app: '评分此 App', - Remove: '移除', - Roles: '角色', - Room_actions: '聊天室操作', - Room_changed_announcement: '{{userBy}}将聊天室通知改为:{{announcement}}', - Room_changed_avatar: 'Room avatar changed by {{userBy}}', - Room_changed_description: '{{userBy}}将聊天室说明改为:{{description}}', - Room_changed_privacy: '{{userBy}}将聊天室类型改为:{{type}}', - Room_changed_topic: '{{userBy}}将聊天室主题改为:{{topic}}', - Room_Files: '聊天室文件', - Room_Info_Edit: '聊天室信息编辑', - Room_Info: '聊天室信息', - Room_Members: '聊天室成员', - Room_name_changed: '{{userBy}} 将聊天室名称改为:{{{name}}', - SAVE: '保存', - Save_Changes: '保存更改', - Save: '保存', - Saved: '保存', - saving_preferences: '保存偏好設置', - saving_profile: '保存配置文件', - saving_settings: '保存设置', - saved_to_gallery: '储存至图片库', - Save_Your_E2E_Password: '储存您的 E2E 密码', - Save_Your_Encryption_Password: '储存您的加密密码', - Save_Your_Encryption_Password_warning: '此密码未被储存在任何地方,为此您必须安全存放您的密码', - Save_Your_Encryption_Password_info: '请记住,如果你遗失了您的密码,您将无法存取您的信息并不可恢复', - Search_Messages: '搜索信息', - Search: '搜索', - Search_by: '搜寻', - Search_global_users: '搜寻全域用户', - Search_global_users_description: '如果启用,您将可以搜寻其他公司、服务器上的任何用戶', - Seconds: '{{second}} 秒', - Security_and_privacy: '安全与隐私', - Select_Avatar: '选择头像', - Select_Server: '选择服务器', - Select_Users: '选择用户', - Select_a_Channel: '选择一个频道', - Select_a_Department: '选择一个部门', - Select_an_option: '选择一个选项', - Select_a_User: '选择一个用戶', - Send: '发送', - Send_audio_message: '发送音频信息', - Send_crash_report: '送出当机报告', - Send_message: '发送信息', - Send_me_the_code_again: '再次发送代码给我', - Send_to: '发送到', - Sending_to: '正发送到', - Sent_an_attachment: '发送附件', - Server: '服务器', - Servers: '服务器', - Server_version: '服务器版本: {{version}}', - Set_username_subtitle: '用户名是用來让其他人在信息中提到您', - Set_custom_status: '设定自订状态', - Set_status: '设定状态', - Status_saved_successfully: '状态储存成功', - Settings: '设置', - Settings_succesfully_changed: '设置更改成功!', - Share: '分享', - Share_Link: '分享链接', - Share_this_app: '分享此 app', - Show_more: '显示更多', - Show_Unread_Counter: '显示未读信息数量', - Show_Unread_Counter_Info: '显示未读信息数量资讯', - Sign_in_your_server: '登录你的服务器', - Sign_Up: '注册', - Some_field_is_invalid_or_empty: '某些字段无效或为空', - Sorting_by: '按{{key}}排序', - Sound: '声音', - Star_room: '将聊天室标记', - Star: '标记', - Starred_Messages: '标记的信息', - starred: '被标记', - Starred: '已标记', - Start_of_conversation: '开始对话', - Start_a_Discussion: '开始一个讨论', - Started_discussion: '已开始的讨论', - Started_call: '{{userBy}} 开始的通话', - Submit: '提交', - Table: '表格', - Tags: '标签', - Take_a_photo: '拍照', - Take_a_video: '录影', - Take_it: '拿去!', - tap_to_change_status: '点按即可更改状态', - Tap_to_view_servers_list: '点击查看服务器列表', - Terms_of_Service: '服务条款', - Theme: '布景主题', - The_user_wont_be_able_to_type_in_roomName: '此用户将无法在 {{roomName}} 中输入', - The_user_will_be_able_to_type_in_roomName: '此用户将可以在 {{roomName}} 中输入', - There_was_an_error_while_action: '{{action}}出现错误!', - This_room_is_blocked: '这个聊天室被锁了', - This_room_is_read_only: '这个聊天室是只读的', - Thread: '讨论串', - Threads: '讨论串', - Timezone: '时区', - To: '到', - topic: '主题', - Topic: '主题', - Translate: '翻译', - Try_again: '再试一次', - Two_Factor_Authentication: '双重认证', - Type_the_channel_name_here: '在这里输入频道名称', - unarchive: '取消封存', - UNARCHIVE: '取消封存', - Unblock_user: '解除屏蔽', - Unfavorite: '取消收藏', - Unfollowed_thread: '取消追踪讨论', - Unmute: '取消静音', - unmuted: '静音状态', - Unpin: '取消钉选', - unread_messages: '未读信息', - Unread: '未读', - Unread_on_top: '未读优先', - Unstar: '取消标记', - Updating: '正在更新', - Uploading: '正在上传', - Upload_file_question_mark: '上传文件?', - User: '用戶', - Users: '用戶', - User_added_by: '由{{userBy}}添加的用户 {{userAdded}}', - User_Info: '用戶资讯', - User_has_been_key: '用户已被{{key}}', - User_is_no_longer_role_by_: '{{userBy}}将角色 {{role}} 从用户 {{user}} 身上移除', - User_muted_by: '用户 {{userMuted}} 被 {{userBy}} 静音', - User_removed_by: '用户 {{userRemoved}} 被 {{userBy}} 移除', - User_sent_an_attachment: '{{user}} 寄送了一个附件', - User_unmuted_by: '用户 {{userUnmuted}} 被 {{userBy}} 取消静音', - User_was_set_role_by_: '用户 {{user}} 被 {{userBy}} 设置角色 {{role}}', - Username_is_empty: '用户名是空的', - Username: '用户名', - Username_or_email: '用户名或邮箱', - Uses_server_configuration: '使用服务器设置', - Validating: '正在验证', - Registration_Succeeded: '注册成功', - Verify: '验证', - Verify_email_title: '注册成功', - Verify_email_desc: '我们已经送出一封电子邮件,以确认您的注册。如果您没有很快收到,请再试一次。', - Verify_your_email_for_the_code_we_sent: '检查您的电子邮件以取得我们发送的代码', - Video_call: '视频电话', - View_Original: '检视原文', - Voice_call: '语音电话', - Waiting_for_network: '等待网路连接', - Websocket_disabled: 'Websocket 已于此伺服器上禁用。 \\n{{contact}}', - Welcome: '欢迎', - What_are_you_doing_right_now: '现在在做些什么?', - Whats_your_2fa: '您的 2FA 代码是?', - Without_Servers: '未连接至服务器', - Workspaces: '工作区', - Would_you_like_to_return_the_inquiry: '你想回覆询问吗?', - Write_External_Permission_Message: 'Rocket.Chat 需要您图片库的存取权限以储存图片。', - Write_External_Permission: '图片库权限', - Yes: '是', - Yes_action_it: '是的,{{action}}它!', - Yesterday: '昨天', - You_are_in_preview_mode: '您处于预览模式', - You_are_offline: '您处于离线状态', - You_can_search_using_RegExp_eg: '您可用 RegExp 进行搜索。 例如`/^text$/i`', - You_colon: '你:', - you_were_mentioned: '你被提到了', - You_were_removed_from_channel: '您已从 {{channel}} 中被踢除', - you: '你', - You: '你', - Logged_out_by_server: '服务器端已将你注销,请重新登入', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: '您需要访问至少一台Rocket.Chat服务器才能共享某些内容。', - You_need_to_verifiy_your_email_address_to_get_notications: '您需要先验证您的邮箱以启用通知', - Your_certificate: '你的证书', - Your_invite_link_will_expire_after__usesLeft__uses: '您的邀请链接将在{{usesLeft}}使用后到期。', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: '您的邀请链接将于{{date}}或{{usesLeft}}使用后到期。', - Your_invite_link_will_expire_on__date__: '您的邀请链接将于{{date}}到期。', - Your_invite_link_will_never_expire: '您的邀请链接永久有效。', - Your_workspace: '您的工作区', - Your_password_is: '您的密码', - Version_no: '版本: {{version}}', - You_will_not_be_able_to_recover_this_message: '您将无法恢复此信息!', - You_will_unset_a_certificate_for_this_server: '您将取消此服务器的凭证设定', - Change_Language: '切换语言', - Crash_report_disclaimer: '我们从不记录您的聊天内容。 崩溃报告和分析事件仅与 Rocket.Chat 有关,以便识别和修复问题。', - Type_message: '输入信息', - Room_search: '搜索聊天室', - Room_selection: '选择房间(输入 1...9)', - Next_room: '下一个聊天室', - Previous_room: '上一个聊天室', - New_room: '新聊天室', - Upload_room: '上传至聊天室', - Search_messages: '搜索信息', - Scroll_messages: '信息滚动', - Reply_latest: '回覆最新信息', - Reply_in_Thread: '讨论串回覆', - Server_selection: '选择服务器', - Server_selection_numbers: '选择服务器(输入 1...9)', - Add_server: '創建服务器', - New_line: '新的一行', - You_will_be_logged_out_of_this_application: '您即将登出', - Clear: '清除', - This_will_clear_all_your_offline_data: '这将清除您的所有离线资料。', - This_will_remove_all_data_from_this_server: '这将从该服务器中删除所有数据。', - Mark_unread: '标记未读', - Wait_activation_warning: '您的帐号必须由管理员手动启用后才能登入。', - Screen_lock: '鎖屏', - Local_authentication_biometry_title: '验证', - Local_authentication_biometry_fallback: '使用通关密码', - Local_authentication_unlock_option: '以通关密码解锁', - Local_authentication_change_passcode: '变更通关密码', - Local_authentication_info: '注: 如果您忘记了通关密码,将需要移除并重新安装此 App', - Local_authentication_facial_recognition: '脸部辨识', - Local_authentication_fingerprint: '指纹辨识', - Local_authentication_unlock_with_label: '以 {{label}} 解锁', - Local_authentication_auto_lock_60: '1分钟后', - Local_authentication_auto_lock_300: '5分钟后', - Local_authentication_auto_lock_900: '15分钟后', - Local_authentication_auto_lock_1800: '半小时后', - Local_authentication_auto_lock_3600: '一小时后', - Passcode_enter_title: '请输入通关密码', - Passcode_choose_title: '请输入新通关密码', - Passcode_choose_confirm_title: '请确认新通关密码', - Passcode_choose_error: '不正确的通关密码,请再试一次', - Passcode_choose_force_set: '管理员设置必填', - Passcode_app_locked_title: 'App 已锁定', - Passcode_app_locked_subtitle: '{{timeLeft}} 秒后再进行尝试', - After_seconds_set_by_admin: '{{seconds}} 秒 (管理员设定)', - Dont_activate: '現在不要激活', - Queued_chats: '聊天队列', - Queue_is_empty: '队列是空的', - Logout_from_other_logged_in_locations: '注销其他已登陆的设备', - You_will_be_logged_out_from_other_locations: '您将于其他设备上注销', - Logged_out_of_other_clients_successfully: '成功登出其他用户端', - Logout_failed: '注销失败', - Log_analytics_events: '日志分析事件', - E2E_encryption_change_password_title: '变更加密密码', - E2E_encryption_change_password_description: '现在您可以建立加密私人群组和私讯。您也可以变更已存在的私人群组或是私讯来加密。 \\n\\n这是点对点的加密,所以用来加密/解密的金钥将不会储存到伺服器上。为此,您必须安全存放您的密码。如果您希望在其他装置上使用对点加密时,将会需要输入此密码。', - E2E_encryption_change_password_error: '变更 E2E 密码时发生错误!', - E2E_encryption_change_password_success: 'E2E 密码已成功变更!', - E2E_encryption_change_password_message: '请确定您已将其安全存放至别处', - E2E_encryption_change_password_confirmation: '是,我要变更', - E2E_encryption_reset_title: '重设 E2E 金钥', - E2E_encryption_reset_description: '此选项将撤销您目前的*E2E 金钥*并将您登出。 \\n当您再次登入时,Rocket.Chat 将产生新的一组金钥并恢复您对任一有在线成员的加密聊天室之存取权限。 \\n由于 E2E 加密的特性,Rocket.Chat 无法恢复无在线成员之聊天室之存取权限。', - E2E_encryption_reset_button: '重设', - E2E_encryption_reset_error: '重设 E2E 金钥时发生错误!', - E2E_encryption_reset_message: '您将被登出', - E2E_encryption_reset_confirmation: '是,我要重设', - Following: '正在追踪', - Threads_displaying_all: '显示全部', - Threads_displaying_following: '显示追踪中', - Threads_displaying_unread: '显示未读', - No_threads: '当前没有讨论串', - No_threads_following: '当前没有正在追踪的讨论', - No_threads_unread: '当前没有未读的讨论', - Messagebox_Send_to_channel: '发送至频道' -}; diff --git a/app/i18n/locales/zh-CN.json b/app/i18n/locales/zh-CN.json new file mode 100644 index 00000000000..3253216e16b --- /dev/null +++ b/app/i18n/locales/zh-CN.json @@ -0,0 +1,682 @@ +{ + "1_person_reacted": "1 人回复了", + "1_user": "1 位用户", + "error-action-not-allowed": "{{action}} 不允許", + "error-application-not-found": "找不到应用程式", + "error-archived-duplicate-name": "已有一个名为「{{room_name}}」的封存频道", + "error-avatar-invalid-url": "无效的头像网址:{{url}}", + "error-avatar-url-handling": "错误,无法将 {{username}} 的头像设置为URL({{url}})", + "error-cant-invite-for-direct-room": "无法邀请使用者进入私讯", + "error-could-not-change-email": "无法更改电子邮件", + "error-could-not-change-name": "无法更改名称", + "error-could-not-change-username": "无法更改使用者名称", + "error-could-not-change-status": "无法更改状态", + "error-delete-protected-role": "无法删除受保护的角色", + "error-department-not-found": "找不到部门", + "error-direct-message-file-upload-not-allowed": "私人对话中不允许档案分享", + "error-duplicate-channel-name": "名为「{{channel_name}}」的频道已存在", + "error-email-domain-blacklisted": "电子邮件网域被禁用", + "error-email-send-failed": "尝试发送电子邮件时出错:{{message}}", + "error-save-image": "错误,无法保存图片", + "error-save-video": "错误,无法保存視頻", + "error-field-unavailable": "{{field}} 已被使用 :(", + "error-file-too-large": "文件太大", + "error-importer-not-defined": "没有正确定义,它缺少汇入类型", + "error-input-is-not-a-valid-field": "{{input}} 不是合法的 {{field}}", + "error-invalid-actionlink": "无效的操作链接", + "error-invalid-arguments": "无效的参数", + "error-invalid-asset": "无效的资源", + "error-invalid-channel": "无效的频道", + "error-invalid-channel-start-with-chars": "无效的频道,请以 @ 或 # 开头", + "error-invalid-custom-field": "无效的自订字段", + "error-invalid-custom-field-name": "无效的自订字段名. 只能包含字母、数字、中线(-)及底线(_).", + "error-invalid-date": "无效的日期", + "error-invalid-description": "无效的描述", + "error-invalid-domain": "无效的域名", + "error-invalid-email": "无效的电子邮件{{emai}}", + "error-invalid-email-address": "无效的邮件地址", + "error-invalid-file-height": "无效的文件长度", + "error-invalid-file-type": "无效的文件类型", + "error-invalid-file-width": "无效的文件宽度", + "error-invalid-from-address": "无效的地址", + "error-invalid-integration": "无效的整合", + "error-invalid-message": "无效的信息", + "error-invalid-method": "无效的方法", + "error-invalid-name": "无效的名称", + "error-invalid-password": "无效的密码", + "error-invalid-redirectUri": "无效的转址", + "error-invalid-role": "无效的角色", + "error-invalid-room": "无效的聊天室", + "error-invalid-room-name": "{{room_name}} 不是合法的聊天室名称", + "error-invalid-room-type": "{{type}} 不是合法的聊天室类型.", + "error-invalid-settings": "无效的设置", + "error-invalid-subscription": "无效的订阅", + "error-invalid-token": "无效的 token", + "error-invalid-triggerWords": "无效的关键字", + "error-invalid-urls": "无效的网址", + "error-invalid-user": "无效的使用者", + "error-invalid-username": "无效的使用者名称", + "error-invalid-webhook-response": "webhook 网址以200以外的状态响应", + "error-message-deleting-blocked": "信息删除已停用", + "error-message-editing-blocked": "信息编辑已停用", + "error-message-size-exceeded": "信息大小超出上限", + "error-missing-unsubscribe-link": "您必须提供[取消订阅]链接。", + "error-no-tokens-for-this-user": "这个用户没有Token", + "error-not-allowed": "不允许", + "error-not-authorized": "未授权", + "error-push-disabled": "推播已停用", + "error-remove-last-owner": "这是最后一个所有者。请在删除这个之前设置一个新所有者。", + "error-role-in-use": "无法删除正在使用中的角色", + "error-role-name-required": "角色名称是必須的", + "error-the-field-is-required": "字段 {{field}} 是必須的。", + "error-too-many-requests": "错误,请求太多。请慢一点。在再次尝试之前,必须等待{{seconds}}秒。", + "error-user-is-not-activated": "用户未被激活", + "error-user-has-no-roles": "用户未设定角色", + "error-user-limit-exceeded": "尝试邀请到 #channel_name 的用户数量超过了管理员设置的限制", + "error-user-not-in-room": "用户不在这个聊天室", + "error-user-registration-custom-field": "无效的自订注册栏位", + "error-user-registration-disabled": "已停用用户注册", + "error-user-registration-secret": "只能透过加密网址进行用戶注册", + "error-you-are-last-owner": "您是最后的拥有者。请删除此人之前设置一个新的拥有者。", + "Actions": "操作", + "activity": "活动时间", + "Activity": "按活动时间排列", + "Add_Reaction": "增加表情貼", + "Add_Server": "創建服务器", + "Add_users": "創建用户", + "Admin_Panel": "仪表板", + "Agent": "代理", + "Alert": "警报", + "alert": "警报", + "alerts": "警报", + "All_users_in_the_channel_can_write_new_messages": "频道中的所有用户都可以发送新信息", + "A_meaningful_name_for_the_discussion_room": "取一个有意义的讨论区的名称", + "All": "所有", + "All_Messages": "全部信息", + "Allow_Reactions": "允许表情贴", + "Alphabetical": "以名称排序", + "and_more": "和更多的", + "and": "和", + "announcement": "公告", + "Announcement": "公告", + "Apply_Your_Certificate": "使用自己的凭证", + "ARCHIVE": "封存", + "archive": "封存", + "are_typing": "正在输入", + "Are_you_sure_question_mark": "你确定吗?", + "Are_you_sure_you_want_to_leave_the_room": "你确定要离开聊天室 {{room}} 吗?", + "Audio": "音讯", + "Authenticating": "正在验证身份", + "Automatic": "自动", + "Auto_Translate": "自动翻译", + "Avatar_changed_successfully": "头像更新成功!", + "Avatar_Url": "头像地址", + "Away": "离开", + "Back": "返回", + "Black": "黑色", + "Block_user": "屏蔽此用户", + "Browser": "浏览器", + "Broadcast_channel_Description": "只有经过授权的用户才能写新信息,但其他用户可以回复", + "Broadcast_Channel": "广播频道", + "Busy": "忙碌", + "By_proceeding_you_are_agreeing": "继续操作,请同意我们的", + "Cancel_editing": "取消编辑", + "Cancel_recording": "取消录制", + "Cancel": "取消", + "changing_avatar": "更改头像", + "creating_channel": "创建频道", + "creating_invite": "创建邀请", + "Channel_Name": "频道名", + "Channels": "频道", + "Chats": "聊天", + "Call_already_ended": "通话已经结束!", + "Clear_cookies_alert": "是否清除所有 cookies?", + "Clear_cookies_desc": "本操作将清除所有登入 cookies,以登入其他帐号", + "Clear_cookies_yes": "是,清除 cookies", + "Clear_cookies_no": "否,保留 cookies", + "Click_to_join": "点击以参与", + "Close": "关闭", + "Close_emoji_selector": "关闭 emoji 选择器", + "Closing_chat": "结束聊天", + "Change_language_loading": "切换语言", + "Chat_closed_by_agent": "聊天已被客服关闭", + "Choose": "选择", + "Choose_from_library": "从媒体库选择", + "Choose_file": "选择文件", + "Choose_where_you_want_links_be_opened": "请选择您要将链接开启在", + "Code": "代码", + "Code_or_password_invalid": "验证码或密码不正确", + "Collaborative": "协作", + "Confirm": "确认", + "Connect": "连接", + "Connected": "已连接", + "connecting_server": "连接至服务器", + "Connecting": "连接中", + "Contact_us": "联系我们", + "Contact_your_server_admin": "请联络系统管理员", + "Continue_with": "继续采用", + "Copied_to_clipboard": "复制到剪贴板", + "Copy": "复制", + "Conversation": "对话", + "Permalink": "永久链接", + "Certificate_password": "凭证密码", + "Clear_cache": "清除本机资料", + "Clear_cache_loading": "清除快取", + "Whats_the_password_for_your_certificate": "您的凭证密码是?", + "Create_account": "创建账户", + "Create_Channel": "创建频道", + "Create_Direct_Messages": "新增私人讯息", + "Create_Discussion": "新增讨论区", + "Created_snippet": "新增程式码片段", + "Create_a_new_workspace": "创建一个新的工作区", + "Create": "创建", + "Custom_Status": "自订状态", + "Dark": "深色", + "Dark_level": "深色程度", + "Default": "默認", + "Default_browser": "预设浏览器", + "Delete_Room_Warning": "删除聊天室将连带删除其中所有信息。此操作将无法还原。", + "Department": "部门", + "delete": "删除", + "Delete": "删除", + "DELETE": "删除", + "deleting_room": "正在删除聊天室", + "description": "描述", + "Description": "描述", + "Desktop_Options": "桌面选项", + "Desktop_Notifications": "桌面通知", + "Desktop_Alert_info": "这些通知将发送至桌面", + "Directory": "目录", + "Direct_Messages": "私訊", + "Disable_notifications": "禁用信息通知", + "Discussions": "讨论区", + "Discussion_Desc": "帮助保持事态更新! 通过创建讨论,一个和所选频道双向关联的子频道将会被创建。", + "Discussion_name": "讨论区名称", + "Done": "完成", + "Dont_Have_An_Account": "还没有账号?", + "Do_you_have_an_account": "是否拥有帐号?", + "Do_you_have_a_certificate": "是否拥有凭证?", + "Do_you_really_want_to_key_this_room_question_mark": "您真的想要{{key}}这个聊天室吗?", + "E2E_Encryption": "E2E 加密", + "E2E_How_It_Works_info1": "您现在可以创建加密的专用组和直接消息。您也可以将现有的私人组或直接信息加密。", + "E2E_How_It_Works_info2": "这是點對點加密,因此编码/解码邮件的密钥不会保存在服务器上。因此,您需要将密码存储在安全的地方。您需要在希望使用點對點加密的其他设备上输入。", + "E2E_How_It_Works_info3": "如果继续,将自动生成一组 E2E 密码", + "E2E_How_It_Works_info4": "您也可以随时从已输入既有密码的任何浏览器设定新密码给您的加密金钥。", + "edit": "编辑", + "edited": "已编辑", + "Edit": "编辑", + "Edit_Status": "编辑状态", + "Edit_Invite": "编辑邀请", + "End_to_end_encrypted_room": "E2E 加密聊天室", + "end_to_end_encryption": "E2E 加密", + "Email_Notification_Mode_All": "每次被标记或私讯", + "Email_Notification_Mode_Disabled": "禁用", + "Email_or_password_field_is_empty": "邮件或密码字段为空", + "Email": "邮箱", + "email": "邮箱", + "Empty_title": "空白标题", + "Enable_Auto_Translate": "开启自动翻译", + "Enable_notifications": "开启信息通知", + "Encrypted": "已加密", + "Encrypted_message": "加密信息", + "Enter_Your_E2E_Password": "输入您的 E2E 密码", + "Enter_Your_Encryption_Password_desc1": "这将会允许您存取您的加密私人群组和私訊", + "Enter_Your_Encryption_Password_desc2": "您需要在任何使用此聊天的平台输入密码,以编码/解码您的信息", + "Encryption_error_title": "您的加密密码似乎有误", + "Encryption_error_desc": "无法使用汇入的加密密钥来解密", + "Everyone_can_access_this_channel": "每个人都可以访问此频道", + "Error_uploading": "错误上传", + "Expiration_Days": "到期 (日)", + "Favorite": "收藏", + "Favorites": "收藏", + "Files": "文件", + "File_description": "文件描述", + "File_name": "文件名称", + "Finish_recording": "完成录制", + "Following_thread": "追踪的讨论串", + "For_your_security_you_must_enter_your_current_password_to_continue": "出于安全考虑,您必须输入您的密码以便继续操作", + "Forgot_password_If_this_email_is_registered": "如果这邮箱已注册,我们将发送如何重置密码的说明。如果您没有在短时间内收到电子邮件,请再试一次。", + "Forgot_password": "忘记密码", + "Forgot_Password": "忘记密码", + "Forward": "转发", + "Forward_Chat": "转发聊天", + "Forward_to_department": "转发到部门", + "Forward_to_user": "转发给用戶", + "Full_table": "点击以查看完整表格", + "Generate_New_Link": "产生新的链接", + "Group_by_favorites": "收藏优先", + "Group_by_type": "以类型分组", + "Hide": "隐藏", + "Has_joined_the_channel": "已加入频道", + "Has_joined_the_conversation": "已经加入此对话", + "Has_left_the_channel": "已离开频道", + "Hide_System_Messages": "隐藏系统信息", + "Hide_type_messages": "隐藏 \"{{type}}\" 信息", + "How_It_Works": "运作方式", + "Message_HideType_uj": "隐藏“用戶加入”信息", + "Message_HideType_ul": "隐藏“用戶离开”信息", + "Message_HideType_ru": "隐藏“用戶已删除”信息", + "Message_HideType_au": "隐藏“用戶已增加”信息", + "Message_HideType_mute_unmute": "隐藏“用戶静音/取消静音”信息", + "Message_HideType_r": "隐藏“房间名称已更改”的信息", + "Message_HideType_ut": "隐藏“用戶已加入对话”的信息", + "Message_HideType_wm": "隐藏“欢迎”的信息", + "Message_HideType_rm": "隐藏“已删除信息”的信息", + "Message_HideType_subscription_role_added": "隐藏“已设置角色”的信息", + "Message_HideType_subscription_role_removed": "隐藏“不再定义的角色”的信息", + "Message_HideType_room_archived": "隐藏“聊天室已封存”的信息", + "Message_HideType_room_unarchived": "隐藏“聊天室未封存”的信息", + "I_Saved_My_E2E_Password": "保存我的 E2E 密码", + "IP": "IP", + "In_app": "App 内", + "In_App_And_Desktop": "App 内及桌面", + "In_App_and_Desktop_Alert_info": "打开 app 时,會在屏幕上方显示横幅;显示桌面通知", + "Invisible": "隐身", + "Invite": "邀请", + "is_a_valid_RocketChat_instance": "是一个有效的 Rocket.Chat 实例", + "is_not_a_valid_RocketChat_instance": "不是有效的 Rocket.Chat 实例", + "is_typing": "正在输入", + "Invalid_or_expired_invite_token": "无效或到期的邀请 token", + "Invalid_server_version": "此 App 版本已不支援您正在连线之服务器版本。当前版本: {{currentVersion}}.\\n\\n最低版本要求: {{minVersion}}", + "Join_your_workspace": "加入您的工作区", + "Invite_Link": "邀请链接", + "Invite_users": "邀请用戶", + "Join": "加入", + "Join_our_open_workspace": "加入开放工作区", + "Just_invited_people_can_access_this_channel": "仅有被邀请人能进入这个频道", + "Language": "语言", + "last_message": "最后一条信息", + "Leave_channel": "离开频道", + "leaving_room": "离开聊天室", + "leave": "离开", + "Legal": "合法", + "Light": "浅色", + "License": "授权条款", + "Livechat": "即时聊天", + "Livechat_edit": "即时聊天编辑", + "Login": "登陆", + "Login_error": "认证失败!请再试一次", + "Login_with": "登陆为", + "Logging_out": "正在登出", + "Logout": "注销", + "Max_number_of_uses": "最大使用次数", + "Max_number_of_users_allowed_is_number": "允许使用者上限数量", + "members": "成员", + "Members": "成员", + "Mentioned_Messages": "被提及的信息", + "mentioned": "提到", + "Mentions": "被提及", + "Message_accessibility": "{{time}}来自{{user}}的消息: {{message}}", + "Message_actions": "信息操作", + "Message_pinned": "信息被钉选", + "Message_removed": "信息被删除", + "Message_starred": "信息被标注", + "Message_unstarred": "信息被取消标注", + "message": "信息", + "messages": "信息", + "Message": "信息", + "Messages": "信息", + "Message_Reported": "信息已举报", + "Microphone_Permission_Message": "Rocket.Chat 需要存取您的麦克风,以便发送音频信息。", + "Microphone_Permission": "麦克风授权", + "Mute": "静音", + "muted": "被静音", + "My_servers": "我的服务器", + "N_people_reacted": "{{n}} 人回复", + "N_users": "{{n}} 位用户", + "name": "名称", + "Name": "名称", + "Navigation_history": "浏览历史记录", + "Never": "从不", + "New_Message": "新信息", + "New_Password": "新密码", + "New_Server": "新服务器", + "Next": "下一步", + "No_files": "没有文件", + "No_limit": "没有限制", + "No_mentioned_messages": "没有被提及的信息", + "No_pinned_messages": "没有钉选的消息", + "No_results_found": "没有搜寻结果", + "No_starred_messages": "没有加星标的消息", + "No_thread_messages": "没有讨论串信息", + "No_label_provided": "没有提供 {{label}}", + "No_Message": "没有信息", + "No_messages_yet": "当前未有信息", + "No_Reactions": "没有表情貼", + "No_Read_Receipts": "没有已读人员", + "Not_logged": "没有记录", + "Not_RC_Server": "这不是一个 Rocket.Chat server.\\n{{contact}}", + "Nothing": "无", + "Nothing_to_save": "什么都没有保存!", + "Notify_active_in_this_room": "通知这个聊天室的活跃用户", + "Notify_all_in_this_room": "通知这个聊天室的所有人", + "Notifications": "通知", + "Notification_Duration": "通知持续时间", + "Notification_Preferences": "通知偏好设置", + "No_available_agents_to_transfer": "没有可用的代理进行传输", + "Offline": "离线", + "Oops": "哎呀!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "打开即时聊天", + "Omnichannel_enable_alert": "您尚未启用 Omnichannel,是否想要启用?", + "Onboarding_description": "工作区是团队或组织协作的空间。向工作区管理员询问要加入的地址或为您的团队创建一个。", + "Onboarding_join_workspace": "加入一个工作区", + "Onboarding_subtitle": "超越团队合作", + "Onboarding_title": "欢迎来到 Rocket.Chat", + "Onboarding_join_open_description": "加入我们的开放工作区以与 Rocket.Chat 团队及社群交谈", + "Onboarding_agree_terms": "继续,即表示您同意 Rocket.Chat", + "Onboarding_less_options": "较少选项", + "Onboarding_more_options": "较多选项", + "Online": "在线", + "Only_authorized_users_can_write_new_messages": "只有经过授权的用户才能写新信息", + "Open_emoji_selector": "打开 emoji 选择器", + "Open_Source_Communication": "开源沟通", + "Open_your_authentication_app_and_enter_the_code": "打开您的验证应用程式并输入代码。您也可以使用其中一个备用代码。", + "OR": "或", + "OS": "作业系统", + "Overwrites_the_server_configuration_and_use_room_config": "覆写服务器设置和使用聊天室设置", + "Password": "密码", + "Parent_channel_or_group": "父频道或群组", + "Permalink_copied_to_clipboard": "永久链接已复制到剪贴板!", + "Phone": "电话", + "Pin": "钉选", + "Pinned_Messages": "钉选信息", + "pinned": "已被钉选", + "Pinned": "被钉选", + "Please_add_a_comment": "请新增评论", + "Please_enter_your_password": "请输入密码", + "Please_wait": "请稍候", + "Preferences": "偏好设置", + "Preferences_saved": "偏好已保存!", + "Privacy_Policy": "隐私政策", + "Private_Channel": "私人频道", + "Private_Groups": "私人群组", + "Private": "私有的", + "Processing": "处理中", + "Profile_saved_successfully": "个人资料保存成功!", + "Profile": "个人资料", + "Public_Channel": "公共频道", + "Public": "公共", + "Push_Notifications": "推送通知", + "Push_Notifications_Alert_Info": "这些通知将在未开启 App 时发送给您", + "Quote": "引用", + "Reactions_are_disabled": "表情貼被禁用", + "Reactions_are_enabled": "表情貼被启用", + "Reactions": "表情貼", + "Read": "读取", + "Read_External_Permission_Message": "Rocket.Chat 需要存取您装置上的相片、多媒体及文件", + "Read_External_Permission": "读取媒体权限", + "Read_Only_Channel": "只读频道", + "Read_Only": "只读", + "Read_Receipt": "查看已读人员", + "Receive_Group_Mentions": "接收群组提及", + "Receive_Group_Mentions_Info": "接收@all和@here提及", + "Register": "注册", + "Repeat_Password": "重复输入密码", + "Replied_on": "回覆在", + "replies": "回覆", + "reply": "回复", + "Reply": "回复", + "Report": "举报", + "Receive_Notification": "接收通知", + "Receive_notifications_from": "接收来自 {{name}} 的通知", + "Resend": "重新发送", + "Reset_password": "重置密码", + "resetting_password": "正在重置密码", + "RESET": "重置", + "Return": "返回", + "Review_app_title": "对此 App 满意吗?", + "Review_app_desc": "请在 {{store}} 给予我们 5 星好评", + "Review_app_yes": "没问题", + "Review_app_no": "婉拒", + "Review_app_later": "之后再说", + "Review_app_unable_store": "无法开启 {{store}}", + "Review_this_app": "评分此 App", + "Remove": "移除", + "Roles": "角色", + "Room_actions": "聊天室操作", + "Room_changed_announcement": "{{userBy}}将聊天室通知改为:{{announcement}}", + "Room_changed_avatar": "Room avatar changed by {{userBy}}", + "Room_changed_description": "{{userBy}}将聊天室说明改为:{{description}}", + "Room_changed_privacy": "{{userBy}}将聊天室类型改为:{{type}}", + "Room_changed_topic": "{{userBy}}将聊天室主题改为:{{topic}}", + "Room_Files": "聊天室文件", + "Room_Info_Edit": "聊天室信息编辑", + "Room_Info": "聊天室信息", + "Room_Members": "聊天室成员", + "Room_name_changed": "{{userBy}} 将聊天室名称改为:{{{name}}", + "SAVE": "保存", + "Save_Changes": "保存更改", + "Save": "保存", + "Saved": "保存", + "saving_preferences": "保存偏好設置", + "saving_profile": "保存配置文件", + "saving_settings": "保存设置", + "saved_to_gallery": "储存至图片库", + "Save_Your_E2E_Password": "储存您的 E2E 密码", + "Save_Your_Encryption_Password": "储存您的加密密码", + "Save_Your_Encryption_Password_warning": "此密码未被储存在任何地方,为此您必须安全存放您的密码", + "Save_Your_Encryption_Password_info": "请记住,如果你遗失了您的密码,您将无法存取您的信息并不可恢复", + "Search_Messages": "搜索信息", + "Search": "搜索", + "Search_by": "搜寻", + "Search_global_users": "搜寻全域用户", + "Search_global_users_description": "如果启用,您将可以搜寻其他公司、服务器上的任何用戶", + "Seconds": "{{second}} 秒", + "Security_and_privacy": "安全与隐私", + "Select_Avatar": "选择头像", + "Select_Server": "选择服务器", + "Select_Users": "选择用户", + "Select_a_Channel": "选择一个频道", + "Select_a_Department": "选择一个部门", + "Select_an_option": "选择一个选项", + "Select_a_User": "选择一个用戶", + "Send": "发送", + "Send_audio_message": "发送音频信息", + "Send_crash_report": "送出当机报告", + "Send_message": "发送信息", + "Send_me_the_code_again": "再次发送代码给我", + "Send_to": "发送到", + "Sending_to": "正发送到", + "Sent_an_attachment": "发送附件", + "Server": "服务器", + "Servers": "服务器", + "Server_version": "服务器版本: {{version}}", + "Set_username_subtitle": "用户名是用來让其他人在信息中提到您", + "Set_custom_status": "设定自订状态", + "Set_status": "设定状态", + "Status_saved_successfully": "状态储存成功", + "Settings": "设置", + "Settings_succesfully_changed": "设置更改成功!", + "Share": "分享", + "Share_Link": "分享链接", + "Share_this_app": "分享此 app", + "Show_more": "显示更多", + "Show_Unread_Counter": "显示未读信息数量", + "Show_Unread_Counter_Info": "显示未读信息数量资讯", + "Sign_in_your_server": "登录你的服务器", + "Sign_Up": "注册", + "Some_field_is_invalid_or_empty": "某些字段无效或为空", + "Sorting_by": "按{{key}}排序", + "Sound": "声音", + "Star_room": "将聊天室标记", + "Star": "标记", + "Starred_Messages": "标记的信息", + "starred": "被标记", + "Starred": "已标记", + "Start_of_conversation": "开始对话", + "Start_a_Discussion": "开始一个讨论", + "Started_discussion": "已开始的讨论", + "Started_call": "{{userBy}} 开始的通话", + "Submit": "提交", + "Table": "表格", + "Tags": "标签", + "Take_a_photo": "拍照", + "Take_a_video": "录影", + "Take_it": "拿去!", + "tap_to_change_status": "点按即可更改状态", + "Tap_to_view_servers_list": "点击查看服务器列表", + "Terms_of_Service": "服务条款", + "Theme": "布景主题", + "The_user_wont_be_able_to_type_in_roomName": "此用户将无法在 {{roomName}} 中输入", + "The_user_will_be_able_to_type_in_roomName": "此用户将可以在 {{roomName}} 中输入", + "There_was_an_error_while_action": "{{action}}出现错误!", + "This_room_is_blocked": "这个聊天室被锁了", + "This_room_is_read_only": "这个聊天室是只读的", + "Thread": "讨论串", + "Threads": "讨论串", + "Timezone": "时区", + "To": "到", + "topic": "主题", + "Topic": "主题", + "Translate": "翻译", + "Try_again": "再试一次", + "Two_Factor_Authentication": "双重认证", + "Type_the_channel_name_here": "在这里输入频道名称", + "unarchive": "取消封存", + "UNARCHIVE": "取消封存", + "Unblock_user": "解除屏蔽", + "Unfavorite": "取消收藏", + "Unfollowed_thread": "取消追踪讨论", + "Unmute": "取消静音", + "unmuted": "静音状态", + "Unpin": "取消钉选", + "unread_messages": "未读信息", + "Unread": "未读", + "Unread_on_top": "未读优先", + "Unstar": "取消标记", + "Updating": "正在更新", + "Uploading": "正在上传", + "Upload_file_question_mark": "上传文件?", + "User": "用戶", + "Users": "用戶", + "User_added_by": "由{{userBy}}添加的用户 {{userAdded}}", + "User_Info": "用戶资讯", + "User_has_been_key": "用户已被{{key}}", + "User_is_no_longer_role_by_": "{{userBy}}将角色 {{role}} 从用户 {{user}} 身上移除", + "User_muted_by": "用户 {{userMuted}} 被 {{userBy}} 静音", + "User_removed_by": "用户 {{userRemoved}} 被 {{userBy}} 移除", + "User_sent_an_attachment": "{{user}} 寄送了一个附件", + "User_unmuted_by": "用户 {{userUnmuted}} 被 {{userBy}} 取消静音", + "User_was_set_role_by_": "用户 {{user}} 被 {{userBy}} 设置角色 {{role}}", + "Username_is_empty": "用户名是空的", + "Username": "用户名", + "Username_or_email": "用户名或邮箱", + "Uses_server_configuration": "使用服务器设置", + "Validating": "正在验证", + "Registration_Succeeded": "注册成功", + "Verify": "验证", + "Verify_email_title": "注册成功", + "Verify_email_desc": "我们已经送出一封电子邮件,以确认您的注册。如果您没有很快收到,请再试一次。", + "Verify_your_email_for_the_code_we_sent": "检查您的电子邮件以取得我们发送的代码", + "Video_call": "视频电话", + "View_Original": "检视原文", + "Voice_call": "语音电话", + "Waiting_for_network": "等待网路连接", + "Websocket_disabled": "Websocket 已于此伺服器上禁用。 \\n{{contact}}", + "Welcome": "欢迎", + "What_are_you_doing_right_now": "现在在做些什么?", + "Whats_your_2fa": "您的 2FA 代码是?", + "Without_Servers": "未连接至服务器", + "Workspaces": "工作区", + "Would_you_like_to_return_the_inquiry": "你想回覆询问吗?", + "Write_External_Permission_Message": "Rocket.Chat 需要您图片库的存取权限以储存图片。", + "Write_External_Permission": "图片库权限", + "Yes": "是", + "Yes_action_it": "是的,{{action}}它!", + "Yesterday": "昨天", + "You_are_in_preview_mode": "您处于预览模式", + "You_are_offline": "您处于离线状态", + "You_can_search_using_RegExp_eg": "您可用 RegExp 进行搜索。 例如`/^text$/i`", + "You_colon": "你:", + "you_were_mentioned": "你被提到了", + "You_were_removed_from_channel": "您已从 {{channel}} 中被踢除", + "you": "你", + "You": "你", + "Logged_out_by_server": "服务器端已将你注销,请重新登入", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "您需要访问至少一台Rocket.Chat服务器才能共享某些内容。", + "You_need_to_verifiy_your_email_address_to_get_notications": "您需要先验证您的邮箱以启用通知", + "Your_certificate": "你的证书", + "Your_invite_link_will_expire_after__usesLeft__uses": "您的邀请链接将在{{usesLeft}}使用后到期。", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "您的邀请链接将于{{date}}或{{usesLeft}}使用后到期。", + "Your_invite_link_will_expire_on__date__": "您的邀请链接将于{{date}}到期。", + "Your_invite_link_will_never_expire": "您的邀请链接永久有效。", + "Your_workspace": "您的工作区", + "Your_password_is": "您的密码", + "Version_no": "版本: {{version}}", + "You_will_not_be_able_to_recover_this_message": "您将无法恢复此信息!", + "You_will_unset_a_certificate_for_this_server": "您将取消此服务器的凭证设定", + "Change_Language": "切换语言", + "Crash_report_disclaimer": "我们从不记录您的聊天内容。 崩溃报告和分析事件仅与 Rocket.Chat 有关,以便识别和修复问题。", + "Type_message": "输入信息", + "Room_search": "搜索聊天室", + "Room_selection": "选择房间(输入 1...9)", + "Next_room": "下一个聊天室", + "Previous_room": "上一个聊天室", + "New_room": "新聊天室", + "Upload_room": "上传至聊天室", + "Search_messages": "搜索信息", + "Scroll_messages": "信息滚动", + "Reply_latest": "回覆最新信息", + "Reply_in_Thread": "讨论串回覆", + "Server_selection": "选择服务器", + "Server_selection_numbers": "选择服务器(输入 1...9)", + "Add_server": "創建服务器", + "New_line": "新的一行", + "You_will_be_logged_out_of_this_application": "您即将登出", + "Clear": "清除", + "This_will_clear_all_your_offline_data": "这将清除您的所有离线资料。", + "This_will_remove_all_data_from_this_server": "这将从该服务器中删除所有数据。", + "Mark_unread": "标记未读", + "Wait_activation_warning": "您的帐号必须由管理员手动启用后才能登入。", + "Screen_lock": "鎖屏", + "Local_authentication_biometry_title": "验证", + "Local_authentication_biometry_fallback": "使用通关密码", + "Local_authentication_unlock_option": "以通关密码解锁", + "Local_authentication_change_passcode": "变更通关密码", + "Local_authentication_info": "注: 如果您忘记了通关密码,将需要移除并重新安装此 App", + "Local_authentication_facial_recognition": "脸部辨识", + "Local_authentication_fingerprint": "指纹辨识", + "Local_authentication_unlock_with_label": "以 {{label}} 解锁", + "Local_authentication_auto_lock_60": "1分钟后", + "Local_authentication_auto_lock_300": "5分钟后", + "Local_authentication_auto_lock_900": "15分钟后", + "Local_authentication_auto_lock_1800": "半小时后", + "Local_authentication_auto_lock_3600": "一小时后", + "Passcode_enter_title": "请输入通关密码", + "Passcode_choose_title": "请输入新通关密码", + "Passcode_choose_confirm_title": "请确认新通关密码", + "Passcode_choose_error": "不正确的通关密码,请再试一次", + "Passcode_choose_force_set": "管理员设置必填", + "Passcode_app_locked_title": "App 已锁定", + "Passcode_app_locked_subtitle": "{{timeLeft}} 秒后再进行尝试", + "After_seconds_set_by_admin": "{{seconds}} 秒 (管理员设定)", + "Dont_activate": "現在不要激活", + "Queued_chats": "聊天队列", + "Queue_is_empty": "队列是空的", + "Logout_from_other_logged_in_locations": "注销其他已登陆的设备", + "You_will_be_logged_out_from_other_locations": "您将于其他设备上注销", + "Logged_out_of_other_clients_successfully": "成功登出其他用户端", + "Logout_failed": "注销失败", + "Log_analytics_events": "日志分析事件", + "E2E_encryption_change_password_title": "变更加密密码", + "E2E_encryption_change_password_description": "现在您可以建立加密私人群组和私讯。您也可以变更已存在的私人群组或是私讯来加密。 \\n\\n这是点对点的加密,所以用来加密/解密的金钥将不会储存到伺服器上。为此,您必须安全存放您的密码。如果您希望在其他装置上使用对点加密时,将会需要输入此密码。", + "E2E_encryption_change_password_error": "变更 E2E 密码时发生错误!", + "E2E_encryption_change_password_success": "E2E 密码已成功变更!", + "E2E_encryption_change_password_message": "请确定您已将其安全存放至别处", + "E2E_encryption_change_password_confirmation": "是,我要变更", + "E2E_encryption_reset_title": "重设 E2E 金钥", + "E2E_encryption_reset_description": "此选项将撤销您目前的*E2E 金钥*并将您登出。 \\n当您再次登入时,Rocket.Chat 将产生新的一组金钥并恢复您对任一有在线成员的加密聊天室之存取权限。 \\n由于 E2E 加密的特性,Rocket.Chat 无法恢复无在线成员之聊天室之存取权限。", + "E2E_encryption_reset_button": "重设", + "E2E_encryption_reset_error": "重设 E2E 金钥时发生错误!", + "E2E_encryption_reset_message": "您将被登出", + "E2E_encryption_reset_confirmation": "是,我要重设", + "Following": "正在追踪", + "Threads_displaying_all": "显示全部", + "Threads_displaying_following": "显示追踪中", + "Threads_displaying_unread": "显示未读", + "No_threads": "当前没有讨论串", + "No_threads_following": "当前没有正在追踪的讨论", + "No_threads_unread": "当前没有未读的讨论", + "Messagebox_Send_to_channel": "发送至频道" +} \ No newline at end of file diff --git a/app/i18n/locales/zh-TW.js b/app/i18n/locales/zh-TW.js deleted file mode 100644 index 7bfcc3b9db4..00000000000 --- a/app/i18n/locales/zh-TW.js +++ /dev/null @@ -1,682 +0,0 @@ -export default { - '1_person_reacted': '1 人回覆了', - '1_user': '1 位使用者', - 'error-action-not-allowed': '{{action}} 不允許', - 'error-application-not-found': '找不到應用程式', - 'error-archived-duplicate-name': '已有一個名為「{{room_name}}」的封存頻道', - 'error-avatar-invalid-url': '無效的大頭貼網址:{{url}}', - 'error-avatar-url-handling': '錯誤,無法將 {{username}} 的大頭貼設置為URL({{url}})', - 'error-cant-invite-for-direct-room': '無法邀請使用者進入私訊', - 'error-could-not-change-email': '無法更改電子郵件', - 'error-could-not-change-name': '無法更改名稱', - 'error-could-not-change-username': '無法更改使用者名稱', - 'error-could-not-change-status': '無法更改狀態', - 'error-delete-protected-role': '無法刪除受保護的角色', - 'error-department-not-found': '找不到部門', - 'error-direct-message-file-upload-not-allowed': '私人對話中不允許檔案分享', - 'error-duplicate-channel-name': '名為「{{channel_name}}」的頻道已存在', - 'error-email-domain-blacklisted': '電子郵件網域被禁用', - 'error-email-send-failed': '嘗試發送電子郵件時出錯:{{message}}', - 'error-save-image': '錯誤,無法儲存圖片', - 'error-save-video': '錯誤,無法儲存影片', - 'error-field-unavailable': '{{field}} 已被使用 :(', - 'error-file-too-large': '檔案太大', - 'error-importer-not-defined': '沒有正確定義,它缺少匯入類型', - 'error-input-is-not-a-valid-field': '{{input}}不是有效的{{field}}', - 'error-invalid-actionlink': '無效的操作連結', - 'error-invalid-arguments': '無效的參數', - 'error-invalid-asset': '無效的資源', - 'error-invalid-channel': '無效的頻道', - 'error-invalid-channel-start-with-chars': '無效的頻道,請以 @ 或 # 開頭', - 'error-invalid-custom-field': '無效的自訂欄位', - 'error-invalid-custom-field-name': '無效的自訂欄位名稱。只能包含字母、數字、連字符(-)及下底線(_).', - 'error-invalid-date': '無效的日期', - 'error-invalid-description': '無效的描述', - 'error-invalid-domain': '無效的域名', - 'error-invalid-email': '無效的電子郵件{{email}}', - 'error-invalid-email-address': '無效的郵件地址', - 'error-invalid-file-height': '無效的檔案高度', - 'error-invalid-file-type': '無效的檔案類型', - 'error-invalid-file-width': '無效的檔案寬度', - 'error-invalid-from-address': '無效的地址', - 'error-invalid-integration': '無效的整合', - 'error-invalid-message': '無效的訊息', - 'error-invalid-method': '無效的方法', - 'error-invalid-name': '無效的名稱', - 'error-invalid-password': '無效的密碼', - 'error-invalid-redirectUri': '無效的轉址', - 'error-invalid-role': '無效的角色', - 'error-invalid-room': '無效的聊天室', - 'error-invalid-room-name': '{{room_name}} 不是一個有效的聊天室名稱', - 'error-invalid-room-type': '{{type}} 不是有效的聊天室類型', - 'error-invalid-settings': '無效的設置', - 'error-invalid-subscription': '無效的訂閱', - 'error-invalid-token': '無效的 token', - 'error-invalid-triggerWords': '無效的關鍵字', - 'error-invalid-urls': '無效的網址', - 'error-invalid-user': '無效的使用者', - 'error-invalid-username': '無效的使用者名稱', - 'error-invalid-webhook-response': 'webhook 網址以200以外的狀態響應', - 'error-message-deleting-blocked': '訊息刪除已停用', - 'error-message-editing-blocked': '訊息編輯已停用', - 'error-message-size-exceeded': '訊息大小超出上限', - 'error-missing-unsubscribe-link': '您必須提供[取消訂閱]連結。', - 'error-no-tokens-for-this-user': '這名使用者沒有Token', - 'error-not-allowed': '不允許', - 'error-not-authorized': '未授權', - 'error-push-disabled': '推播已停用', - 'error-remove-last-owner': '這是最後的擁有者。請在刪除此人之前設置一個新的擁有者。', - 'error-role-in-use': '無法刪除正在使用中的角色', - 'error-role-name-required': '角色名稱是必須的', - 'error-the-field-is-required': '字段 {{field}} 是必須的。', - 'error-too-many-requests': '錯誤,請求過多。請稍候{{seconds}}秒後再進行嘗試。', - 'error-user-is-not-activated': '使用者尚未啟用', - 'error-user-has-no-roles': '使用者尚未設定角色', - 'error-user-limit-exceeded': '嘗試邀請到 #channel_name 的使用者數量超過了管理員設置的限制', - 'error-user-not-in-room': '使用者不在這個聊天室', - 'error-user-registration-custom-field': '無效的自訂註冊欄位', - 'error-user-registration-disabled': '使用者註冊已停用', - 'error-user-registration-secret': '只能透過加密網址進行使用者註冊', - 'error-you-are-last-owner': '您是最後的擁有者。請刪除此人之前設置一個新的擁有者。', - Actions: '操作', - activity: '活動時間', - Activity: '以活動時間排序', - Add_Reaction: '增加表情貼', - Add_Server: '新增伺服器', - Add_users: '新增使用者', - Admin_Panel: '管理者面板', - Agent: '代理', - Alert: '警報', - alert: '警報', - alerts: '警報', - All_users_in_the_channel_can_write_new_messages: '頻道中的所有使用者都可以發送新訊息', - A_meaningful_name_for_the_discussion_room: '取一個有意義的討論區名稱', - All: '所有', - All_Messages: '全部訊息', - Allow_Reactions: '允許表情貼', - Alphabetical: '以名稱排序', - and_more: '和更多的', - and: '和', - announcement: '公告', - Announcement: '公告', - Apply_Your_Certificate: '使用自己的憑證', - ARCHIVE: '封存', - archive: '封存', - are_typing: '正在輸入', - Are_you_sure_question_mark: '你確定嗎?', - Are_you_sure_you_want_to_leave_the_room: '你確定要離開聊天室 {{room}} 嗎?', - Audio: '音訊', - Authenticating: '正在驗證身份', - Automatic: '自動', - Auto_Translate: '自動翻譯', - Avatar_changed_successfully: '大頭貼更新成功!', - Avatar_Url: '大頭貼地址', - Away: '離開', - Back: '返回', - Black: '黑色', - Block_user: '封鎖此用戶', - Browser: '瀏覽器', - Broadcast_channel_Description: '只有經過授權的使用者才能發送新訊息,但其他使用者可以回覆', - Broadcast_Channel: '廣播頻道', - Busy: '忙碌', - By_proceeding_you_are_agreeing: '若要繼續操作,請同意我們的', - Cancel_editing: '取消編輯', - Cancel_recording: '取消錄製', - Cancel: '取消', - changing_avatar: '更改大頭貼', - creating_channel: '新建頻道', - creating_invite: '建立邀請', - Channel_Name: '頻道名稱', - Channels: '頻道', - Chats: '聊天', - Call_already_ended: '通話已經結束!', - Clear_cookies_alert: '是否清除所有 cookies?', - Clear_cookies_desc: '本操作將清除所有登入 cookies,以登入其他帳號', - Clear_cookies_yes: '是,清除 cookies', - Clear_cookies_no: '否,保留 cookies', - Click_to_join: '點擊以參與', - Close: '關閉', - Close_emoji_selector: '關閉 emoji 選擇器', - Closing_chat: '結束聊天', - Change_language_loading: '切換語言', - Chat_closed_by_agent: '聊天已被客服關閉', - Choose: '選擇', - Choose_from_library: '從媒體庫選擇', - Choose_file: '選擇檔案', - Choose_where_you_want_links_be_opened: '請選擇您要將連結開啟在', - Code: '程式碼', - Code_or_password_invalid: '驗證碼或密碼不正確', - Collaborative: '協作', - Confirm: '確認', - Connect: '連接', - Connected: '已連接', - connecting_server: '連線至伺服器', - Connecting: '連接中', - Contact_us: '聯絡我們', - Contact_your_server_admin: '請聯絡系統管理員', - Continue_with: '繼續採用', - Copied_to_clipboard: '複製到剪貼簿', - Copy: '複製', - Conversation: '對話', - Permalink: '永久連結', - Certificate_password: '憑證密碼', - Clear_cache: '清除本機資料', - Clear_cache_loading: '清除快取', - Whats_the_password_for_your_certificate: '您的憑證密碼是?', - Create_account: '新建帳戶', - Create_Channel: '新建頻道', - Create_Direct_Messages: '新增私人訊息', - Create_Discussion: '新增討論區', - Created_snippet: '新增程式碼片段', - Create_a_new_workspace: '建立一個新的工作區', - Create: '建立', - Custom_Status: '自訂狀態', - Dark: '深色', - Dark_level: '深色程度', - Default: '預設', - Default_browser: '預設瀏覽器', - Delete_Room_Warning: '刪除聊天室將連帶刪除其中所有訊息。此操作將無法還原。', - Department: '部門', - delete: '刪除', - Delete: '刪除', - DELETE: '刪除', - deleting_room: '正在刪除聊天室', - description: '描述', - Description: '描述', - Desktop_Options: '桌面選項', - Desktop_Notifications: '桌面通知', - Desktop_Alert_info: '這些通知將發送至桌面', - Directory: '目錄', - Direct_Messages: '私訊', - Disable_notifications: '禁用訊息通知', - Discussions: '討論區', - Discussion_Desc: '幫助保持事態更新!透過建立討論,一個和所選頻道雙向關聯的子頻道將會被建立。', - Discussion_name: '討論區名稱', - Done: '完成', - Dont_Have_An_Account: '還未擁有帳號?', - Do_you_have_an_account: '是否擁有帳號?', - Do_you_have_a_certificate: '是否擁有憑證?', - Do_you_really_want_to_key_this_room_question_mark: '您真的想要{{key}}這個聊天室嗎?', - E2E_Encryption: 'E2E 加密', - E2E_How_It_Works_info1: '現在您可以建立加密私人群組和私訊。您也可以變更已存在的私人群組或是私訊來加密。', - E2E_How_It_Works_info2: '這是*點對點的加密*,所以用來加密/解密的金鑰將不會儲存到伺服器上。為此,*您必須安全存放您的密碼*。如果您希望在其他裝置上使用對點加密時,會需要輸入此密碼。', - E2E_How_It_Works_info3: '如果繼續,將自動產生一組 E2E 密碼', - E2E_How_It_Works_info4: '您也可以隨時從已輸入既有密碼的任何瀏覽器設定新密碼給您的加密金鑰。', - edit: '編輯', - edited: '已編輯', - Edit: '編輯', - Edit_Status: '編輯狀態', - Edit_Invite: '編輯邀請', - End_to_end_encrypted_room: 'E2E 加密聊天室', - end_to_end_encryption: 'E2E 加密', - Email_Notification_Mode_All: '每次被標記或私訊', - Email_Notification_Mode_Disabled: '禁用', - Email_or_password_field_is_empty: '電子郵件或密碼欄位為空', - Email: '電子郵件', - email: '電子郵件', - Empty_title: '空白標題', - Enable_Auto_Translate: '開啟自動翻譯', - Enable_notifications: '開啟訊息通知', - Encrypted: '已加密', - Encrypted_message: '加密訊息', - Enter_Your_E2E_Password: '輸入您的 E2E 密碼', - Enter_Your_Encryption_Password_desc1: '這將會允許您存取您的加密私人群組和私訊', - Enter_Your_Encryption_Password_desc2: '您需要在任何使用此聊天的平台輸入密碼,以加/解密您的訊息', - Encryption_error_title: '您的加密密碼似乎有誤', - Encryption_error_desc: '無法使用匯入的加密金鑰來解密', - Everyone_can_access_this_channel: '所有人皆可存取此頻道', - Error_uploading: '錯誤上傳', - Expiration_Days: '到期 (日)', - Favorite: '我的最愛', - Favorites: '我的最愛', - Files: '檔案', - File_description: '檔案描述', - File_name: '檔案名稱', - Finish_recording: '完成錄製', - Following_thread: '追蹤的討論串', - For_your_security_you_must_enter_your_current_password_to_continue: '為了您的安全,您必須重新輸入密碼才能繼續', - Forgot_password_If_this_email_is_registered: '如果此電子郵件已註冊,我們將發送有關如何重設密碼的說明。如果您未在短時間內收到電子郵件,請再試一次。', - Forgot_password: '忘記密碼', - Forgot_Password: '忘記密碼', - Forward: '轉發', - Forward_Chat: '轉發聊天', - Forward_to_department: '轉發到部門', - Forward_to_user: '轉發給使用者', - Full_table: '點擊以查看完整表格', - Generate_New_Link: '產生新的連結', - Group_by_favorites: '我的最愛優先', - Group_by_type: '以類型分組', - Hide: '隱藏', - Has_joined_the_channel: '已加入頻道', - Has_joined_the_conversation: '已經加入此對話', - Has_left_the_channel: '已離開頻道', - Hide_System_Messages: '隱藏系統訊息', - Hide_type_messages: '隱藏 \'{{type}}\' 訊息', - How_It_Works: '運作方式', - Message_HideType_uj: '隱藏“使用者加入”訊息', - Message_HideType_ul: '隱藏“使用者離開”訊息', - Message_HideType_ru: '隱藏“使用者已刪除”訊息', - Message_HideType_au: '隱藏“使用者已增加”訊息', - Message_HideType_mute_unmute: '隱藏“使用者靜音/取消靜音”訊息', - Message_HideType_r: '隱藏“聊天室名稱已更改”的訊息', - Message_HideType_ut: '隱藏“使用者已加入對話”的訊息', - Message_HideType_wm: '隱藏“歡迎”的訊息', - Message_HideType_rm: '隱藏“已刪除訊息”的訊息', - Message_HideType_subscription_role_added: '隱藏“已設置角色”的訊息', - Message_HideType_subscription_role_removed: '隱藏“不再定義的角色”的訊息', - Message_HideType_room_archived: '隱藏“聊天室已封存”的訊息', - Message_HideType_room_unarchived: '隱藏“聊天室未封存”的訊息', - I_Saved_My_E2E_Password: '儲存我的 E2E 密碼', - IP: 'IP', - In_app: 'App 內', - In_App_And_Desktop: 'App 內及桌面', - In_App_and_Desktop_Alert_info: '若 app 開啟時,會在螢幕上方顯示橫幅;顯示桌面通知', - Invisible: '隱身', - Invite: '邀請', - is_a_valid_RocketChat_instance: '是一個有效的 Rocket.Chat 實例', - is_not_a_valid_RocketChat_instance: '不是有效的 Rocket.Chat 實例', - is_typing: '正在輸入', - Invalid_or_expired_invite_token: '無效或到期的邀請 token', - Invalid_server_version: '此 App 版本已不支援您正在連線之伺服器版本。當前版本: {{currentVersion}}.\\n\\n最低版本要求: {{minVersion}}', - Join_your_workspace: '加入您的工作區', - Invite_Link: '邀請連結', - Invite_users: '邀請使用者', - Join: '加入', - Join_our_open_workspace: '加入開放工作區', - Just_invited_people_can_access_this_channel: '僅有受邀者能存取此頻道', - Language: '語言', - last_message: '最後一則訊息', - Leave_channel: '離開頻道', - leaving_room: '離開聊天室', - leave: '離開', - Legal: '合法', - Light: '淺色', - License: '授權條款', - Livechat: '即時聊天', - Livechat_edit: '即時聊天編輯', - Login: '登入', - Login_error: '認證失敗!請再試一次', - Login_with: '登入為', - Logging_out: '正在登出', - Logout: '登出', - Max_number_of_uses: '最大使用次數', - Max_number_of_users_allowed_is_number: '允許使用者上限數量', - members: '成員', - Members: '成員', - Mentioned_Messages: '被提及的訊息', - mentioned: '提到', - Mentions: '被提及', - Message_accessibility: '{{time}}來自{{user}}的訊息: {{message}}', - Message_actions: '訊息操作', - Message_pinned: '訊息被釘選', - Message_removed: '訊息被刪除', - Message_starred: '訊息被標註', - Message_unstarred: '訊息被取消標註', - message: '訊息', - messages: '訊息', - Message: '訊息', - Messages: '訊息', - Message_Reported: '訊息已檢舉', - Microphone_Permission_Message: 'Rocket.Chat 需要存取您的麥克風,以便發送聲音訊息。', - Microphone_Permission: '麥克風授權', - Mute: '靜音', - muted: '被靜音', - My_servers: '我的伺服器', - N_people_reacted: '{{n}} 人回复', - N_users: '{{n}} 位使用者', - name: '名稱', - Name: '名稱', - Navigation_history: '瀏覽歷史記錄', - Never: '從不', - New_Message: '新訊息', - New_Password: '新密碼', - New_Server: '新伺服器', - Next: '下一步', - No_files: '沒有檔案', - No_limit: '沒有限制', - No_mentioned_messages: '沒有被提及的訊息', - No_pinned_messages: '沒有釘選的訊息', - No_results_found: '沒有搜尋結果', - No_starred_messages: '沒有加標記的訊息', - No_thread_messages: '沒有討論串訊息', - No_label_provided: '沒有提供 {{label}}', - No_Message: '沒有訊息', - No_messages_yet: '當前未有訊息', - No_Reactions: '沒有表情貼', - No_Read_Receipts: '沒有已讀人員', - Not_logged: '沒有記錄', - Not_RC_Server: '這不是一個 Rocket.Chat server.\\n{{contact}}', - Nothing: '無', - Nothing_to_save: '沒有東西可儲存!', - Notify_active_in_this_room: '通知這個聊天室的活躍使用者', - Notify_all_in_this_room: '通知這個聊天室的所有人', - Notifications: '通知', - Notification_Duration: '通知持續時間', - Notification_Preferences: '通知偏好設定', - No_available_agents_to_transfer: '沒有可用的代理進行傳輸', - Offline: '離線', - Oops: '哎呀!', - Omnichannel: 'Omnichannel', - Open_Livechats: '打開即時聊天', - Omnichannel_enable_alert: '您尚未啟用 Omnichannel,是否想要啟用?', - Onboarding_description: '工作區是團隊或組織協作的空間。向工作區管理員詢問要加入的地址或為您的團隊創建一個。', - Onboarding_join_workspace: '加入一個工作區', - Onboarding_subtitle: '超越團隊合作', - Onboarding_title: '歡迎來到 Rocket.Chat', - Onboarding_join_open_description: '加入我們的開放工作區以與 Rocket.Chat 團隊及社群交談', - Onboarding_agree_terms: '繼續,即表示您同意 Rocket.Chat', - Onboarding_less_options: '較少選項', - Onboarding_more_options: '較多選項', - Online: '上線', - Only_authorized_users_can_write_new_messages: '只有經過授權的使用者才能寫新訊息', - Open_emoji_selector: '打開 emoji 選擇器', - Open_Source_Communication: '開源溝通', - Open_your_authentication_app_and_enter_the_code: '打開您的驗證應用程式並輸入代碼。您也可以使用其中一個備用代碼。', - OR: '或', - OS: '作業系統', - Overwrites_the_server_configuration_and_use_room_config: '覆寫伺服器設置和使用聊天室設置', - Password: '密碼', - Parent_channel_or_group: '父頻道或群組', - Permalink_copied_to_clipboard: '永久連結已複製到剪貼簿!', - Phone: '電話', - Pin: '釘選', - Pinned_Messages: '釘選訊息', - pinned: '已被釘選', - Pinned: '被釘選', - Please_add_a_comment: '請新增評論', - Please_enter_your_password: '請輸入密碼', - Please_wait: '請稍候', - Preferences: '偏好設定', - Preferences_saved: '偏好設定已被儲存!', - Privacy_Policy: '隱私政策', - Private_Channel: '私人頻道', - Private_Groups: '私人群組', - Private: '私有的', - Processing: '處理中', - Profile_saved_successfully: '個人資料儲存成功!', - Profile: '個人資料', - Public_Channel: '公共頻道', - Public: '公共', - Push_Notifications: '推送通知', - Push_Notifications_Alert_Info: '這些通知將在未開啟 App 時發送給您', - Quote: '引用', - Reactions_are_disabled: '表情貼被禁用', - Reactions_are_enabled: '表情貼被啟用', - Reactions: '表情貼', - Read: '讀取', - Read_External_Permission_Message: 'Rocket.Chat 需要存取您裝置上的相片、多媒體及檔案', - Read_External_Permission: '讀取媒體權限', - Read_Only_Channel: '唯讀頻道', - Read_Only: '唯讀', - Read_Receipt: '查看已讀人員', - Receive_Group_Mentions: '接收群組提及', - Receive_Group_Mentions_Info: '接收@all和@here提及', - Register: '註冊', - Repeat_Password: '重複輸入密碼', - Replied_on: '回覆在', - replies: '回覆', - reply: '回覆', - Reply: '回覆', - Report: '檢舉', - Receive_Notification: '接收通知', - Receive_notifications_from: '接收來自 {{name}} 的通知', - Resend: '重新發送', - Reset_password: '重置密碼', - resetting_password: '正在重置密碼', - RESET: '重置', - Return: '返回', - Review_app_title: '對此 App 滿意嗎?', - Review_app_desc: '請在 {{store}} 給予我們 5 星好評', - Review_app_yes: '沒問題', - Review_app_no: '婉拒', - Review_app_later: '之後再說', - Review_app_unable_store: '無法開啟 {{store}}', - Review_this_app: '評分此 App', - Remove: '移除', - Roles: '角色', - Room_actions: '聊天室操作', - Room_changed_announcement: '{{userBy}}將聊天室通知改為:{{announcement}}', - Room_changed_avatar: 'Room avatar changed by {{userBy}}', - Room_changed_description: '{{userBy}}將聊天室說明改為:{{description}}', - Room_changed_privacy: '{{userBy}}將聊天室類型改為:{{type}}', - Room_changed_topic: '{{userBy}}將聊天室主題改為:{{topic}}', - Room_Files: '聊天室檔案', - Room_Info_Edit: '修改聊天室資訊', - Room_Info: '聊天室資訊', - Room_Members: '聊天室成員', - Room_name_changed: '{{userBy}} 將聊天室名稱改為:{{{name}}', - SAVE: '儲存', - Save_Changes: '儲存更改', - Save: '儲存', - Saved: '保存', - saving_preferences: '儲存偏好設定', - saving_profile: '儲存配置文件', - saving_settings: '儲存設定', - saved_to_gallery: '儲存至圖片庫', - Save_Your_E2E_Password: '儲存您的 E2E 密碼', - Save_Your_Encryption_Password: '儲存您的加密密碼', - Save_Your_Encryption_Password_warning: '此密碼未被儲存在任何地方,為此您必須安全存放您的密碼', - Save_Your_Encryption_Password_info: '請記住,如果你遺失了您的密碼,您將無法存取您的訊息並不可恢復', - Search_Messages: '搜尋訊息', - Search: '搜尋', - Search_by: '搜尋', - Search_global_users: '搜尋全域使用者', - Search_global_users_description: '如果啟用,您將可以搜尋其他公司、伺服器上的任何使用者', - Seconds: '{{second}} 秒', - Security_and_privacy: '安全與隱私', - Select_Avatar: '選擇大頭貼', - Select_Server: '選擇伺服器', - Select_Users: '選擇使用者', - Select_a_Channel: '選擇一個頻道', - Select_a_Department: '選擇一個部門', - Select_an_option: '選擇一個選項', - Select_a_User: '選擇一個使用者', - Send: '發送', - Send_audio_message: '發送語音訊息', - Send_crash_report: '送出當機報告', - Send_message: '發送訊息', - Send_me_the_code_again: '再次發送代碼給我', - Send_to: '發送到', - Sending_to: '正發送到', - Sent_an_attachment: '發送附件', - Server: '伺服器', - Servers: '伺服器', - Server_version: '伺服器版本: {{version}}', - Set_username_subtitle: '使用者名稱是用來讓其他使用者在訊息中提到您', - Set_custom_status: '設定自訂狀態', - Set_status: '設定狀態', - Status_saved_successfully: '狀態儲存成功', - Settings: '設定', - Settings_succesfully_changed: '設定更改成功!', - Share: '分享', - Share_Link: '分享連結', - Share_this_app: '分享此 app', - Show_more: '顯示更多', - Show_Unread_Counter: '顯示未讀訊息數量', - Show_Unread_Counter_Info: '顯示未讀訊息數量資訊', - Sign_in_your_server: '登錄你的伺服器', - Sign_Up: '註冊', - Some_field_is_invalid_or_empty: '某些字段無效或為空', - Sorting_by: '以{{key}}排序', - Sound: '聲音', - Star_room: '標記聊天室', - Star: '標記', - Starred_Messages: '標記的訊息', - starred: '被標記', - Starred: '已標記', - Start_of_conversation: '開始對話', - Start_a_Discussion: '開始一個討論', - Started_discussion: '已開始的討論', - Started_call: '{{userBy}} 開始的通話', - Submit: '送出', - Table: '表格', - Tags: '標籤', - Take_a_photo: '拍照', - Take_a_video: '錄影', - Take_it: '拿去!', - tap_to_change_status: '點擊即可更改狀態', - Tap_to_view_servers_list: '點擊查看伺服器列表', - Terms_of_Service: '服務條款', - Theme: '佈景主題', - The_user_wont_be_able_to_type_in_roomName: '此使用者將無法在 {{roomName}} 中輸入', - The_user_will_be_able_to_type_in_roomName: '此使用者將可以在 {{roomName}} 中輸入', - There_was_an_error_while_action: '{{action}}出現錯誤!', - This_room_is_blocked: '這個聊天室已被鎖定', - This_room_is_read_only: '這個聊天室是唯讀的', - Thread: '討論串', - Threads: '討論串', - Timezone: '時區', - To: '到', - topic: '主題', - Topic: '主題', - Translate: '翻譯', - Try_again: '再試一次', - Two_Factor_Authentication: '雙重認證', - Type_the_channel_name_here: '在這裡輸入頻道名稱', - unarchive: '取消封存', - UNARCHIVE: '取消封存', - Unblock_user: '解除封鎖', - Unfavorite: '取消最愛', - Unfollowed_thread: '取消追蹤討論', - Unmute: '取消靜音', - unmuted: '靜音狀態', - Unpin: '取消釘選', - unread_messages: '未讀訊息', - Unread: '未讀', - Unread_on_top: '未讀優先', - Unstar: '取消標記', - Updating: '正在更新', - Uploading: '正在上傳', - Upload_file_question_mark: '上傳文件?', - User: '使用者', - Users: '使用者', - User_added_by: '由{{userBy}}添加的使用者 {{userAdded}}', - User_Info: '使用者資訊', - User_has_been_key: '使用者已被{{key}}', - User_is_no_longer_role_by_: '{{userBy}}將角色 {{role}} 從使用者 {{user}} 身上移除', - User_muted_by: '使用者 {{userMuted}} 被 {{userBy}} 靜音', - User_removed_by: '使用者 {{userRemoved}} 被 {{userBy}} 移除', - User_sent_an_attachment: '{{user}} 寄送了一個附件', - User_unmuted_by: '使用者 {{userUnmuted}} 被 {{userBy}} 取消靜音', - User_was_set_role_by_: '使用者 {{user}} 被 {{userBy}} 設置角色 {{role}}', - Username_is_empty: '使用者名稱是空的', - Username: '使用者名稱', - Username_or_email: '使用者名稱或電子郵件', - Uses_server_configuration: '使用伺服器設定', - Validating: '正在驗證', - Registration_Succeeded: '註冊成功', - Verify: '驗證', - Verify_email_title: '註冊成功', - Verify_email_desc: '我們已經送出一封電子郵件,以確認您的註冊。如果您沒有很快收到,請再試一次。', - Verify_your_email_for_the_code_we_sent: '檢查您的電子郵件以取得我們發送的代碼', - Video_call: '視訊通話', - View_Original: '檢視原文', - Voice_call: '語音通話', - Waiting_for_network: '等待網路連線', - Websocket_disabled: 'Websocket 已於此伺服器上禁用。\\n{{contact}}', - Welcome: '歡迎', - What_are_you_doing_right_now: '現在在做些什麼?', - Whats_your_2fa: '您的 2FA 代碼是?', - Without_Servers: '未連接至伺服器', - Workspaces: '工作區', - Would_you_like_to_return_the_inquiry: '你想回覆詢問嗎?', - Write_External_Permission_Message: 'Rocket.Chat 需要您圖片庫的存取權限以儲存圖片。', - Write_External_Permission: '圖片庫權限', - Yes: '是', - Yes_action_it: '是的,{{action}}它!', - Yesterday: '昨天', - You_are_in_preview_mode: '您處於預覽模式', - You_are_offline: '您處於離線狀態', - You_can_search_using_RegExp_eg: '您可用 RegExp 進行搜尋。例如`/^text$/i`', - You_colon: '你:', - you_were_mentioned: '你被提到了', - You_were_removed_from_channel: '您已從 {{channel}} 中被踢除', - you: '你', - You: '你', - Logged_out_by_server: '伺服器端已將你登出,請重新登入', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: '您需要至少連接一個 Rocket.Chat 伺服器才能共享某些内容。', - You_need_to_verifiy_your_email_address_to_get_notications: '您需要先驗證您的電子郵件以啟用通知', - Your_certificate: '你的證書', - Your_invite_link_will_expire_after__usesLeft__uses: '您的邀請連結將在{{usesLeft}}使用後到期。', - Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: '您的邀請連結將於{{date}}或{{usesLeft}}使用後到期。', - Your_invite_link_will_expire_on__date__: '您的邀請連結將於{{date}}到期。', - Your_invite_link_will_never_expire: '您的邀請連結永久有效。', - Your_workspace: '您的工作區', - Your_password_is: '您的密碼', - Version_no: '版本: {{version}}', - You_will_not_be_able_to_recover_this_message: '您將無法恢復此訊息!', - You_will_unset_a_certificate_for_this_server: '您將取消此伺服器的憑證設定', - Change_Language: '切換語言', - Crash_report_disclaimer: '我們絕不記錄您的聊天內容。 崩潰報告和分析事件僅與 Rocket.Chat 有關,以便識別和修復問題。', - Type_message: '輸入訊息', - Room_search: '搜索聊天室', - Room_selection: '選擇房間(輸入 1...9)', - Next_room: '下一個聊天室', - Previous_room: '上一個聊天室', - New_room: '新聊天室', - Upload_room: '上傳至聊天室', - Search_messages: '搜尋訊息', - Scroll_messages: '訊息滾動', - Reply_latest: '回覆最新訊息', - Reply_in_Thread: '討論串回覆', - Server_selection: '選擇伺服器', - Server_selection_numbers: '選擇伺服器(輸入 1...9)', - Add_server: '新增伺服器', - New_line: '新的一行', - You_will_be_logged_out_of_this_application: '您即將登出', - Clear: '清除', - This_will_clear_all_your_offline_data: '這將清除您的所有離線資料。', - This_will_remove_all_data_from_this_server: '這將從此伺服器中刪除所有資料。', - Mark_unread: '標記未讀', - Wait_activation_warning: '您的帳號必須由管理員手動啟用後才能登入。', - Screen_lock: '螢幕鎖定', - Local_authentication_biometry_title: '驗證', - Local_authentication_biometry_fallback: '使用通關密碼', - Local_authentication_unlock_option: '以通關密碼解鎖', - Local_authentication_change_passcode: '變更通關密碼', - Local_authentication_info: '註: 如果您忘記了通關密碼,將需要移除並重新安裝此 App', - Local_authentication_facial_recognition: '臉部辨識', - Local_authentication_fingerprint: '指紋辨識', - Local_authentication_unlock_with_label: '以 {{label}} 解鎖', - Local_authentication_auto_lock_60: '1分鐘後', - Local_authentication_auto_lock_300: '5分鐘後', - Local_authentication_auto_lock_900: '15分鐘後', - Local_authentication_auto_lock_1800: '半小時後', - Local_authentication_auto_lock_3600: '一小時後', - Passcode_enter_title: '請輸入通關密碼', - Passcode_choose_title: '請輸入新通關密碼', - Passcode_choose_confirm_title: '請確認新通關密碼', - Passcode_choose_error: '不正確的通關密碼,請再試一次', - Passcode_choose_force_set: '管理員設定必填', - Passcode_app_locked_title: 'App 已鎖定', - Passcode_app_locked_subtitle: '{{timeLeft}} 秒後再進行嘗試', - After_seconds_set_by_admin: '{{seconds}} 秒 (管理員設定)', - Dont_activate: '現在不要啟用', - Queued_chats: '聊天佇列', - Queue_is_empty: '佇列是空的', - Logout_from_other_logged_in_locations: '登出其他已登入的設備', - You_will_be_logged_out_from_other_locations: '您將於其他設備上登出', - Logged_out_of_other_clients_successfully: '成功登出其他用戶端', - Logout_failed: '登出失敗', - Log_analytics_events: '日誌分析事件', - E2E_encryption_change_password_title: '變更加密密碼', - E2E_encryption_change_password_description: '現在您可以建立加密私人群組和私訊。您也可以變更已存在的私人群組或是私訊來加密。\\n\\n這是點對點的加密,所以用來加密/解密的金鑰將不會儲存到伺服器上。為此,您必須安全存放您的密碼。如果您希望在其他裝置上使用對點加密時,將會需要輸入此密碼。', - E2E_encryption_change_password_error: '變更 E2E 密碼時發生錯誤!', - E2E_encryption_change_password_success: 'E2E 密碼已成功變更!', - E2E_encryption_change_password_message: '請確定您已將其安全存放至別處', - E2E_encryption_change_password_confirmation: '是,我要變更', - E2E_encryption_reset_title: '重設 E2E 金鑰', - E2E_encryption_reset_description: '此選項將撤銷您目前的*E2E 金鑰*並將您登出。\\n當您再次登入時,Rocket.Chat 將產生新的一組金鑰並恢復您對任一有在線成員的加密聊天室之存取權限。\\n由於 E2E 加密的特性,Rocket.Chat 無法恢復無在線成員之聊天室之存取權限。', - E2E_encryption_reset_button: '重設', - E2E_encryption_reset_error: '重設 E2E 金鑰時發生錯誤!', - E2E_encryption_reset_message: '您將被登出', - E2E_encryption_reset_confirmation: '是,我要重設', - Following: '正在追蹤', - Threads_displaying_all: '顯示全部', - Threads_displaying_following: '顯示追蹤中', - Threads_displaying_unread: '顯示未讀', - No_threads: '當前沒有討論串', - No_threads_following: '當前沒有正在追蹤的討論', - No_threads_unread: '當前沒有未讀的討論', - Messagebox_Send_to_channel: '發送至頻道' -}; diff --git a/app/i18n/locales/zh-TW.json b/app/i18n/locales/zh-TW.json new file mode 100644 index 00000000000..271e56418f5 --- /dev/null +++ b/app/i18n/locales/zh-TW.json @@ -0,0 +1,682 @@ +{ + "1_person_reacted": "1 人回覆了", + "1_user": "1 位使用者", + "error-action-not-allowed": "{{action}} 不允許", + "error-application-not-found": "找不到應用程式", + "error-archived-duplicate-name": "已有一個名為「{{room_name}}」的封存頻道", + "error-avatar-invalid-url": "無效的大頭貼網址:{{url}}", + "error-avatar-url-handling": "錯誤,無法將 {{username}} 的大頭貼設置為URL({{url}})", + "error-cant-invite-for-direct-room": "無法邀請使用者進入私訊", + "error-could-not-change-email": "無法更改電子郵件", + "error-could-not-change-name": "無法更改名稱", + "error-could-not-change-username": "無法更改使用者名稱", + "error-could-not-change-status": "無法更改狀態", + "error-delete-protected-role": "無法刪除受保護的角色", + "error-department-not-found": "找不到部門", + "error-direct-message-file-upload-not-allowed": "私人對話中不允許檔案分享", + "error-duplicate-channel-name": "名為「{{channel_name}}」的頻道已存在", + "error-email-domain-blacklisted": "電子郵件網域被禁用", + "error-email-send-failed": "嘗試發送電子郵件時出錯:{{message}}", + "error-save-image": "錯誤,無法儲存圖片", + "error-save-video": "錯誤,無法儲存影片", + "error-field-unavailable": "{{field}} 已被使用 :(", + "error-file-too-large": "檔案太大", + "error-importer-not-defined": "沒有正確定義,它缺少匯入類型", + "error-input-is-not-a-valid-field": "{{input}}不是有效的{{field}}", + "error-invalid-actionlink": "無效的操作連結", + "error-invalid-arguments": "無效的參數", + "error-invalid-asset": "無效的資源", + "error-invalid-channel": "無效的頻道", + "error-invalid-channel-start-with-chars": "無效的頻道,請以 @ 或 # 開頭", + "error-invalid-custom-field": "無效的自訂欄位", + "error-invalid-custom-field-name": "無效的自訂欄位名稱。只能包含字母、數字、連字符(-)及下底線(_).", + "error-invalid-date": "無效的日期", + "error-invalid-description": "無效的描述", + "error-invalid-domain": "無效的域名", + "error-invalid-email": "無效的電子郵件{{email}}", + "error-invalid-email-address": "無效的郵件地址", + "error-invalid-file-height": "無效的檔案高度", + "error-invalid-file-type": "無效的檔案類型", + "error-invalid-file-width": "無效的檔案寬度", + "error-invalid-from-address": "無效的地址", + "error-invalid-integration": "無效的整合", + "error-invalid-message": "無效的訊息", + "error-invalid-method": "無效的方法", + "error-invalid-name": "無效的名稱", + "error-invalid-password": "無效的密碼", + "error-invalid-redirectUri": "無效的轉址", + "error-invalid-role": "無效的角色", + "error-invalid-room": "無效的聊天室", + "error-invalid-room-name": "{{room_name}} 不是一個有效的聊天室名稱", + "error-invalid-room-type": "{{type}} 不是有效的聊天室類型", + "error-invalid-settings": "無效的設置", + "error-invalid-subscription": "無效的訂閱", + "error-invalid-token": "無效的 token", + "error-invalid-triggerWords": "無效的關鍵字", + "error-invalid-urls": "無效的網址", + "error-invalid-user": "無效的使用者", + "error-invalid-username": "無效的使用者名稱", + "error-invalid-webhook-response": "webhook 網址以200以外的狀態響應", + "error-message-deleting-blocked": "訊息刪除已停用", + "error-message-editing-blocked": "訊息編輯已停用", + "error-message-size-exceeded": "訊息大小超出上限", + "error-missing-unsubscribe-link": "您必須提供[取消訂閱]連結。", + "error-no-tokens-for-this-user": "這名使用者沒有Token", + "error-not-allowed": "不允許", + "error-not-authorized": "未授權", + "error-push-disabled": "推播已停用", + "error-remove-last-owner": "這是最後的擁有者。請在刪除此人之前設置一個新的擁有者。", + "error-role-in-use": "無法刪除正在使用中的角色", + "error-role-name-required": "角色名稱是必須的", + "error-the-field-is-required": "字段 {{field}} 是必須的。", + "error-too-many-requests": "錯誤,請求過多。請稍候{{seconds}}秒後再進行嘗試。", + "error-user-is-not-activated": "使用者尚未啟用", + "error-user-has-no-roles": "使用者尚未設定角色", + "error-user-limit-exceeded": "嘗試邀請到 #channel_name 的使用者數量超過了管理員設置的限制", + "error-user-not-in-room": "使用者不在這個聊天室", + "error-user-registration-custom-field": "無效的自訂註冊欄位", + "error-user-registration-disabled": "使用者註冊已停用", + "error-user-registration-secret": "只能透過加密網址進行使用者註冊", + "error-you-are-last-owner": "您是最後的擁有者。請刪除此人之前設置一個新的擁有者。", + "Actions": "操作", + "activity": "活動時間", + "Activity": "以活動時間排序", + "Add_Reaction": "增加表情貼", + "Add_Server": "新增伺服器", + "Add_users": "新增使用者", + "Admin_Panel": "管理者面板", + "Agent": "代理", + "Alert": "警報", + "alert": "警報", + "alerts": "警報", + "All_users_in_the_channel_can_write_new_messages": "頻道中的所有使用者都可以發送新訊息", + "A_meaningful_name_for_the_discussion_room": "取一個有意義的討論區名稱", + "All": "所有", + "All_Messages": "全部訊息", + "Allow_Reactions": "允許表情貼", + "Alphabetical": "以名稱排序", + "and_more": "和更多的", + "and": "和", + "announcement": "公告", + "Announcement": "公告", + "Apply_Your_Certificate": "使用自己的憑證", + "ARCHIVE": "封存", + "archive": "封存", + "are_typing": "正在輸入", + "Are_you_sure_question_mark": "你確定嗎?", + "Are_you_sure_you_want_to_leave_the_room": "你確定要離開聊天室 {{room}} 嗎?", + "Audio": "音訊", + "Authenticating": "正在驗證身份", + "Automatic": "自動", + "Auto_Translate": "自動翻譯", + "Avatar_changed_successfully": "大頭貼更新成功!", + "Avatar_Url": "大頭貼地址", + "Away": "離開", + "Back": "返回", + "Black": "黑色", + "Block_user": "封鎖此用戶", + "Browser": "瀏覽器", + "Broadcast_channel_Description": "只有經過授權的使用者才能發送新訊息,但其他使用者可以回覆", + "Broadcast_Channel": "廣播頻道", + "Busy": "忙碌", + "By_proceeding_you_are_agreeing": "若要繼續操作,請同意我們的", + "Cancel_editing": "取消編輯", + "Cancel_recording": "取消錄製", + "Cancel": "取消", + "changing_avatar": "更改大頭貼", + "creating_channel": "新建頻道", + "creating_invite": "建立邀請", + "Channel_Name": "頻道名稱", + "Channels": "頻道", + "Chats": "聊天", + "Call_already_ended": "通話已經結束!", + "Clear_cookies_alert": "是否清除所有 cookies?", + "Clear_cookies_desc": "本操作將清除所有登入 cookies,以登入其他帳號", + "Clear_cookies_yes": "是,清除 cookies", + "Clear_cookies_no": "否,保留 cookies", + "Click_to_join": "點擊以參與", + "Close": "關閉", + "Close_emoji_selector": "關閉 emoji 選擇器", + "Closing_chat": "結束聊天", + "Change_language_loading": "切換語言", + "Chat_closed_by_agent": "聊天已被客服關閉", + "Choose": "選擇", + "Choose_from_library": "從媒體庫選擇", + "Choose_file": "選擇檔案", + "Choose_where_you_want_links_be_opened": "請選擇您要將連結開啟在", + "Code": "程式碼", + "Code_or_password_invalid": "驗證碼或密碼不正確", + "Collaborative": "協作", + "Confirm": "確認", + "Connect": "連接", + "Connected": "已連接", + "connecting_server": "連線至伺服器", + "Connecting": "連接中", + "Contact_us": "聯絡我們", + "Contact_your_server_admin": "請聯絡系統管理員", + "Continue_with": "繼續採用", + "Copied_to_clipboard": "複製到剪貼簿", + "Copy": "複製", + "Conversation": "對話", + "Permalink": "永久連結", + "Certificate_password": "憑證密碼", + "Clear_cache": "清除本機資料", + "Clear_cache_loading": "清除快取", + "Whats_the_password_for_your_certificate": "您的憑證密碼是?", + "Create_account": "新建帳戶", + "Create_Channel": "新建頻道", + "Create_Direct_Messages": "新增私人訊息", + "Create_Discussion": "新增討論區", + "Created_snippet": "新增程式碼片段", + "Create_a_new_workspace": "建立一個新的工作區", + "Create": "建立", + "Custom_Status": "自訂狀態", + "Dark": "深色", + "Dark_level": "深色程度", + "Default": "預設", + "Default_browser": "預設瀏覽器", + "Delete_Room_Warning": "刪除聊天室將連帶刪除其中所有訊息。此操作將無法還原。", + "Department": "部門", + "delete": "刪除", + "Delete": "刪除", + "DELETE": "刪除", + "deleting_room": "正在刪除聊天室", + "description": "描述", + "Description": "描述", + "Desktop_Options": "桌面選項", + "Desktop_Notifications": "桌面通知", + "Desktop_Alert_info": "這些通知將發送至桌面", + "Directory": "目錄", + "Direct_Messages": "私訊", + "Disable_notifications": "禁用訊息通知", + "Discussions": "討論區", + "Discussion_Desc": "幫助保持事態更新!透過建立討論,一個和所選頻道雙向關聯的子頻道將會被建立。", + "Discussion_name": "討論區名稱", + "Done": "完成", + "Dont_Have_An_Account": "還未擁有帳號?", + "Do_you_have_an_account": "是否擁有帳號?", + "Do_you_have_a_certificate": "是否擁有憑證?", + "Do_you_really_want_to_key_this_room_question_mark": "您真的想要{{key}}這個聊天室嗎?", + "E2E_Encryption": "E2E 加密", + "E2E_How_It_Works_info1": "現在您可以建立加密私人群組和私訊。您也可以變更已存在的私人群組或是私訊來加密。", + "E2E_How_It_Works_info2": "這是*點對點的加密*,所以用來加密/解密的金鑰將不會儲存到伺服器上。為此,*您必須安全存放您的密碼*。如果您希望在其他裝置上使用對點加密時,會需要輸入此密碼。", + "E2E_How_It_Works_info3": "如果繼續,將自動產生一組 E2E 密碼", + "E2E_How_It_Works_info4": "您也可以隨時從已輸入既有密碼的任何瀏覽器設定新密碼給您的加密金鑰。", + "edit": "編輯", + "edited": "已編輯", + "Edit": "編輯", + "Edit_Status": "編輯狀態", + "Edit_Invite": "編輯邀請", + "End_to_end_encrypted_room": "E2E 加密聊天室", + "end_to_end_encryption": "E2E 加密", + "Email_Notification_Mode_All": "每次被標記或私訊", + "Email_Notification_Mode_Disabled": "禁用", + "Email_or_password_field_is_empty": "電子郵件或密碼欄位為空", + "Email": "電子郵件", + "email": "電子郵件", + "Empty_title": "空白標題", + "Enable_Auto_Translate": "開啟自動翻譯", + "Enable_notifications": "開啟訊息通知", + "Encrypted": "已加密", + "Encrypted_message": "加密訊息", + "Enter_Your_E2E_Password": "輸入您的 E2E 密碼", + "Enter_Your_Encryption_Password_desc1": "這將會允許您存取您的加密私人群組和私訊", + "Enter_Your_Encryption_Password_desc2": "您需要在任何使用此聊天的平台輸入密碼,以加/解密您的訊息", + "Encryption_error_title": "您的加密密碼似乎有誤", + "Encryption_error_desc": "無法使用匯入的加密金鑰來解密", + "Everyone_can_access_this_channel": "所有人皆可存取此頻道", + "Error_uploading": "錯誤上傳", + "Expiration_Days": "到期 (日)", + "Favorite": "我的最愛", + "Favorites": "我的最愛", + "Files": "檔案", + "File_description": "檔案描述", + "File_name": "檔案名稱", + "Finish_recording": "完成錄製", + "Following_thread": "追蹤的討論串", + "For_your_security_you_must_enter_your_current_password_to_continue": "為了您的安全,您必須重新輸入密碼才能繼續", + "Forgot_password_If_this_email_is_registered": "如果此電子郵件已註冊,我們將發送有關如何重設密碼的說明。如果您未在短時間內收到電子郵件,請再試一次。", + "Forgot_password": "忘記密碼", + "Forgot_Password": "忘記密碼", + "Forward": "轉發", + "Forward_Chat": "轉發聊天", + "Forward_to_department": "轉發到部門", + "Forward_to_user": "轉發給使用者", + "Full_table": "點擊以查看完整表格", + "Generate_New_Link": "產生新的連結", + "Group_by_favorites": "我的最愛優先", + "Group_by_type": "以類型分組", + "Hide": "隱藏", + "Has_joined_the_channel": "已加入頻道", + "Has_joined_the_conversation": "已經加入此對話", + "Has_left_the_channel": "已離開頻道", + "Hide_System_Messages": "隱藏系統訊息", + "Hide_type_messages": "隱藏 '{{type}}' 訊息", + "How_It_Works": "運作方式", + "Message_HideType_uj": "隱藏“使用者加入”訊息", + "Message_HideType_ul": "隱藏“使用者離開”訊息", + "Message_HideType_ru": "隱藏“使用者已刪除”訊息", + "Message_HideType_au": "隱藏“使用者已增加”訊息", + "Message_HideType_mute_unmute": "隱藏“使用者靜音/取消靜音”訊息", + "Message_HideType_r": "隱藏“聊天室名稱已更改”的訊息", + "Message_HideType_ut": "隱藏“使用者已加入對話”的訊息", + "Message_HideType_wm": "隱藏“歡迎”的訊息", + "Message_HideType_rm": "隱藏“已刪除訊息”的訊息", + "Message_HideType_subscription_role_added": "隱藏“已設置角色”的訊息", + "Message_HideType_subscription_role_removed": "隱藏“不再定義的角色”的訊息", + "Message_HideType_room_archived": "隱藏“聊天室已封存”的訊息", + "Message_HideType_room_unarchived": "隱藏“聊天室未封存”的訊息", + "I_Saved_My_E2E_Password": "儲存我的 E2E 密碼", + "IP": "IP", + "In_app": "App 內", + "In_App_And_Desktop": "App 內及桌面", + "In_App_and_Desktop_Alert_info": "若 app 開啟時,會在螢幕上方顯示橫幅;顯示桌面通知", + "Invisible": "隱身", + "Invite": "邀請", + "is_a_valid_RocketChat_instance": "是一個有效的 Rocket.Chat 實例", + "is_not_a_valid_RocketChat_instance": "不是有效的 Rocket.Chat 實例", + "is_typing": "正在輸入", + "Invalid_or_expired_invite_token": "無效或到期的邀請 token", + "Invalid_server_version": "此 App 版本已不支援您正在連線之伺服器版本。當前版本: {{currentVersion}}.\\n\\n最低版本要求: {{minVersion}}", + "Join_your_workspace": "加入您的工作區", + "Invite_Link": "邀請連結", + "Invite_users": "邀請使用者", + "Join": "加入", + "Join_our_open_workspace": "加入開放工作區", + "Just_invited_people_can_access_this_channel": "僅有受邀者能存取此頻道", + "Language": "語言", + "last_message": "最後一則訊息", + "Leave_channel": "離開頻道", + "leaving_room": "離開聊天室", + "leave": "離開", + "Legal": "合法", + "Light": "淺色", + "License": "授權條款", + "Livechat": "即時聊天", + "Livechat_edit": "即時聊天編輯", + "Login": "登入", + "Login_error": "認證失敗!請再試一次", + "Login_with": "登入為", + "Logging_out": "正在登出", + "Logout": "登出", + "Max_number_of_uses": "最大使用次數", + "Max_number_of_users_allowed_is_number": "允許使用者上限數量", + "members": "成員", + "Members": "成員", + "Mentioned_Messages": "被提及的訊息", + "mentioned": "提到", + "Mentions": "被提及", + "Message_accessibility": "{{time}}來自{{user}}的訊息: {{message}}", + "Message_actions": "訊息操作", + "Message_pinned": "訊息被釘選", + "Message_removed": "訊息被刪除", + "Message_starred": "訊息被標註", + "Message_unstarred": "訊息被取消標註", + "message": "訊息", + "messages": "訊息", + "Message": "訊息", + "Messages": "訊息", + "Message_Reported": "訊息已檢舉", + "Microphone_Permission_Message": "Rocket.Chat 需要存取您的麥克風,以便發送聲音訊息。", + "Microphone_Permission": "麥克風授權", + "Mute": "靜音", + "muted": "被靜音", + "My_servers": "我的伺服器", + "N_people_reacted": "{{n}} 人回复", + "N_users": "{{n}} 位使用者", + "name": "名稱", + "Name": "名稱", + "Navigation_history": "瀏覽歷史記錄", + "Never": "從不", + "New_Message": "新訊息", + "New_Password": "新密碼", + "New_Server": "新伺服器", + "Next": "下一步", + "No_files": "沒有檔案", + "No_limit": "沒有限制", + "No_mentioned_messages": "沒有被提及的訊息", + "No_pinned_messages": "沒有釘選的訊息", + "No_results_found": "沒有搜尋結果", + "No_starred_messages": "沒有加標記的訊息", + "No_thread_messages": "沒有討論串訊息", + "No_label_provided": "沒有提供 {{label}}", + "No_Message": "沒有訊息", + "No_messages_yet": "當前未有訊息", + "No_Reactions": "沒有表情貼", + "No_Read_Receipts": "沒有已讀人員", + "Not_logged": "沒有記錄", + "Not_RC_Server": "這不是一個 Rocket.Chat server.\\n{{contact}}", + "Nothing": "無", + "Nothing_to_save": "沒有東西可儲存!", + "Notify_active_in_this_room": "通知這個聊天室的活躍使用者", + "Notify_all_in_this_room": "通知這個聊天室的所有人", + "Notifications": "通知", + "Notification_Duration": "通知持續時間", + "Notification_Preferences": "通知偏好設定", + "No_available_agents_to_transfer": "沒有可用的代理進行傳輸", + "Offline": "離線", + "Oops": "哎呀!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "打開即時聊天", + "Omnichannel_enable_alert": "您尚未啟用 Omnichannel,是否想要啟用?", + "Onboarding_description": "工作區是團隊或組織協作的空間。向工作區管理員詢問要加入的地址或為您的團隊創建一個。", + "Onboarding_join_workspace": "加入一個工作區", + "Onboarding_subtitle": "超越團隊合作", + "Onboarding_title": "歡迎來到 Rocket.Chat", + "Onboarding_join_open_description": "加入我們的開放工作區以與 Rocket.Chat 團隊及社群交談", + "Onboarding_agree_terms": "繼續,即表示您同意 Rocket.Chat", + "Onboarding_less_options": "較少選項", + "Onboarding_more_options": "較多選項", + "Online": "上線", + "Only_authorized_users_can_write_new_messages": "只有經過授權的使用者才能寫新訊息", + "Open_emoji_selector": "打開 emoji 選擇器", + "Open_Source_Communication": "開源溝通", + "Open_your_authentication_app_and_enter_the_code": "打開您的驗證應用程式並輸入代碼。您也可以使用其中一個備用代碼。", + "OR": "或", + "OS": "作業系統", + "Overwrites_the_server_configuration_and_use_room_config": "覆寫伺服器設置和使用聊天室設置", + "Password": "密碼", + "Parent_channel_or_group": "父頻道或群組", + "Permalink_copied_to_clipboard": "永久連結已複製到剪貼簿!", + "Phone": "電話", + "Pin": "釘選", + "Pinned_Messages": "釘選訊息", + "pinned": "已被釘選", + "Pinned": "被釘選", + "Please_add_a_comment": "請新增評論", + "Please_enter_your_password": "請輸入密碼", + "Please_wait": "請稍候", + "Preferences": "偏好設定", + "Preferences_saved": "偏好設定已被儲存!", + "Privacy_Policy": "隱私政策", + "Private_Channel": "私人頻道", + "Private_Groups": "私人群組", + "Private": "私有的", + "Processing": "處理中", + "Profile_saved_successfully": "個人資料儲存成功!", + "Profile": "個人資料", + "Public_Channel": "公共頻道", + "Public": "公共", + "Push_Notifications": "推送通知", + "Push_Notifications_Alert_Info": "這些通知將在未開啟 App 時發送給您", + "Quote": "引用", + "Reactions_are_disabled": "表情貼被禁用", + "Reactions_are_enabled": "表情貼被啟用", + "Reactions": "表情貼", + "Read": "讀取", + "Read_External_Permission_Message": "Rocket.Chat 需要存取您裝置上的相片、多媒體及檔案", + "Read_External_Permission": "讀取媒體權限", + "Read_Only_Channel": "唯讀頻道", + "Read_Only": "唯讀", + "Read_Receipt": "查看已讀人員", + "Receive_Group_Mentions": "接收群組提及", + "Receive_Group_Mentions_Info": "接收@all和@here提及", + "Register": "註冊", + "Repeat_Password": "重複輸入密碼", + "Replied_on": "回覆在", + "replies": "回覆", + "reply": "回覆", + "Reply": "回覆", + "Report": "檢舉", + "Receive_Notification": "接收通知", + "Receive_notifications_from": "接收來自 {{name}} 的通知", + "Resend": "重新發送", + "Reset_password": "重置密碼", + "resetting_password": "正在重置密碼", + "RESET": "重置", + "Return": "返回", + "Review_app_title": "對此 App 滿意嗎?", + "Review_app_desc": "請在 {{store}} 給予我們 5 星好評", + "Review_app_yes": "沒問題", + "Review_app_no": "婉拒", + "Review_app_later": "之後再說", + "Review_app_unable_store": "無法開啟 {{store}}", + "Review_this_app": "評分此 App", + "Remove": "移除", + "Roles": "角色", + "Room_actions": "聊天室操作", + "Room_changed_announcement": "{{userBy}}將聊天室通知改為:{{announcement}}", + "Room_changed_avatar": "Room avatar changed by {{userBy}}", + "Room_changed_description": "{{userBy}}將聊天室說明改為:{{description}}", + "Room_changed_privacy": "{{userBy}}將聊天室類型改為:{{type}}", + "Room_changed_topic": "{{userBy}}將聊天室主題改為:{{topic}}", + "Room_Files": "聊天室檔案", + "Room_Info_Edit": "修改聊天室資訊", + "Room_Info": "聊天室資訊", + "Room_Members": "聊天室成員", + "Room_name_changed": "{{userBy}} 將聊天室名稱改為:{{{name}}", + "SAVE": "儲存", + "Save_Changes": "儲存更改", + "Save": "儲存", + "Saved": "保存", + "saving_preferences": "儲存偏好設定", + "saving_profile": "儲存配置文件", + "saving_settings": "儲存設定", + "saved_to_gallery": "儲存至圖片庫", + "Save_Your_E2E_Password": "儲存您的 E2E 密碼", + "Save_Your_Encryption_Password": "儲存您的加密密碼", + "Save_Your_Encryption_Password_warning": "此密碼未被儲存在任何地方,為此您必須安全存放您的密碼", + "Save_Your_Encryption_Password_info": "請記住,如果你遺失了您的密碼,您將無法存取您的訊息並不可恢復", + "Search_Messages": "搜尋訊息", + "Search": "搜尋", + "Search_by": "搜尋", + "Search_global_users": "搜尋全域使用者", + "Search_global_users_description": "如果啟用,您將可以搜尋其他公司、伺服器上的任何使用者", + "Seconds": "{{second}} 秒", + "Security_and_privacy": "安全與隱私", + "Select_Avatar": "選擇大頭貼", + "Select_Server": "選擇伺服器", + "Select_Users": "選擇使用者", + "Select_a_Channel": "選擇一個頻道", + "Select_a_Department": "選擇一個部門", + "Select_an_option": "選擇一個選項", + "Select_a_User": "選擇一個使用者", + "Send": "發送", + "Send_audio_message": "發送語音訊息", + "Send_crash_report": "送出當機報告", + "Send_message": "發送訊息", + "Send_me_the_code_again": "再次發送代碼給我", + "Send_to": "發送到", + "Sending_to": "正發送到", + "Sent_an_attachment": "發送附件", + "Server": "伺服器", + "Servers": "伺服器", + "Server_version": "伺服器版本: {{version}}", + "Set_username_subtitle": "使用者名稱是用來讓其他使用者在訊息中提到您", + "Set_custom_status": "設定自訂狀態", + "Set_status": "設定狀態", + "Status_saved_successfully": "狀態儲存成功", + "Settings": "設定", + "Settings_succesfully_changed": "設定更改成功!", + "Share": "分享", + "Share_Link": "分享連結", + "Share_this_app": "分享此 app", + "Show_more": "顯示更多", + "Show_Unread_Counter": "顯示未讀訊息數量", + "Show_Unread_Counter_Info": "顯示未讀訊息數量資訊", + "Sign_in_your_server": "登錄你的伺服器", + "Sign_Up": "註冊", + "Some_field_is_invalid_or_empty": "某些字段無效或為空", + "Sorting_by": "以{{key}}排序", + "Sound": "聲音", + "Star_room": "標記聊天室", + "Star": "標記", + "Starred_Messages": "標記的訊息", + "starred": "被標記", + "Starred": "已標記", + "Start_of_conversation": "開始對話", + "Start_a_Discussion": "開始一個討論", + "Started_discussion": "已開始的討論", + "Started_call": "{{userBy}} 開始的通話", + "Submit": "送出", + "Table": "表格", + "Tags": "標籤", + "Take_a_photo": "拍照", + "Take_a_video": "錄影", + "Take_it": "拿去!", + "tap_to_change_status": "點擊即可更改狀態", + "Tap_to_view_servers_list": "點擊查看伺服器列表", + "Terms_of_Service": "服務條款", + "Theme": "佈景主題", + "The_user_wont_be_able_to_type_in_roomName": "此使用者將無法在 {{roomName}} 中輸入", + "The_user_will_be_able_to_type_in_roomName": "此使用者將可以在 {{roomName}} 中輸入", + "There_was_an_error_while_action": "{{action}}出現錯誤!", + "This_room_is_blocked": "這個聊天室已被鎖定", + "This_room_is_read_only": "這個聊天室是唯讀的", + "Thread": "討論串", + "Threads": "討論串", + "Timezone": "時區", + "To": "到", + "topic": "主題", + "Topic": "主題", + "Translate": "翻譯", + "Try_again": "再試一次", + "Two_Factor_Authentication": "雙重認證", + "Type_the_channel_name_here": "在這裡輸入頻道名稱", + "unarchive": "取消封存", + "UNARCHIVE": "取消封存", + "Unblock_user": "解除封鎖", + "Unfavorite": "取消最愛", + "Unfollowed_thread": "取消追蹤討論", + "Unmute": "取消靜音", + "unmuted": "靜音狀態", + "Unpin": "取消釘選", + "unread_messages": "未讀訊息", + "Unread": "未讀", + "Unread_on_top": "未讀優先", + "Unstar": "取消標記", + "Updating": "正在更新", + "Uploading": "正在上傳", + "Upload_file_question_mark": "上傳文件?", + "User": "使用者", + "Users": "使用者", + "User_added_by": "由{{userBy}}添加的使用者 {{userAdded}}", + "User_Info": "使用者資訊", + "User_has_been_key": "使用者已被{{key}}", + "User_is_no_longer_role_by_": "{{userBy}}將角色 {{role}} 從使用者 {{user}} 身上移除", + "User_muted_by": "使用者 {{userMuted}} 被 {{userBy}} 靜音", + "User_removed_by": "使用者 {{userRemoved}} 被 {{userBy}} 移除", + "User_sent_an_attachment": "{{user}} 寄送了一個附件", + "User_unmuted_by": "使用者 {{userUnmuted}} 被 {{userBy}} 取消靜音", + "User_was_set_role_by_": "使用者 {{user}} 被 {{userBy}} 設置角色 {{role}}", + "Username_is_empty": "使用者名稱是空的", + "Username": "使用者名稱", + "Username_or_email": "使用者名稱或電子郵件", + "Uses_server_configuration": "使用伺服器設定", + "Validating": "正在驗證", + "Registration_Succeeded": "註冊成功", + "Verify": "驗證", + "Verify_email_title": "註冊成功", + "Verify_email_desc": "我們已經送出一封電子郵件,以確認您的註冊。如果您沒有很快收到,請再試一次。", + "Verify_your_email_for_the_code_we_sent": "檢查您的電子郵件以取得我們發送的代碼", + "Video_call": "視訊通話", + "View_Original": "檢視原文", + "Voice_call": "語音通話", + "Waiting_for_network": "等待網路連線", + "Websocket_disabled": "Websocket 已於此伺服器上禁用。\\n{{contact}}", + "Welcome": "歡迎", + "What_are_you_doing_right_now": "現在在做些什麼?", + "Whats_your_2fa": "您的 2FA 代碼是?", + "Without_Servers": "未連接至伺服器", + "Workspaces": "工作區", + "Would_you_like_to_return_the_inquiry": "你想回覆詢問嗎?", + "Write_External_Permission_Message": "Rocket.Chat 需要您圖片庫的存取權限以儲存圖片。", + "Write_External_Permission": "圖片庫權限", + "Yes": "是", + "Yes_action_it": "是的,{{action}}它!", + "Yesterday": "昨天", + "You_are_in_preview_mode": "您處於預覽模式", + "You_are_offline": "您處於離線狀態", + "You_can_search_using_RegExp_eg": "您可用 RegExp 進行搜尋。例如`/^text$/i`", + "You_colon": "你:", + "you_were_mentioned": "你被提到了", + "You_were_removed_from_channel": "您已從 {{channel}} 中被踢除", + "you": "你", + "You": "你", + "Logged_out_by_server": "伺服器端已將你登出,請重新登入", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "您需要至少連接一個 Rocket.Chat 伺服器才能共享某些内容。", + "You_need_to_verifiy_your_email_address_to_get_notications": "您需要先驗證您的電子郵件以啟用通知", + "Your_certificate": "你的證書", + "Your_invite_link_will_expire_after__usesLeft__uses": "您的邀請連結將在{{usesLeft}}使用後到期。", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "您的邀請連結將於{{date}}或{{usesLeft}}使用後到期。", + "Your_invite_link_will_expire_on__date__": "您的邀請連結將於{{date}}到期。", + "Your_invite_link_will_never_expire": "您的邀請連結永久有效。", + "Your_workspace": "您的工作區", + "Your_password_is": "您的密碼", + "Version_no": "版本: {{version}}", + "You_will_not_be_able_to_recover_this_message": "您將無法恢復此訊息!", + "You_will_unset_a_certificate_for_this_server": "您將取消此伺服器的憑證設定", + "Change_Language": "切換語言", + "Crash_report_disclaimer": "我們絕不記錄您的聊天內容。 崩潰報告和分析事件僅與 Rocket.Chat 有關,以便識別和修復問題。", + "Type_message": "輸入訊息", + "Room_search": "搜索聊天室", + "Room_selection": "選擇房間(輸入 1...9)", + "Next_room": "下一個聊天室", + "Previous_room": "上一個聊天室", + "New_room": "新聊天室", + "Upload_room": "上傳至聊天室", + "Search_messages": "搜尋訊息", + "Scroll_messages": "訊息滾動", + "Reply_latest": "回覆最新訊息", + "Reply_in_Thread": "討論串回覆", + "Server_selection": "選擇伺服器", + "Server_selection_numbers": "選擇伺服器(輸入 1...9)", + "Add_server": "新增伺服器", + "New_line": "新的一行", + "You_will_be_logged_out_of_this_application": "您即將登出", + "Clear": "清除", + "This_will_clear_all_your_offline_data": "這將清除您的所有離線資料。", + "This_will_remove_all_data_from_this_server": "這將從此伺服器中刪除所有資料。", + "Mark_unread": "標記未讀", + "Wait_activation_warning": "您的帳號必須由管理員手動啟用後才能登入。", + "Screen_lock": "螢幕鎖定", + "Local_authentication_biometry_title": "驗證", + "Local_authentication_biometry_fallback": "使用通關密碼", + "Local_authentication_unlock_option": "以通關密碼解鎖", + "Local_authentication_change_passcode": "變更通關密碼", + "Local_authentication_info": "註: 如果您忘記了通關密碼,將需要移除並重新安裝此 App", + "Local_authentication_facial_recognition": "臉部辨識", + "Local_authentication_fingerprint": "指紋辨識", + "Local_authentication_unlock_with_label": "以 {{label}} 解鎖", + "Local_authentication_auto_lock_60": "1分鐘後", + "Local_authentication_auto_lock_300": "5分鐘後", + "Local_authentication_auto_lock_900": "15分鐘後", + "Local_authentication_auto_lock_1800": "半小時後", + "Local_authentication_auto_lock_3600": "一小時後", + "Passcode_enter_title": "請輸入通關密碼", + "Passcode_choose_title": "請輸入新通關密碼", + "Passcode_choose_confirm_title": "請確認新通關密碼", + "Passcode_choose_error": "不正確的通關密碼,請再試一次", + "Passcode_choose_force_set": "管理員設定必填", + "Passcode_app_locked_title": "App 已鎖定", + "Passcode_app_locked_subtitle": "{{timeLeft}} 秒後再進行嘗試", + "After_seconds_set_by_admin": "{{seconds}} 秒 (管理員設定)", + "Dont_activate": "現在不要啟用", + "Queued_chats": "聊天佇列", + "Queue_is_empty": "佇列是空的", + "Logout_from_other_logged_in_locations": "登出其他已登入的設備", + "You_will_be_logged_out_from_other_locations": "您將於其他設備上登出", + "Logged_out_of_other_clients_successfully": "成功登出其他用戶端", + "Logout_failed": "登出失敗", + "Log_analytics_events": "日誌分析事件", + "E2E_encryption_change_password_title": "變更加密密碼", + "E2E_encryption_change_password_description": "現在您可以建立加密私人群組和私訊。您也可以變更已存在的私人群組或是私訊來加密。\\n\\n這是點對點的加密,所以用來加密/解密的金鑰將不會儲存到伺服器上。為此,您必須安全存放您的密碼。如果您希望在其他裝置上使用對點加密時,將會需要輸入此密碼。", + "E2E_encryption_change_password_error": "變更 E2E 密碼時發生錯誤!", + "E2E_encryption_change_password_success": "E2E 密碼已成功變更!", + "E2E_encryption_change_password_message": "請確定您已將其安全存放至別處", + "E2E_encryption_change_password_confirmation": "是,我要變更", + "E2E_encryption_reset_title": "重設 E2E 金鑰", + "E2E_encryption_reset_description": "此選項將撤銷您目前的*E2E 金鑰*並將您登出。\\n當您再次登入時,Rocket.Chat 將產生新的一組金鑰並恢復您對任一有在線成員的加密聊天室之存取權限。\\n由於 E2E 加密的特性,Rocket.Chat 無法恢復無在線成員之聊天室之存取權限。", + "E2E_encryption_reset_button": "重設", + "E2E_encryption_reset_error": "重設 E2E 金鑰時發生錯誤!", + "E2E_encryption_reset_message": "您將被登出", + "E2E_encryption_reset_confirmation": "是,我要重設", + "Following": "正在追蹤", + "Threads_displaying_all": "顯示全部", + "Threads_displaying_following": "顯示追蹤中", + "Threads_displaying_unread": "顯示未讀", + "No_threads": "當前沒有討論串", + "No_threads_following": "當前沒有正在追蹤的討論", + "No_threads_unread": "當前沒有未讀的討論", + "Messagebox_Send_to_channel": "發送至頻道" +} \ No newline at end of file From ed181aa863ced21327d4742305ec648b862b8c2c Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 1 Apr 2021 09:38:16 -0300 Subject: [PATCH 082/177] [IMPROVEMENT] Load only i18n files needed (#3014) * Use json * Load only i18n files needed --- app/i18n/index.js | 64 +++++++++++++++++++++++++++++----------------- app/sagas/login.js | 18 +++---------- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/app/i18n/index.js b/app/i18n/index.js index ae4846ee6f3..6ac163a0dff 100644 --- a/app/i18n/index.js +++ b/app/i18n/index.js @@ -1,66 +1,71 @@ import i18n from 'i18n-js'; import { I18nManager } from 'react-native'; import * as RNLocalize from 'react-native-localize'; +import moment from 'moment'; +import 'moment/min/locales'; -export * from './isRTL'; +import { toMomentLocale } from '../utils/moment'; +import { isRTL } from './isRTL'; + +export { isRTL }; export const LANGUAGES = [ { label: 'English', value: 'en', - file: require('./locales/en.json') + file: () => require('./locales/en.json') }, { label: '简体中文', value: 'zh-CN', - file: require('./locales/zh-CN.json') + file: () => require('./locales/zh-CN.json') }, { label: '繁體中文', value: 'zh-TW', - file: require('./locales/zh-TW.json') + file: () => require('./locales/zh-TW.json') }, { label: 'Deutsch', value: 'de', - file: require('./locales/de.json') + file: () => require('./locales/de.json') }, { label: 'Español (ES)', value: 'es-ES', - file: require('./locales/es-ES.json') + file: () => require('./locales/es-ES.json') }, { label: 'Français', value: 'fr', - file: require('./locales/fr.json') + file: () => require('./locales/fr.json') }, { label: 'Português (BR)', value: 'pt-BR', - file: require('./locales/pt-BR.json') + file: () => require('./locales/pt-BR.json') }, { label: 'Português (PT)', value: 'pt-PT', - file: require('./locales/pt-PT.json') + file: () => require('./locales/pt-PT.json') }, { label: 'Russian', value: 'ru', - file: require('./locales/ru.json') + file: () => require('./locales/ru.json') }, { label: 'Nederlands', value: 'nl', - file: require('./locales/nl.json') + file: () => require('./locales/nl.json') }, { label: 'Italiano', value: 'it', - file: require('./locales/it.json') + file: () => require('./locales/it.json') }, { label: '日本語', value: 'ja', - file: require('./locales/ja.json') + file: () => require('./locales/ja.json') }, { label: 'العربية', value: 'ar', - file: require('./locales/ar.json') + file: () => require('./locales/ar.json') }, { label: 'Türkçe', value: 'tr', - file: require('./locales/tr.json') + file: () => require('./locales/tr.json') } ]; @@ -69,16 +74,29 @@ const translations = LANGUAGES.reduce((ret, item) => { return ret; }, {}); -i18n.translations = translations; -i18n.fallbacks = true; +export const setLanguage = (l) => { + if (!l) { + return; + } + // server uses lowercase pattern (pt-br), but we're forced to use standard pattern (pt-BR) + const locale = LANGUAGES.find(ll => ll.value.toLowerCase() === l.toLowerCase())?.value; + // don't go forward if it's the same language and default language (en) was setup already + if (i18n.locale === locale && i18n.translations?.en) { + return; + } + i18n.locale = locale; + i18n.translations = { ...i18n.translations, [locale]: translations[locale]() }; + I18nManager.forceRTL(isRTL(locale)); + I18nManager.swapLeftAndRightInRTL(isRTL(locale)); + i18n.isRTL = I18nManager.isRTL; + moment.locale(toMomentLocale(locale)); +}; const defaultLanguage = { languageTag: 'en', isRTL: false }; -const availableLanguages = Object.keys(i18n.translations); -const { languageTag, isRTL } = RNLocalize.findBestAvailableLanguage(availableLanguages) || defaultLanguage; +const availableLanguages = Object.keys(translations); +const { languageTag } = RNLocalize.findBestAvailableLanguage(availableLanguages) || defaultLanguage; -I18nManager.forceRTL(isRTL); -I18nManager.swapLeftAndRightInRTL(isRTL); -i18n.locale = languageTag; -i18n.isRTL = I18nManager.isRTL; +setLanguage(languageTag); +i18n.fallbacks = true; export default i18n; diff --git a/app/sagas/login.js b/app/sagas/login.js index 7673e9a6f53..77eda761156 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -2,11 +2,7 @@ import { put, call, takeLatest, select, take, fork, cancel, race, delay } from 'redux-saga/effects'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; -import moment from 'moment'; -import 'moment/min/locales'; import { Q } from '@nozbe/watermelondb'; -import { I18nManager } from 'react-native'; - import * as types from '../actions/actionsTypes'; import { appStart, ROOT_SET_USERNAME, ROOT_INSIDE, ROOT_LOADING, ROOT_OUTSIDE @@ -16,10 +12,9 @@ import { loginFailure, loginSuccess, setUser, logout } from '../actions/login'; import { roomsRequest } from '../actions/rooms'; -import { toMomentLocale } from '../utils/moment'; import RocketChat from '../lib/rocketchat'; import log, { logEvent, events } from '../utils/log'; -import I18n, { LANGUAGES, isRTL } from '../i18n'; +import I18n, { setLanguage } from '../i18n'; import database from '../lib/database'; import EventEmitter from '../utils/events'; import { inviteLinksRequest } from '../actions/inviteLinks'; @@ -140,8 +135,7 @@ const handleLoginSuccess = function* handleLoginSuccess({ user }) { yield fork(fetchEnterpriseModules, { user }); yield put(encryptionInit()); - I18n.locale = user.language; - moment.locale(toMomentLocale(user.language)); + setLanguage(user?.language); const serversDB = database.servers; const usersCollection = serversDB.get('users'); @@ -246,13 +240,7 @@ const handleLogout = function* handleLogout({ forcedByServer }) { }; const handleSetUser = function* handleSetUser({ user }) { - if (user && user.language) { - const locale = LANGUAGES.find(l => l.value.toLowerCase() === user.language)?.value || user.language; - I18n.locale = locale; - I18nManager.forceRTL(isRTL(locale)); - I18nManager.swapLeftAndRightInRTL(isRTL(locale)); - moment.locale(toMomentLocale(locale)); - } + setLanguage(user?.language); if (user && user.status) { const userId = yield select(state => state.login.user.id); From bb844e52fb3839c6f04538a64f68fb33793fc88e Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 1 Apr 2021 09:58:20 -0300 Subject: [PATCH 083/177] [REGRESSION] Clear local server cache not loading rooms (#3007) * Fix clear cache * Write e2e tests * Fix lint * Fix isRTL --- app/lib/rocketchat.js | 7 +++-- app/presentation/RoomItem/Actions.js | 4 +-- app/presentation/RoomItem/Touchable.js | 20 +++++++------- app/views/SettingsView/index.js | 5 ++-- e2e/tests/assorted/04-setting.spec.js | 38 ++++++++++---------------- 5 files changed, 34 insertions(+), 40 deletions(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index d559ab726f6..262983923d5 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -178,13 +178,16 @@ const RocketChat = { checkAndReopen() { return this?.sdk?.checkAndReopen(); }, + disconnect() { + this.sdk?.disconnect?.(); + this.sdk = null; + }, connect({ server, user, logoutOnError = false }) { return new Promise((resolve) => { if (this?.sdk?.client?.host === server) { return resolve(); } else { - this.sdk?.disconnect?.(); - this.sdk = null; + this.disconnect(); database.setActiveDB(server); } reduxStore.dispatch(connectRequest()); diff --git a/app/presentation/RoomItem/Actions.js b/app/presentation/RoomItem/Actions.js index b24fd0016f3..4a557d20ea7 100644 --- a/app/presentation/RoomItem/Actions.js +++ b/app/presentation/RoomItem/Actions.js @@ -3,12 +3,12 @@ import { Animated, View, Text } from 'react-native'; import { RectButton } from 'react-native-gesture-handler'; import PropTypes from 'prop-types'; -import I18n from '../../i18n'; +import I18n, { isRTL } from '../../i18n'; import styles, { ACTION_WIDTH, LONG_SWIPE } from './styles'; import { CustomIcon } from '../../lib/Icons'; import { themes } from '../../constants/colors'; -const reverse = new Animated.Value(I18n.isRTL ? -1 : 1); +const reverse = new Animated.Value(isRTL() ? -1 : 1); export const LeftActions = React.memo(({ theme, transX, isRead, width, onToggleReadPress diff --git a/app/presentation/RoomItem/Touchable.js b/app/presentation/RoomItem/Touchable.js index 37b45639dca..defb5e105e1 100644 --- a/app/presentation/RoomItem/Touchable.js +++ b/app/presentation/RoomItem/Touchable.js @@ -9,7 +9,7 @@ import { SMALL_SWIPE, LONG_SWIPE } from './styles'; -import I18n from '../../i18n'; +import { isRTL } from '../../i18n'; import { themes } from '../../constants/colors'; import { LeftActions, RightActions } from './Actions'; @@ -35,7 +35,7 @@ class Touchable extends React.Component { super(props); this.dragX = new Animated.Value(0); this.rowOffSet = new Animated.Value(0); - this.reverse = new Animated.Value(I18n.isRTL ? -1 : 1); + this.reverse = new Animated.Value(isRTL() ? -1 : 1); this.transX = Animated.add( this.rowOffSet, this.dragX @@ -69,7 +69,7 @@ class Touchable extends React.Component { if (rowState === 0) { // if no option is opened if (translationX > 0 && translationX < LONG_SWIPE) { // open leading option if he swipe right but not enough to trigger action - if (I18n.isRTL) { + if (isRTL()) { toValue = 2 * ACTION_WIDTH; } else { toValue = ACTION_WIDTH; @@ -77,14 +77,14 @@ class Touchable extends React.Component { this.setState({ rowState: -1 }); } else if (translationX >= LONG_SWIPE) { toValue = 0; - if (I18n.isRTL) { + if (isRTL()) { this.hideChannel(); } else { this.toggleRead(); } } else if (translationX < 0 && translationX > -LONG_SWIPE) { // open trailing option if he swipe left - if (I18n.isRTL) { + if (isRTL()) { toValue = -ACTION_WIDTH; } else { toValue = -2 * ACTION_WIDTH; @@ -93,7 +93,7 @@ class Touchable extends React.Component { } else if (translationX <= -LONG_SWIPE) { toValue = 0; this.setState({ rowState: 0 }); - if (I18n.isRTL) { + if (isRTL()) { this.toggleRead(); } else { this.hideChannel(); @@ -110,12 +110,12 @@ class Touchable extends React.Component { } else if (this._value > LONG_SWIPE) { toValue = 0; this.setState({ rowState: 0 }); - if (I18n.isRTL) { + if (isRTL()) { this.hideChannel(); } else { this.toggleRead(); } - } else if (I18n.isRTL) { + } else if (isRTL()) { toValue = 2 * ACTION_WIDTH; } else { toValue = ACTION_WIDTH; @@ -129,12 +129,12 @@ class Touchable extends React.Component { } else if (this._value < -LONG_SWIPE) { toValue = 0; this.setState({ rowState: 0 }); - if (I18n.isRTL) { + if (isRTL()) { this.toggleRead(); } else { this.hideChannel(); } - } else if (I18n.isRTL) { + } else if (isRTL()) { toValue = -ACTION_WIDTH; } else { toValue = -2 * ACTION_WIDTH; diff --git a/app/views/SettingsView/index.js b/app/views/SettingsView/index.js index b67c7f1ea62..55687cf0f5b 100644 --- a/app/views/SettingsView/index.js +++ b/app/views/SettingsView/index.js @@ -109,7 +109,8 @@ class SettingsView extends React.Component { await RocketChat.clearCache({ server }); await FastImage.clearMemoryCache(); await FastImage.clearDiskCache(); - selectServerRequest(server, null, true); + RocketChat.disconnect(); + selectServerRequest(server); } }); } @@ -285,7 +286,7 @@ class SettingsView extends React.Component { <List.Separator /> <List.Item title='Clear_cache' - testID='settings-clear-cache' + testID='settings-view-clear-cache' onPress={this.handleClearCache} showActionIndicator color={themes[theme].dangerColor} diff --git a/e2e/tests/assorted/04-setting.spec.js b/e2e/tests/assorted/04-setting.spec.js index ea9e64d0bdd..419d377d25e 100644 --- a/e2e/tests/assorted/04-setting.spec.js +++ b/e2e/tests/assorted/04-setting.spec.js @@ -1,7 +1,7 @@ const { device, expect, element, by, waitFor } = require('detox'); -const { navigateToLogin, login } = require('../../helpers/app'); +const { navigateToLogin, login, tapBack } = require('../../helpers/app'); const data = require('../../data'); @@ -18,7 +18,6 @@ describe('Settings screen', () => { await waitFor(element(by.id('sidebar-settings'))).toBeVisible().withTimeout(2000); await element(by.id('sidebar-settings')).tap(); await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); - }); describe('Render', async() => { @@ -63,7 +62,7 @@ describe('Settings screen', () => { }); }); - describe('Language', async() => { + describe('Usage', async() => { it('should navigate to language view', async() => { await element(by.id('settings-view-language')).tap(); await waitFor(element(by.id('language-view'))).toBeVisible().withTimeout(60000); @@ -74,27 +73,18 @@ describe('Settings screen', () => { await expect(element(by.id('language-view-pt-BR'))).toExist(); await expect(element(by.id('language-view-pt-PT'))).toExist(); await expect(element(by.id('language-view-ru'))).toExist(); + await tapBack(); }); - - // it('should navigate to change language', async() => { - // await expect(element(by.id('language-view-zh-CN'))).toExist(); - // await element(by.id('language-view-zh-CN')).tap() - // await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); - // await expect(element(by.id('rooms-list-view'))).toBeVisible(); - // await element(by.id('rooms-list-view-sidebar')).tap(); - // await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); - // await waitFor(element(by.text('设置'))).toBeVisible().withTimeout(2000); - // await element(by.text('设置')).tap(); - // await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); - // await element(by.id('settings-view-language')).tap(); - // await element(by.id('language-view-en')).tap(); - // await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); - // await expect(element(by.id('rooms-list-view'))).toBeVisible(); - // await element(by.id('rooms-list-view-sidebar')).tap(); - // await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); - // await expect(element(by.text('Settings'))).toBeVisible(); - // await element(by.text('Settings')).tap(); - // await expect(element(by.id('settings-view'))).toBeVisible(); - // }); + + it('should tap clear cache and navigate to roomslistview', async() => { + await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); + await element(by.id('settings-view-clear-cache')).tap(); + await waitFor(element(by.text('This will clear all your offline data.'))).toExist().withTimeout(2000); + await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); + // Database was cleared, so the room shouldn't be there anymore while it's fetched again from the server + await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toNotExist().withTimeout(10000); + await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toExist().withTimeout(10000); + }) }); }); From 31d3594c2ce081d9d3408a5435aafbe6b4eee816 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 1 Apr 2021 10:29:21 -0300 Subject: [PATCH 084/177] [FIX] Custom OAuth and iframe login attempts being called multiple times (#3020) --- app/views/AuthenticationWebView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/AuthenticationWebView.js b/app/views/AuthenticationWebView.js index 24e0639aeec..b21c85bba87 100644 --- a/app/views/AuthenticationWebView.js +++ b/app/views/AuthenticationWebView.js @@ -125,7 +125,7 @@ class AuthenticationWebView extends React.PureComponent { if (this.oauthRedirectRegex.test(url)) { const parts = url.split('#'); const credentials = JSON.parse(parts[1]); - this.login({ oauth: { ...credentials } }); + this.debouncedLogin({ oauth: { ...credentials } }); } } @@ -138,7 +138,7 @@ class AuthenticationWebView extends React.PureComponent { this.tryLogin(); break; case 'login-with-token': - this.login({ resume: credentials.token || credentials.loginToken }); + this.debouncedLogin({ resume: credentials.token || credentials.loginToken }); break; default: // Do nothing From 656127aaabb1a174c33b7dab2d6cc8005842ddf7 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 1 Apr 2021 10:32:03 -0300 Subject: [PATCH 085/177] [FIX] App crashing when attachment color is an invalid HEX (#3021) --- .../__snapshots__/Storyshots.test.js.snap | 79 +++++++++++++++++++ app/containers/message/Reply.js | 13 ++- storybook/stories/Message.js | 6 ++ 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 8b698bc0880..ae844bbb573 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -41357,6 +41357,85 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 4, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <View + style={ + Object { + "flex": 1, + "flexDirection": "row", + "flexWrap": "wrap", + } + } + > + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "50%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Invalid color + </Text> + </View> + </View> + </View> + </View> </View> </View> </View> diff --git a/app/containers/message/Reply.js b/app/containers/message/Reply.js index caa80039a7c..698eec945e2 100644 --- a/app/containers/message/Reply.js +++ b/app/containers/message/Reply.js @@ -158,6 +158,16 @@ const Reply = React.memo(({ openLink(url, theme); }; + let { borderColor, chatComponentBackground: backgroundColor } = themes[theme]; + try { + if (attachment.color) { + backgroundColor = transparentize(attachment.color, 0.80); + borderColor = attachment.color; + } + } catch (e) { + // fallback to default + } + return ( <> <Touchable @@ -167,8 +177,7 @@ const Reply = React.memo(({ index > 0 && styles.marginTop, attachment.description && styles.marginBottom, { - backgroundColor: attachment.color ? transparentize(attachment.color, 0.80) : themes[theme].chatComponentBackground, - borderColor: attachment.color || themes[theme].borderColor + backgroundColor, borderColor } ]} background={Touchable.Ripple(themes[theme].bannerBackground)} diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index ac5181d8c8d..e4dbf6e2577 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -775,6 +775,12 @@ export default ({ theme }) => { value: 'Value 2', short: true }] + }, { + color: 'ASDASD', + fields: [{ + title: 'Invalid color', + short: true + }] }]} /> From 0ff916dc50d7d668c2ab1f56e8cf530dcdb2633b Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 1 Apr 2021 21:54:39 +0800 Subject: [PATCH 086/177] [IMPROVEMENT] Add "Message" option to Room Info (#3029) * [CHORE] Go to room from hashtag * Layout tweaks Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomInfoView/index.js | 10 ++++++---- app/views/RoomInfoView/styles.js | 9 +++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index 30187fdb351..5966f312dab 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -306,7 +306,9 @@ class RoomInfoView extends React.Component { const onActionPress = async() => { try { - await this.createDirect(); + if (this.isDirect) { + await this.createDirect(); + } onPress(); } catch { EventEmitter.emit(LISTENER, { message: I18n.t('error-action-not-allowed', { action: I18n.t('Create_Direct_Messages') }) }); @@ -333,7 +335,7 @@ class RoomInfoView extends React.Component { return ( <View style={styles.roomButtonsContainer}> {this.renderButton(this.goRoom, 'message', I18n.t('Message'))} - {jitsiEnabled ? this.renderButton(this.videoCall, 'camera', I18n.t('Video_call')) : null} + {jitsiEnabled && this.isDirect ? this.renderButton(this.videoCall, 'camera', I18n.t('Video_call')) : null} </View> ); } @@ -360,10 +362,10 @@ class RoomInfoView extends React.Component { style={{ backgroundColor: themes[theme].backgroundColor }} testID='room-info-view' > - <View style={[styles.avatarContainer, this.isDirect && styles.avatarContainerDirectRoom, { backgroundColor: themes[theme].auxiliaryBackground }]}> + <View style={[styles.avatarContainer, { backgroundColor: themes[theme].auxiliaryBackground }]}> {this.renderAvatar(room, roomUser)} <View style={styles.roomTitleContainer}>{ getRoomTitle(room, this.t, roomUser?.name, roomUser?.username, roomUser?.statusText, theme) }</View> - {this.isDirect ? this.renderButtons() : null} + {this.renderButtons()} </View> {this.renderContent()} </SafeAreaView> diff --git a/app/views/RoomInfoView/styles.js b/app/views/RoomInfoView/styles.js index 5ba307b6537..4c626a81cba 100644 --- a/app/views/RoomInfoView/styles.js +++ b/app/views/RoomInfoView/styles.js @@ -16,15 +16,12 @@ export default StyleSheet.create({ justifyContent: 'center' }, avatarContainer: { - minHeight: 240, + minHeight: 320, flexDirection: 'column', alignItems: 'center', justifyContent: 'center', - marginBottom: 20 - }, - avatarContainerDirectRoom: { - paddingVertical: 16, - minHeight: 320 + marginBottom: 20, + paddingVertical: 8 }, avatar: { marginHorizontal: 10 From 8f0eae7a25fcc37c362575b1d76c6252f10f2b3b Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 1 Apr 2021 22:00:20 +0800 Subject: [PATCH 087/177] [FIX] Can't change status (#3018) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/StatusView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/StatusView.js b/app/views/StatusView.js index cd71ff379e7..f703b8e0afa 100644 --- a/app/views/StatusView.js +++ b/app/views/StatusView.js @@ -65,7 +65,7 @@ class StatusView extends React.Component { super(props); const { statusText } = props.user; - this.state = { statusText, loading: false }; + this.state = { statusText: statusText || '', loading: false }; this.setHeader(); } From 632751898c34168acc1162a6de053226c64daee7 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 1 Apr 2021 22:09:02 +0800 Subject: [PATCH 088/177] [FIX] Search input not using the whole header space (#3012) * [FIX] Search input not using the whole space * Fix on getHeaderTitlePosition Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/Header/index.js | 2 +- app/views/RoomsListView/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/containers/Header/index.js b/app/containers/Header/index.js index ca734c6edc1..4663c7d4341 100644 --- a/app/containers/Header/index.js +++ b/app/containers/Header/index.js @@ -23,7 +23,7 @@ export const getHeaderHeight = (isLandscape) => { export const getHeaderTitlePosition = ({ insets, numIconsRight }) => ({ left: insets.left + 60, - right: insets.right + (45 * numIconsRight) + right: insets.right + Math.max(45 * numIconsRight, 15) }); const styles = StyleSheet.create({ diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 2c634cf52a2..a0b3984e6c6 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -319,7 +319,7 @@ class RoomsListView extends React.Component { getHeader = () => { const { searching } = this.state; const { navigation, isMasterDetail, insets } = this.props; - const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight: 3 }); + const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight: searching ? 0 : 3 }); return { headerTitleAlign: 'left', headerLeft: () => (searching ? ( From 704e07127560b54206539e78fe6b7209c7fa85ab Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 2 Apr 2021 03:27:46 +0800 Subject: [PATCH 089/177] [FIX] E2EE password hiding automatically (#2972) * [FIX] E2EE password hiding automatically * add e2e test * fixed hiding banner * move e2e tests to 01-e2eencryption * remove console.log * Fix tests Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/sagas/encryption.js | 3 +- e2e/data.js | 16 +++++- e2e/data/data.cloud.js | 10 ++++ e2e/data/data.docker.js | 10 ++++ e2e/tests/assorted/01-e2eencryption.spec.js | 64 ++++++++++++++++++++- e2e/tests/assorted/07-changeserver.spec.js | 8 +-- e2e/tests/assorted/10-deleteserver.spec.js | 8 +-- 7 files changed, 106 insertions(+), 13 deletions(-) diff --git a/app/sagas/encryption.js b/app/sagas/encryption.js index 395923a431e..842cd7a6a38 100644 --- a/app/sagas/encryption.js +++ b/app/sagas/encryption.js @@ -69,7 +69,8 @@ const handleEncryptionInit = function* handleEncryptionInit() { storedPublicKey = EJSON.parse(storedPublicKey); } - if (storedPublicKey && storedPrivateKey) { + + if (storedPublicKey && storedPrivateKey && !storedRandomPassword) { // Persist these keys yield Encryption.persistKeys(server, storedPublicKey, storedPrivateKey); yield put(encryptionSet(true)); diff --git a/e2e/data.js b/e2e/data.js index f1dbd1bf65b..77f9f82c055 100644 --- a/e2e/data.js +++ b/e2e/data.js @@ -1,9 +1,9 @@ const random = require('./helpers/random'); const value = random(20); const data = { - server: 'https://mobile.rocket.chat', - adminUser: 'e2e_admin', - adminPassword: 'p7mFh4yLwCRXSnMvG', + server: 'http://localhost:3000', + adminUser: 'admin', + adminPassword: 'password', alternateServer: 'https://stable.rocket.chat', users: { regular: { @@ -47,6 +47,16 @@ const data = { password: `password${ value }`, email: `mobile+registering${ value }@rocket.chat` }, + registeringUser2: { + username: `newusertwo${ value }`, + password: `passwordtwo${ value }`, + email: `mobile+registeringtwo${ value }@rocket.chat` + }, + registeringUser3: { + username: `newuserthree${ value }`, + password: `passwordthree${ value }`, + email: `mobile+registeringthree${ value }@rocket.chat` + }, random: value } module.exports = data; diff --git a/e2e/data/data.cloud.js b/e2e/data/data.cloud.js index f1dbd1bf65b..381d939f10d 100644 --- a/e2e/data/data.cloud.js +++ b/e2e/data/data.cloud.js @@ -47,6 +47,16 @@ const data = { password: `password${ value }`, email: `mobile+registering${ value }@rocket.chat` }, + registeringUser2: { + username: `newusertwo${ value }`, + password: `passwordtwo${ value }`, + email: `mobile+registeringtwo${ value }@rocket.chat` + }, + registeringUser3: { + username: `newuserthree${ value }`, + password: `passwordthree${ value }`, + email: `mobile+registeringthree${ value }@rocket.chat` + }, random: value } module.exports = data; diff --git a/e2e/data/data.docker.js b/e2e/data/data.docker.js index a5d56af56ed..77f9f82c055 100644 --- a/e2e/data/data.docker.js +++ b/e2e/data/data.docker.js @@ -47,6 +47,16 @@ const data = { password: `password${ value }`, email: `mobile+registering${ value }@rocket.chat` }, + registeringUser2: { + username: `newusertwo${ value }`, + password: `passwordtwo${ value }`, + email: `mobile+registeringtwo${ value }@rocket.chat` + }, + registeringUser3: { + username: `newuserthree${ value }`, + password: `passwordthree${ value }`, + email: `mobile+registeringthree${ value }@rocket.chat` + }, random: value } module.exports = data; diff --git a/e2e/tests/assorted/01-e2eencryption.spec.js b/e2e/tests/assorted/01-e2eencryption.spec.js index a7a28af77a1..f3e4bcf909f 100644 --- a/e2e/tests/assorted/01-e2eencryption.spec.js +++ b/e2e/tests/assorted/01-e2eencryption.spec.js @@ -8,6 +8,18 @@ const data = require('../../data'); const testuser = data.users.regular const otheruser = data.users.alternate +const checkServer = async(server) => { + const label = `Connected to ${ server }`; + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.label(label))).toBeVisible().withTimeout(60000); + await element(by.id('sidebar-close-drawer')).tap(); +} + +const checkBanner = async() => { + await waitFor(element(by.id('listheader-encryption').withDescendant(by.label('Save Your Encryption Password')))).toBeVisible().withTimeout(10000); +} + async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); await waitFor(element(by.id(`rooms-list-view-item-${ roomName }`))).toExist().withTimeout(60000); @@ -43,7 +55,7 @@ describe('E2E Encryption', () => { describe('Banner', async() => { describe('Render', async () => { it('should have encryption badge', async () => { - await waitFor(element(by.id('listheader-encryption').withDescendant(by.label('Save Your Encryption Password')))).toBeVisible().withTimeout(10000); + await checkBanner(); }); }); @@ -195,4 +207,54 @@ describe('E2E Encryption', () => { }) }); }); + + describe('Persist Banner', () => { + it('check save banner', async() => { + await checkServer(data.server); + await checkBanner(); + }) + + it('should add server and create new user', async() => { + await sleep(5000); + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await element(by.id('rooms-list-header-server-add')).tap(); + + // TODO: refactor + await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); + await element(by.id('new-server-view-input')).replaceText(data.alternateServer); + await element(by.id('new-server-view-button')).tap(); + await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); + await element(by.id('workspace-view-register')).tap(); + await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); + + // Register new user + await element(by.id('register-view-name')).replaceText(data.registeringUser.username); + await element(by.id('register-view-username')).replaceText(data.registeringUser.username); + await element(by.id('register-view-email')).replaceText(data.registeringUser.email); + await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-submit')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); + + await checkServer(data.alternateServer); + }); + + it('should change back', async() => { + await element(by.id('rooms-list-header-server-dropdown-button')).tap(); + await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); + await element(by.id(`rooms-list-header-server-${ data.server }`)).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await checkServer(data.server); + await checkBanner(); + }); + + it('should reopen the app and have banner', async() => { + await device.launchApp({ + permissions: { notifications: 'YES' }, + newInstance: true + }); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await checkBanner(); + }); + }); }); \ No newline at end of file diff --git a/e2e/tests/assorted/07-changeserver.spec.js b/e2e/tests/assorted/07-changeserver.spec.js index 63506f8935c..a795e66c371 100644 --- a/e2e/tests/assorted/07-changeserver.spec.js +++ b/e2e/tests/assorted/07-changeserver.spec.js @@ -39,10 +39,10 @@ describe('Change server', () => { await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); // Register new user - await element(by.id('register-view-name')).replaceText(data.registeringUser.username); - await element(by.id('register-view-username')).replaceText(data.registeringUser.username); - await element(by.id('register-view-email')).replaceText(data.registeringUser.email); - await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-name')).replaceText(data.registeringUser2.username); + await element(by.id('register-view-username')).replaceText(data.registeringUser2.username); + await element(by.id('register-view-email')).replaceText(data.registeringUser2.email); + await element(by.id('register-view-password')).replaceText(data.registeringUser2.password); await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); diff --git a/e2e/tests/assorted/10-deleteserver.spec.js b/e2e/tests/assorted/10-deleteserver.spec.js index 474ebd26025..bf7379104eb 100644 --- a/e2e/tests/assorted/10-deleteserver.spec.js +++ b/e2e/tests/assorted/10-deleteserver.spec.js @@ -29,10 +29,10 @@ describe('Delete server', () => { await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); // Register new user - await element(by.id('register-view-name')).replaceText(data.registeringUser.username); - await element(by.id('register-view-username')).replaceText(data.registeringUser.username); - await element(by.id('register-view-email')).replaceText(data.registeringUser.email); - await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-name')).replaceText(data.registeringUser3.username); + await element(by.id('register-view-username')).replaceText(data.registeringUser3.username); + await element(by.id('register-view-email')).replaceText(data.registeringUser3.email); + await element(by.id('register-view-password')).replaceText(data.registeringUser3.password); await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); From 45fe06111ad97494f66381de387aba45b19c8035 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 2 Apr 2021 04:08:15 +0800 Subject: [PATCH 090/177] [TESTS] Move threads tests to its own file (#2965) * [E2E TEST] Move threads test to another file * changed descirbe title * Rearrange files Co-authored-by: Diego Mello <diegolmello@gmail.com> --- e2e/tests/room/02-room.spec.js | 115 ----------- e2e/tests/room/05-threads.spec.js | 191 ++++++++++++++++++ ...group.spec.js => 06-createdmgroup.spec.js} | 0 ...unread.spec.js => 07-markasunread.spec.js} | 0 ...5-roominfo.spec.js => 08-roominfo.spec.js} | 0 5 files changed, 191 insertions(+), 115 deletions(-) create mode 100644 e2e/tests/room/05-threads.spec.js rename e2e/tests/room/{05-createdmgroup.spec.js => 06-createdmgroup.spec.js} (100%) rename e2e/tests/room/{06-markasunread.spec.js => 07-markasunread.spec.js} (100%) rename e2e/tests/room/{05-roominfo.spec.js => 08-roominfo.spec.js} (100%) diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index 8c39e9bc2db..228c340bc99 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -274,121 +274,6 @@ describe('Room screen', () => { }); }); - describe('Thread', async() => { - const thread = `${ data.random }thread`; - it('should create thread', async() => { - await mockMessage('thread'); - await element(by.label(thread)).atIndex(0).longPress(); - await expect(element(by.id('action-sheet'))).toExist(); - await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Reply in Thread')).tap(); - await element(by.id('messagebox-input')).typeText('replied'); - await element(by.id('messagebox-send-message')).tap(); - await waitFor(element(by.id(`message-thread-button-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id(`message-thread-button-${ thread }`))).toExist(); - }); - - it('should navigate to thread from button', async() => { - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); - await tapBack(); - }); - - it('should toggle follow thread', async() => { - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); - await element(by.id('room-view-header-unfollow')).tap(); - await waitFor(element(by.id('room-view-header-follow'))).toExist().withTimeout(60000); - await expect(element(by.id('room-view-header-follow'))).toExist(); - await element(by.id('room-view-header-follow')).tap(); - await waitFor(element(by.id('room-view-header-unfollow'))).toExist().withTimeout(60000); - await expect(element(by.id('room-view-header-unfollow'))).toExist(); - }); - - it('should send message in thread only', async() => { - const messageText = 'threadonly'; - await mockMessage(messageText); - await tapBack(); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( - await waitFor(element(by.label(`${ data.random }${ messageText }`)).atIndex(0)).toNotExist().withTimeout(2000); - }); - - it('should mark send to channel and show on main channel', async() => { - const messageText = 'sendToChannel'; - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(messageText); - await element(by.id('messagebox-send-to-channel')).tap(); - await element(by.id('messagebox-send-message')).tap(); - await tapBack(); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( - await waitFor(element(by.label(messageText)).atIndex(0)).toExist().withTimeout(2000); - }); - - it('should navigate to thread from thread name', async() => { - const messageText = 'navthreadname'; - await mockMessage('dummymessagebetweenthethread'); - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(messageText); - await element(by.id('messagebox-send-to-channel')).tap(); - await element(by.id('messagebox-send-message')).tap(); - await tapBack(); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( - - await element(by.id(`message-thread-replied-on-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); - await tapBack(); - }); - - it('should navigate to thread from threads view', async() => { - await waitFor(element(by.id('room-view-header-threads'))).toExist().withTimeout(1000); - await element(by.id('room-view-header-threads')).tap(); - await waitFor(element(by.id('thread-messages-view'))).toExist().withTimeout(5000); - await expect(element(by.id('thread-messages-view'))).toExist(); - await element(by.id(`thread-messages-view-${ thread }`)).atIndex(0).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); - await tapBack(); - await waitFor(element(by.id('thread-messages-view'))).toExist().withTimeout(5000); - await expect(element(by.id('thread-messages-view'))).toExist(); - await tapBack(); - }); - - it('should draft thread message', async () => { - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await element(by.id('messagebox-input')).atIndex(0).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(`${ thread }draft`); - await tapBack(); - - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(`${ thread }draft`); - await element(by.id('messagebox-input')).atIndex(0).clearText(); - await tapBack(); - - await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(''); - }); - }); - // after(async() => { // await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); // await tapBack(); diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js new file mode 100644 index 00000000000..349c5d6d268 --- /dev/null +++ b/e2e/tests/room/05-threads.spec.js @@ -0,0 +1,191 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping } = require('../../helpers/app'); + +async function navigateToRoom(roomName) { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + await searchRoom(`${ roomName }`); + await waitFor(element(by.id(`rooms-list-view-item-${ roomName }`))).toExist().withTimeout(60000); + await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); +} + +describe('Threads', () => { + const mainRoom = data.groups.private.name; + + before(async() => { + await navigateToRoom(mainRoom); + }); + + describe('Render', async() => { + it('should have room screen', async() => { + await expect(element(by.id('room-view'))).toExist(); + await waitFor(element(by.id(`room-view-title-${ mainRoom }`))).toExist().withTimeout(5000); + }); + + // Render - Header + describe('Header', async() => { + it('should have actions button ', async() => { + await expect(element(by.id('room-view-header-actions'))).toExist(); + }); + + it('should have threads button ', async() => { + await expect(element(by.id('room-view-header-threads'))).toExist(); + }); + }); + + // Render - Messagebox + describe('Messagebox', async() => { + it('should have messagebox', async() => { + await expect(element(by.id('messagebox'))).toExist(); + }); + + it('should have open emoji button', async() => { + if (device.getPlatform() === 'android') { + await expect(element(by.id('messagebox-open-emoji'))).toExist(); + } + }); + + it('should have message input', async() => { + await expect(element(by.id('messagebox-input'))).toExist(); + }); + + it('should have audio button', async() => { + await expect(element(by.id('messagebox-send-audio'))).toExist(); + }); + + it('should have actions button', async() => { + await expect(element(by.id('messagebox-actions'))).toExist(); + }); + }); + }); + + describe('Usage', async() => { + describe('Thread', async() => { + const thread = `${ data.random }thread`; + it('should create thread', async() => { + await mockMessage('thread'); + await element(by.label(thread)).atIndex(0).longPress(); + await expect(element(by.id('action-sheet'))).toExist(); + await expect(element(by.id('action-sheet-handle'))).toBeVisible(); + await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); + await element(by.label('Reply in Thread')).tap(); + await element(by.id('messagebox-input')).typeText('replied'); + await element(by.id('messagebox-send-message')).tap(); + await waitFor(element(by.id(`message-thread-button-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id(`message-thread-button-${ thread }`))).toExist(); + }); + + it('should navigate to thread from button', async() => { + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); + await tapBack(); + }); + + it('should toggle follow thread', async() => { + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); + await element(by.id('room-view-header-unfollow')).tap(); + await waitFor(element(by.id('room-view-header-follow'))).toExist().withTimeout(60000); + await expect(element(by.id('room-view-header-follow'))).toExist(); + await element(by.id('room-view-header-follow')).tap(); + await waitFor(element(by.id('room-view-header-unfollow'))).toExist().withTimeout(60000); + await expect(element(by.id('room-view-header-unfollow'))).toExist(); + }); + + it('should send message in thread only', async() => { + const messageText = 'threadonly'; + await mockMessage(messageText); + await tapBack(); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( + await waitFor(element(by.label(`${ data.random }${ messageText }`)).atIndex(0)).toNotExist().withTimeout(2000); + }); + + it('should mark send to channel and show on main channel', async() => { + const messageText = 'sendToChannel'; + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await element(by.id('messagebox-input')).atIndex(0).typeText(messageText); + await element(by.id('messagebox-send-to-channel')).tap(); + await element(by.id('messagebox-send-message')).tap(); + await tapBack(); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( + await waitFor(element(by.label(messageText)).atIndex(0)).toExist().withTimeout(2000); + }); + + it('should navigate to thread from thread name', async() => { + const messageText = 'navthreadname'; + await mockMessage('dummymessagebetweenthethread'); + await dismissReviewNag() //TODO: Create a proper test for this elsewhere. + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await element(by.id('messagebox-input')).atIndex(0).typeText(messageText); + await element(by.id('messagebox-send-to-channel')).tap(); + await element(by.id('messagebox-send-message')).tap(); + await tapBack(); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( + + await element(by.id(`message-thread-replied-on-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); + await tapBack(); + }); + + it('should navigate to thread from threads view', async() => { + await waitFor(element(by.id('room-view-header-threads'))).toExist().withTimeout(1000); + await element(by.id('room-view-header-threads')).tap(); + await waitFor(element(by.id('thread-messages-view'))).toExist().withTimeout(5000); + await expect(element(by.id('thread-messages-view'))).toExist(); + await element(by.id(`thread-messages-view-${ thread }`)).atIndex(0).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); + await tapBack(); + await waitFor(element(by.id('thread-messages-view'))).toExist().withTimeout(5000); + await expect(element(by.id('thread-messages-view'))).toExist(); + await tapBack(); + }); + + it('should draft thread message', async () => { + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await element(by.id('messagebox-input')).atIndex(0).tap(); + await element(by.id('messagebox-input')).atIndex(0).typeText(`${ thread }draft`); + await tapBack(); + + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(`${ thread }draft`); + await element(by.id('messagebox-input')).atIndex(0).clearText(); + await tapBack(); + + await element(by.id(`message-thread-button-${ thread }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); + await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(''); + }); + }); + + // after(async() => { + // await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + // await tapBack(); + // await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); + // await expect(element(by.id('rooms-list-view'))).toExist(); + // }); + }); +}); diff --git a/e2e/tests/room/05-createdmgroup.spec.js b/e2e/tests/room/06-createdmgroup.spec.js similarity index 100% rename from e2e/tests/room/05-createdmgroup.spec.js rename to e2e/tests/room/06-createdmgroup.spec.js diff --git a/e2e/tests/room/06-markasunread.spec.js b/e2e/tests/room/07-markasunread.spec.js similarity index 100% rename from e2e/tests/room/06-markasunread.spec.js rename to e2e/tests/room/07-markasunread.spec.js diff --git a/e2e/tests/room/05-roominfo.spec.js b/e2e/tests/room/08-roominfo.spec.js similarity index 100% rename from e2e/tests/room/05-roominfo.spec.js rename to e2e/tests/room/08-roominfo.spec.js From e32ed8be0970cfa3ff20b63fc322b4caf7e08efd Mon Sep 17 00:00:00 2001 From: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com> Date: Fri, 2 Apr 2021 02:24:31 +0530 Subject: [PATCH 091/177] [FIX] Regex typo on markdown (#2928) * [FIX] Fix Regex Typo * Add story for testing Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 260 ++++++++++++++++++ app/containers/markdown/index.js | 2 +- storybook/stories/Message.js | 3 + 3 files changed, 264 insertions(+), 1 deletion(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index ae844bbb573..d5d1d912ef2 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -47816,6 +47816,266 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + <Text + style={ + Array [ + Object { + "fontSize": 20, + "fontWeight": "300", + "marginLeft": 10, + "marginVertical": 30, + }, + Object { + "color": "#0d0e12", + }, + Object { + "marginBottom": 0, + "marginTop": 30, + }, + ] + } + > + Starting with empty link + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="<- No link should render" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + <- No link should render + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> <Text style={ Array [ diff --git a/app/containers/markdown/index.js b/app/containers/markdown/index.js index 4cbfb6e7880..dfbae1841da 100644 --- a/app/containers/markdown/index.js +++ b/app/containers/markdown/index.js @@ -380,7 +380,7 @@ class Markdown extends PureComponent { // Ex: '[ ](https://open.rocket.chat/group/test?msg=abcdef) Test' // Return: 'Test' - m = m.replace(/^\[([\s]]*)\]\(([^)]*)\)\s/, '').trim(); + m = m.replace(/^\[([\s]*)\]\(([^)]*)\)\s/, '').trim(); if (preview) { m = shortnameToUnicode(m); diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index e4dbf6e2577..6108cb7776b 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -891,6 +891,9 @@ export default ({ theme }) => { <Separator title='Markdown links' theme={theme} /> <Message msg='Support <http://google.com|Google> [I`m an inline-style link](https://www.google.com) https://google.com' /> + <Separator title='Starting with empty link' theme={theme} /> + <Message msg='[ ](https://www.google.com) <- No link should render' /> + <Separator title='Markdown image' theme={theme} /> <Message msg='![alt text](https://play.google.com/intl/en_us/badges/images/badge_new.png)' /> From d6200745c028dd47b4ce0f11eb396c8f2a4cf807 Mon Sep 17 00:00:00 2001 From: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com> Date: Fri, 2 Apr 2021 02:31:58 +0530 Subject: [PATCH 092/177] [FIX] Make attachment validation compatible with web client (#2927) * [FIX] Make attachment validation compatible with web client * Added stories Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 275 ++++++++++++++++++ app/containers/message/Attachments.js | 6 +- storybook/stories/Message.js | 31 +- 3 files changed, 301 insertions(+), 11 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index d5d1d912ef2..03279760688 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -29093,6 +29093,281 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Image should not render" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Image should not render + </Text> + </Text> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 6, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + /> + </View> + </View> + </View> + </View> + </View> + </View> <Text style={ Array [ diff --git a/app/containers/message/Attachments.js b/app/containers/message/Attachments.js index 0d068e9fdf6..b94883b8b2e 100644 --- a/app/containers/message/Attachments.js +++ b/app/containers/message/Attachments.js @@ -15,13 +15,13 @@ const Attachments = React.memo(({ } return attachments.map((file, index) => { - if (file.image_url) { + if (file.type === 'file' && file.image_url) { return <Image key={file.image_url} file={file} showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} theme={theme} />; } - if (file.audio_url) { + if (file.type === 'file' && file.audio_url) { return <Audio key={file.audio_url} file={file} getCustomEmoji={getCustomEmoji} theme={theme} />; } - if (file.video_url) { + if (file.type === 'file' && file.video_url) { return <Video key={file.video_url} file={file} showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} theme={theme} />; } diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index 6108cb7776b..f33f69cfdea 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -346,13 +346,21 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description', - image_url: '/dummypath' + image_url: '/dummypath', + type: 'file' }]} /> <Message attachments={[{ title: 'This is a title', description: 'This is a description :nyan_rocket:', + image_url: '/dummypath', + type: 'file' + }]} + /> + <Message + msg='Image should not render' + attachments={[{ image_url: '/dummypath' }]} /> @@ -362,13 +370,15 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description :nyan_rocket:', - video_url: '/dummypath' + video_url: '/dummypath', + type: 'file' }]} /> <Message attachments={[{ title: 'This is a title', - video_url: '/dummypath' + video_url: '/dummypath', + type: 'file' }]} /> @@ -377,7 +387,8 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description :nyan_rocket:', - audio_url: '/dummypath' + audio_url: '/dummypath', + type: 'file' }]} /> <Message msg='First message' isHeader={false} /> @@ -385,21 +396,24 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description', - audio_url: '/dummypath' + audio_url: '/dummypath', + type: 'file' }]} isHeader={false} /> <Message attachments={[{ title: 'This is a title', - audio_url: '/dummypath' + audio_url: '/dummypath', + type: 'file' }]} isHeader={false} /> <Message attachments={[{ title: 'This is a title', - audio_url: '/dummypath' + audio_url: '/dummypath', + type: 'file' }]} isHeader={false} /> @@ -563,7 +577,8 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description', - audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' + audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac', + type: 'file' }]} tmid='1' isThreadSequential From 28ab90857c473eb9174ee6dd1454dce00650f484 Mon Sep 17 00:00:00 2001 From: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com> Date: Fri, 2 Apr 2021 02:36:50 +0530 Subject: [PATCH 093/177] [FIX] Non-reply attachments displaying time (#2902) * Remove time if no message_link * Fix message stories for replies * Final stories fix Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/message/Reply.js | 2 +- storybook/stories/Message.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/containers/message/Reply.js b/app/containers/message/Reply.js index 698eec945e2..4acecbc42b4 100644 --- a/app/containers/message/Reply.js +++ b/app/containers/message/Reply.js @@ -73,7 +73,7 @@ const Title = React.memo(({ attachment, timeFormat, theme }) => { if (!attachment.author_name) { return null; } - const time = attachment.ts ? moment(attachment.ts).format(timeFormat) : null; + const time = attachment.message_link && attachment.ts ? moment(attachment.ts).format(timeFormat) : null; return ( <View style={styles.authorContainer}> {attachment.author_name ? <Text style={[styles.author, { color: themes[theme].bodyText }]}>{attachment.author_name}</Text> : null} diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index f33f69cfdea..5fc6663d0c4 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -440,7 +440,8 @@ export default ({ theme }) => { author_name: 'I\'m a very long long title and I\'ll break', ts: date, timeFormat: 'LT', - text: 'How are you?' + text: 'How are you?', + message_link: 'http:///example.com' }]} /> <Message @@ -449,7 +450,8 @@ export default ({ theme }) => { author_name: 'rocket.cat', ts: date, timeFormat: 'LT', - text: 'How are you? :nyan_rocket:' + text: 'How are you? :nyan_rocket:', + message_link: 'http:///example.com' }]} /> @@ -702,6 +704,7 @@ export default ({ theme }) => { ts: date, timeFormat: 'LT', text: 'Custom fields', + message_link: 'http:///example.com', fields: [{ title: 'Field 1', value: 'Value 1' @@ -729,6 +732,7 @@ export default ({ theme }) => { ts: date, timeFormat: 'LT', text: 'Custom fields', + message_link: 'http:///example.com', fields: [{ title: 'Field 1', value: 'Value 1', @@ -743,6 +747,7 @@ export default ({ theme }) => { ts: date, timeFormat: 'LT', text: 'Custom fields 2', + message_link: 'http:///example.com', fields: [{ title: 'Field 1', value: 'Value 1', @@ -833,6 +838,7 @@ export default ({ theme }) => { author_name: 'rocket.cat', ts: date, timeFormat: 'LT', + message_link: 'http:///example.com', text: 'First message' }]} /> From 71da1e370b74d8bc7700537ed299f0b2fd670903 Mon Sep 17 00:00:00 2001 From: sadegh <sadeghmohamadnia@yahoo.com> Date: Fri, 2 Apr 2021 01:47:21 +0430 Subject: [PATCH 094/177] [FIX] i18n not being applied on login/register labels (#2930) * Use I18n translate in login text input label * Add to register and add missing strings Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/pt-BR.json | 5 ++++- app/views/LoginView.js | 4 ++-- app/views/RegisterView.js | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index b4e2c8a7fb0..3d52af4a064 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -653,5 +653,8 @@ "Enter_workspace_URL": "Digite a URL da sua workspace", "Workspace_URL_Example": "Ex. sua-empresa.rocket.chat", "This_room_encryption_has_been_enabled_by__username_": "A criptografia para essa sala foi habilitada por {{username}}", - "This_room_encryption_has_been_disabled_by__username_": "A criptografia para essa sala foi desabilitada por {{username}}" + "This_room_encryption_has_been_disabled_by__username_": "A criptografia para essa sala foi desabilitada por {{username}}", + "Apply_Your_Certificate": "Aplicar certificado", + "Do_you_have_a_certificate": "Você tem um certificado?", + "Your_certificate": "Seu certificado" } \ No newline at end of file diff --git a/app/views/LoginView.js b/app/views/LoginView.js index 8e9791d3606..31a56ae135d 100644 --- a/app/views/LoginView.js +++ b/app/views/LoginView.js @@ -137,7 +137,7 @@ class LoginView extends React.Component { <> <Text style={[styles.title, sharedStyles.textBold, { color: themes[theme].titleText }]}>{I18n.t('Login')}</Text> <TextInput - label='Email or username' + label={I18n.t('Username_or_email')} containerStyle={styles.inputContainer} placeholder={Accounts_EmailOrUsernamePlaceholder || I18n.t('Username_or_email')} keyboardType='email-address' @@ -151,7 +151,7 @@ class LoginView extends React.Component { value={user} /> <TextInput - label='Password' + label={I18n.t('Password')} containerStyle={styles.inputContainer} inputRef={(e) => { this.passwordInput = e; }} placeholder={Accounts_PasswordPlaceholder || I18n.t('Password')} diff --git a/app/views/RegisterView.js b/app/views/RegisterView.js index 750944fed8c..685f1449a40 100644 --- a/app/views/RegisterView.js +++ b/app/views/RegisterView.js @@ -234,7 +234,7 @@ class RegisterView extends React.Component { <LoginServices navigation={navigation} /> <Text style={[styles.title, sharedStyles.textBold, { color: themes[theme].titleText }]}>{I18n.t('Sign_Up')}</Text> <TextInput - label='Name' + label={I18n.t('Name')} containerStyle={styles.inputContainer} placeholder={I18n.t('Name')} returnKeyType='next' @@ -244,7 +244,7 @@ class RegisterView extends React.Component { theme={theme} /> <TextInput - label='Username' + label={I18n.t('Username')} containerStyle={styles.inputContainer} inputRef={(e) => { this.usernameInput = e; }} placeholder={I18n.t('Username')} @@ -255,7 +255,7 @@ class RegisterView extends React.Component { theme={theme} /> <TextInput - label='Email' + label={I18n.t('Email')} containerStyle={styles.inputContainer} inputRef={(e) => { this.emailInput = e; }} placeholder={I18n.t('Email')} @@ -267,7 +267,7 @@ class RegisterView extends React.Component { theme={theme} /> <TextInput - label='Password' + label={I18n.t('Password')} containerStyle={styles.inputContainer} inputRef={(e) => { this.passwordInput = e; }} placeholder={I18n.t('Password')} From 8649c17f0c3aff4143bace5065f1fef2ee52c090 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 5 Apr 2021 14:36:04 -0300 Subject: [PATCH 095/177] Revert "[FIX] Make attachment validation compatible with web client (#2927)" (#3036) This reverts commit d6200745c028dd47b4ce0f11eb396c8f2a4cf807. --- .../__snapshots__/Storyshots.test.js.snap | 275 ------------------ app/containers/message/Attachments.js | 6 +- storybook/stories/Message.js | 31 +- 3 files changed, 11 insertions(+), 301 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 03279760688..d5d1d912ef2 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -29093,281 +29093,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Image should not render" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Image should not render - </Text> - </Text> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 6, - "opacity": 1, - } - } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - /> - </View> - </View> - </View> - </View> - </View> - </View> <Text style={ Array [ diff --git a/app/containers/message/Attachments.js b/app/containers/message/Attachments.js index b94883b8b2e..0d068e9fdf6 100644 --- a/app/containers/message/Attachments.js +++ b/app/containers/message/Attachments.js @@ -15,13 +15,13 @@ const Attachments = React.memo(({ } return attachments.map((file, index) => { - if (file.type === 'file' && file.image_url) { + if (file.image_url) { return <Image key={file.image_url} file={file} showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} theme={theme} />; } - if (file.type === 'file' && file.audio_url) { + if (file.audio_url) { return <Audio key={file.audio_url} file={file} getCustomEmoji={getCustomEmoji} theme={theme} />; } - if (file.type === 'file' && file.video_url) { + if (file.video_url) { return <Video key={file.video_url} file={file} showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} theme={theme} />; } diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index 5fc6663d0c4..7be131dbc26 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -346,21 +346,13 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description', - image_url: '/dummypath', - type: 'file' + image_url: '/dummypath' }]} /> <Message attachments={[{ title: 'This is a title', description: 'This is a description :nyan_rocket:', - image_url: '/dummypath', - type: 'file' - }]} - /> - <Message - msg='Image should not render' - attachments={[{ image_url: '/dummypath' }]} /> @@ -370,15 +362,13 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description :nyan_rocket:', - video_url: '/dummypath', - type: 'file' + video_url: '/dummypath' }]} /> <Message attachments={[{ title: 'This is a title', - video_url: '/dummypath', - type: 'file' + video_url: '/dummypath' }]} /> @@ -387,8 +377,7 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description :nyan_rocket:', - audio_url: '/dummypath', - type: 'file' + audio_url: '/dummypath' }]} /> <Message msg='First message' isHeader={false} /> @@ -396,24 +385,21 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description', - audio_url: '/dummypath', - type: 'file' + audio_url: '/dummypath' }]} isHeader={false} /> <Message attachments={[{ title: 'This is a title', - audio_url: '/dummypath', - type: 'file' + audio_url: '/dummypath' }]} isHeader={false} /> <Message attachments={[{ title: 'This is a title', - audio_url: '/dummypath', - type: 'file' + audio_url: '/dummypath' }]} isHeader={false} /> @@ -579,8 +565,7 @@ export default ({ theme }) => { attachments={[{ title: 'This is a title', description: 'This is a description', - audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac', - type: 'file' + audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' }]} tmid='1' isThreadSequential From 5a96f1ff6ba97f4959ae5c383f293a318673a42f Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 5 Apr 2021 15:15:56 -0300 Subject: [PATCH 096/177] Bump version to 4.16.0 (#3037) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9fb20f39846..44b3bb150a9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.15.0" + versionName "4.16.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index af7653b82a2..3d7bd4dda07 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1691,7 +1691,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.15.0; + MARKETING_VERSION = 4.16.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1728,7 +1728,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.15.0; + MARKETING_VERSION = 4.16.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index ada5fc6c06f..d8b121b1316 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.15.0</string> + <string>4.16.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index d545207a6e8..c4c44690d80 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.15.0</string> + <string>4.16.0</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 767faa3329c..05afdafac7e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.15.0", + "version": "4.16.0", "private": true, "scripts": { "start": "react-native start", From d04d0f27b6403047ba2eec9a204f0c40be388546 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 7 Apr 2021 15:31:25 -0300 Subject: [PATCH 097/177] [NEW] Basic support to Teams (#3016) * Database migration * RoomItem icon * Team icons * Teams group * Small tweak on RoomTypeIcon * RoomView Header * Add team's channels to RoomView header * Starting TeamChannelsView * Icon size * o data found * Update TeamChannelsView, add teams subscriptions and send params to TeamChannelsView * Use teams.ListRooms endpoint, render rooms list, remove unused functions * Show team main on TeamChannelsView * Disable swipe * Pagination working * Fix blinking no data found * Search working * Refactor to use BackgroundContainer while loading * Go to room * Cleanup * Go to actions * Events * Lint * Add debounce to go room * Fix for tablet * i18n * Small fix * Minor refactor * Use local data when it exists * Show last message * Force teams migration * Add stories to BackgroundContainer * Remove unused component * Move RoomViewHeader into containers folder * Refactoring * Testing RoomHeader * i18n * Fix server endpoint version * Fix events Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 4693 +++++++++++++++++ .../BackgroundContainer/index.js} | 16 +- .../BackgroundContainer/index.stories.js | 49 + .../RoomHeader/RoomHeader.js} | 74 +- .../RoomHeader/RoomHeader.stories.js | 94 + .../Header => containers/RoomHeader}/index.js | 43 +- app/containers/RoomTypeIcon.js | 7 +- app/i18n/locales/en.json | 5 +- app/i18n/locales/pt-BR.json | 5 +- app/lib/database/model/Subscription.js | 4 + app/lib/database/model/migrations.js | 12 + app/lib/database/schema/app.js | 6 +- .../helpers/mergeSubscriptionsRooms.js | 2 + app/lib/rocketchat.js | 13 + app/presentation/RoomItem/RoomItem.js | 8 +- app/presentation/RoomItem/TypeIcon.js | 7 +- app/presentation/RoomItem/index.js | 1 + app/sagas/rooms.js | 11 + app/stacks/InsideStack.js | 6 + app/stacks/MasterDetailStack/index.js | 6 + app/utils/goRoom.js | 2 +- app/utils/log/events.js | 9 +- app/views/NewMessageView.js | 2 +- app/views/RoomActionsView/index.js | 2 +- app/views/RoomInfoView/index.js | 2 +- .../RoomView/{Header => }/LeftButtons.js | 4 +- .../RoomView/{Header => }/RightButtons.js | 35 +- app/views/RoomView/index.js | 23 +- app/views/RoomsListView/index.js | 13 +- app/views/TeamChannelsView.js | 369 ++ app/views/ThreadMessagesView/index.js | 4 +- e2e/tests/assorted/02-broadcast.spec.js | 2 +- e2e/tests/assorted/05-joinpublicroom.spec.js | 4 +- .../assorted/08-joinprotectedroom.spec.js | 2 +- e2e/tests/room/02-room.spec.js | 2 +- e2e/tests/room/03-roomactions.spec.js | 10 +- e2e/tests/room/04-discussion.spec.js | 4 +- e2e/tests/room/05-threads.spec.js | 14 +- e2e/tests/room/08-roominfo.spec.js | 2 +- storybook/stories/RoomViewHeader.js | 73 - storybook/stories/index.js | 2 + 41 files changed, 5456 insertions(+), 186 deletions(-) rename app/{views/ThreadMessagesView/NoDataFound.js => containers/BackgroundContainer/index.js} (56%) create mode 100644 app/containers/BackgroundContainer/index.stories.js rename app/{views/RoomView/Header/Header.js => containers/RoomHeader/RoomHeader.js} (65%) create mode 100644 app/containers/RoomHeader/RoomHeader.stories.js rename app/{views/RoomView/Header => containers/RoomHeader}/index.js (77%) rename app/views/RoomView/{Header => }/LeftButtons.js (93%) rename app/views/RoomView/{Header => }/RightButtons.js (85%) create mode 100644 app/views/TeamChannelsView.js delete mode 100644 storybook/stories/RoomViewHeader.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index d5d1d912ef2..286e506ee18 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -1055,6 +1055,533 @@ exports[`Storyshots Avatar list Avatar 1`] = ` </RCTScrollView> `; +exports[`Storyshots BackgroundContainer basic 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_light", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> +</View> +`; + +exports[`Storyshots BackgroundContainer black theme - loading 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_black", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <ActivityIndicator + animating={true} + color="#999999" + hidesWhenStopped={true} + size="small" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#f9f9f9", + }, + ] + } + /> +</View> +`; + +exports[`Storyshots BackgroundContainer black theme - text 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_black", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> +</View> +`; + +exports[`Storyshots BackgroundContainer dark theme - loading 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_dark", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <ActivityIndicator + animating={true} + color="#999999" + hidesWhenStopped={true} + size="small" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#f9f9f9", + }, + ] + } + /> +</View> +`; + +exports[`Storyshots BackgroundContainer dark theme - text 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_dark", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> +</View> +`; + +exports[`Storyshots BackgroundContainer loading 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_light", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <ActivityIndicator + animating={true} + color="#999999" + hidesWhenStopped={true} + size="small" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#6C727A", + }, + ] + } + /> +</View> +`; + +exports[`Storyshots BackgroundContainer long text 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_light", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#6C727A", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> +</View> +`; + +exports[`Storyshots BackgroundContainer text 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_light", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": "100%", + "width": "100%", + }, + undefined, + ] + } + /> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "left": 0, + "paddingHorizontal": 24, + "position": "absolute", + "right": 0, + "textAlign": "center", + "top": 60, + }, + Object { + "color": "#6C727A", + }, + ] + } + > + Text here + </Text> +</View> +`; + exports[`Storyshots Header Buttons badge 1`] = ` <RNCSafeAreaView edges={ @@ -49662,6 +50189,4172 @@ exports[`Storyshots Message list message 1`] = ` </RCTScrollView> `; +exports[`Storyshots RoomHeader icons 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="private channel" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="private channel" + > + private channel + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="public channel" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="public channel" + > + public channel + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="discussion" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="discussion" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="discussion" + > + discussion + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="omnichannel" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="omnichannel" + > + omnichannel + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="private team" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="private team" + > + private team + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="public team" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="public team" + > + public team + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="group dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="group dm" + > + group dm + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="online dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#2de0a5", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#2de0a5", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="online dm" + > + online dm + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="away dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffd21f", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#ffd21f", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="away dm" + > + away dm + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="busy dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#f5455c", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#f5455c", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="busy dm" + > + busy dm + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="loading dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ea2a8", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#9ea2a8", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="loading dm" + > + loading dm + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="offline dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="offline dm" + > + offline dm + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader landscape 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 12.8, + }, + ] + } + > + title + </Text> + </View> + <Text + accessibilityLabel="subtitle" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 9.600000000000001, + }, + ] + } + > + subtitle + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 12.8, + }, + ] + } + testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 9.600000000000001, + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader themes 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + accessibilityLabel="subtitle" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + subtitle + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#0b182c", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#0b182c", + "borderBottomColor": "#2F3A4B", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#f9f9f9", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + accessibilityLabel="subtitle" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#e8ebed", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9297a2", + "fontSize": 12, + }, + ] + } + > + subtitle + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#0d0d0d", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#0d0d0d", + "borderBottomColor": "#323232", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#f9f9f9", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + accessibilityLabel="subtitle" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#e8ebed", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#b2b8c6", + "fontSize": 12, + }, + ] + } + > + subtitle + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader thread 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="title" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + parent title + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="markdown +preview +#3 +4 +5" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="markdown preview #3 4 5" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="markdown +preview +#3 +4 +5" + > + markdown preview #3 4 5 + </Text> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader title and subtitle 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="title" + > + title + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + accessibilityLabel="subtitle" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + subtitle + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader typing 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + <Text + style={ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + } + } + > + user 1 + + </Text> + is typing + ... + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + <Text + style={ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + } + } + > + user 1 and user 2 + + </Text> + are typing + ... + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, + }, + ] + } + > + <Text + style={ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + } + } + > + user 1, user 2, user 3, user 4, user 5 + + </Text> + are typing + ... + </Text> + </View> + </View> + </View> + </RNCSafeAreaView>, +] +`; + exports[`Storyshots RoomItem list roomitem 1`] = ` <RCTScrollView style={ diff --git a/app/views/ThreadMessagesView/NoDataFound.js b/app/containers/BackgroundContainer/index.js similarity index 56% rename from app/views/ThreadMessagesView/NoDataFound.js rename to app/containers/BackgroundContainer/index.js index f9295b635c4..ed4716b74e8 100644 --- a/app/views/ThreadMessagesView/NoDataFound.js +++ b/app/containers/BackgroundContainer/index.js @@ -1,11 +1,11 @@ import React from 'react'; import { - ImageBackground, StyleSheet, Text, View + ImageBackground, StyleSheet, Text, View, ActivityIndicator } from 'react-native'; import PropTypes from 'prop-types'; import { withTheme } from '../../theme'; -import sharedStyles from '../Styles'; +import sharedStyles from '../../views/Styles'; import { themes } from '../../constants/colors'; const styles = StyleSheet.create({ @@ -29,15 +29,17 @@ const styles = StyleSheet.create({ } }); -const EmptyRoom = ({ theme, text }) => ( +const BackgroundContainer = ({ theme, text, loading }) => ( <View style={styles.container}> <ImageBackground source={{ uri: `message_empty_${ theme }` }} style={styles.image} /> - <Text style={[styles.text, { color: themes[theme].auxiliaryTintColor }]}>{text}</Text> + {text ? <Text style={[styles.text, { color: themes[theme].auxiliaryTintColor }]}>{text}</Text> : null} + {loading ? <ActivityIndicator style={[styles.text, { color: themes[theme].auxiliaryTintColor }]} /> : null} </View> ); -EmptyRoom.propTypes = { +BackgroundContainer.propTypes = { text: PropTypes.string, - theme: PropTypes.string + theme: PropTypes.string, + loading: PropTypes.bool }; -export default withTheme(EmptyRoom); +export default withTheme(BackgroundContainer); diff --git a/app/containers/BackgroundContainer/index.stories.js b/app/containers/BackgroundContainer/index.stories.js new file mode 100644 index 00000000000..0b6c9a1c646 --- /dev/null +++ b/app/containers/BackgroundContainer/index.stories.js @@ -0,0 +1,49 @@ +/* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions, react/prop-types */ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; + +import BackgroundContainer from '.'; +import { ThemeContext } from '../../theme'; +import { longText } from '../../../storybook/utils'; + +const stories = storiesOf('BackgroundContainer', module); + +stories.add('basic', () => ( + <BackgroundContainer /> +)); + +stories.add('loading', () => ( + <BackgroundContainer loading /> +)); + +stories.add('text', () => ( + <BackgroundContainer text='Text here' /> +)); + +stories.add('long text', () => ( + <BackgroundContainer text={longText} /> +)); + +const ThemeStory = ({ theme, ...props }) => ( + <ThemeContext.Provider + value={{ theme }} + > + <BackgroundContainer {...props} /> + </ThemeContext.Provider> +); + +stories.add('dark theme - loading', () => ( + <ThemeStory theme='dark' loading /> +)); + +stories.add('dark theme - text', () => ( + <ThemeStory theme='dark' text={longText} /> +)); + +stories.add('black theme - loading', () => ( + <ThemeStory theme='black' loading /> +)); + +stories.add('black theme - text', () => ( + <ThemeStory theme='black' text={longText} /> +)); diff --git a/app/views/RoomView/Header/Header.js b/app/containers/RoomHeader/RoomHeader.js similarity index 65% rename from app/views/RoomView/Header/Header.js rename to app/containers/RoomHeader/RoomHeader.js index 4cdccca8fbf..6715fc137e6 100644 --- a/app/views/RoomView/Header/Header.js +++ b/app/containers/RoomHeader/RoomHeader.js @@ -4,16 +4,21 @@ import { View, Text, StyleSheet, TouchableOpacity } from 'react-native'; -import I18n from '../../../i18n'; -import sharedStyles from '../../Styles'; -import { themes } from '../../../constants/colors'; -import Markdown from '../../../containers/markdown'; -import RoomTypeIcon from '../../../containers/RoomTypeIcon'; +import I18n from '../../i18n'; +import sharedStyles from '../../views/Styles'; +import { themes } from '../../constants/colors'; +import Markdown from '../markdown'; +import RoomTypeIcon from '../RoomTypeIcon'; +import { withTheme } from '../../theme'; const HIT_SLOP = { top: 5, right: 5, bottom: 5, left: 5 }; const TITLE_SIZE = 16; +const SUBTITLE_SIZE = 12; + +const getSubTitleSize = scale => SUBTITLE_SIZE * scale; + const styles = StyleSheet.create({ container: { flex: 1, @@ -24,12 +29,12 @@ const styles = StyleSheet.create({ flexDirection: 'row' }, title: { - ...sharedStyles.textSemibold, - fontSize: TITLE_SIZE + flexShrink: 1, + ...sharedStyles.textSemibold }, subtitle: { - ...sharedStyles.textRegular, - fontSize: 12 + flexShrink: 1, + ...sharedStyles.textRegular }, typingUsers: { ...sharedStyles.textSemibold @@ -37,8 +42,9 @@ const styles = StyleSheet.create({ }); const SubTitle = React.memo(({ - usersTyping, subtitle, renderFunc, theme + usersTyping, subtitle, renderFunc, theme, scale }) => { + const fontSize = getSubTitleSize(scale); // typing if (usersTyping.length) { let usersText; @@ -48,7 +54,7 @@ const SubTitle = React.memo(({ usersText = usersTyping.join(', '); } return ( - <Text style={[styles.subtitle, { color: themes[theme].auxiliaryText }]} numberOfLines={1}> + <Text style={[styles.subtitle, { fontSize, color: themes[theme].auxiliaryText }]} numberOfLines={1}> <Text style={styles.typingUsers}>{usersText} </Text> { usersTyping.length > 1 ? I18n.t('are_typing') : I18n.t('is_typing') }... </Text> @@ -66,7 +72,7 @@ const SubTitle = React.memo(({ <Markdown preview msg={subtitle} - style={[styles.subtitle, { color: themes[theme].auxiliaryText }]} + style={[styles.subtitle, { fontSize, color: themes[theme].auxiliaryText }]} numberOfLines={1} theme={theme} /> @@ -80,18 +86,20 @@ SubTitle.propTypes = { usersTyping: PropTypes.array, theme: PropTypes.string, subtitle: PropTypes.string, - renderFunc: PropTypes.func + renderFunc: PropTypes.func, + scale: PropTypes.number }; const HeaderTitle = React.memo(({ - title, tmid, prid, scale, theme + title, tmid, prid, scale, theme, testID }) => { + const titleStyle = { fontSize: TITLE_SIZE * scale, color: themes[theme].headerTitleColor }; if (!tmid && !prid) { return ( <Text - style={[styles.title, { fontSize: TITLE_SIZE * scale, color: themes[theme].headerTitleColor }]} + style={[styles.title, titleStyle]} numberOfLines={1} - testID={`room-view-title-${ title }`} + testID={testID} > {title} </Text> @@ -102,10 +110,10 @@ const HeaderTitle = React.memo(({ <Markdown preview msg={title} - style={[styles.title, { fontSize: TITLE_SIZE * scale, color: themes[theme].headerTitleColor }]} + style={[styles.title, titleStyle]} numberOfLines={1} theme={theme} - testID={`room-view-title-${ title }`} + testID={testID} /> ); }); @@ -115,11 +123,12 @@ HeaderTitle.propTypes = { tmid: PropTypes.string, prid: PropTypes.string, scale: PropTypes.number, - theme: PropTypes.string + theme: PropTypes.string, + testID: PropTypes.string }; const Header = React.memo(({ - title, subtitle, parentTitle, type, status, usersTyping, width, height, prid, tmid, connecting, goRoomActionsView, theme, isGroupChat + title, subtitle, parentTitle, type, status, usersTyping, width, height, prid, tmid, onPress, theme, isGroupChat, teamMain, testID }) => { const portrait = height > width; let scale = 1; @@ -130,13 +139,11 @@ const Header = React.memo(({ } } - const onPress = () => goRoomActionsView(); - let renderFunc; if (tmid) { renderFunc = () => ( <View style={styles.titleContainer}> - <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} /> + <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} teamMain={teamMain} /> <Text style={[styles.subtitle, { color: themes[theme].auxiliaryText }]} numberOfLines={1}>{parentTitle}</Text> </View> ); @@ -144,7 +151,7 @@ const Header = React.memo(({ return ( <TouchableOpacity - testID='room-view-header-actions' + testID='room-header' accessibilityLabel={title} onPress={onPress} style={styles.container} @@ -152,17 +159,23 @@ const Header = React.memo(({ hitSlop={HIT_SLOP} > <View style={styles.titleContainer}> - {tmid ? null : <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} />} + {tmid ? null : <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} teamMain={teamMain} />} <HeaderTitle title={title} tmid={tmid} prid={prid} scale={scale} - connecting={connecting} theme={theme} + testID={testID} /> </View> - <SubTitle usersTyping={tmid ? [] : usersTyping} subtitle={subtitle} theme={theme} renderFunc={renderFunc} /> + <SubTitle + usersTyping={tmid ? [] : usersTyping} + subtitle={subtitle} + theme={theme} + renderFunc={renderFunc} + scale={scale} + /> </TouchableOpacity> ); }); @@ -175,17 +188,18 @@ Header.propTypes = { height: PropTypes.number.isRequired, prid: PropTypes.string, tmid: PropTypes.string, + teamMain: PropTypes.bool, status: PropTypes.string, theme: PropTypes.string, usersTyping: PropTypes.array, - connecting: PropTypes.bool, isGroupChat: PropTypes.bool, parentTitle: PropTypes.string, - goRoomActionsView: PropTypes.func + onPress: PropTypes.func, + testID: PropTypes.string }; Header.defaultProps = { usersTyping: [] }; -export default Header; +export default withTheme(Header); diff --git a/app/containers/RoomHeader/RoomHeader.stories.js b/app/containers/RoomHeader/RoomHeader.stories.js new file mode 100644 index 00000000000..bfea5e27220 --- /dev/null +++ b/app/containers/RoomHeader/RoomHeader.stories.js @@ -0,0 +1,94 @@ +/* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions, react/prop-types, react/destructuring-assignment */ +import React from 'react'; +import { View, Dimensions } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; + +import RoomHeaderComponent from './RoomHeader'; +import Header from '../Header'; +import { longText } from '../../../storybook/utils'; +import { ThemeContext } from '../../theme'; + +const stories = storiesOf('RoomHeader', module); + +// TODO: refactor after react-navigation v6 +const HeaderExample = ({ title }) => ( + <Header + headerTitle={() => ( + <View style={{ flex: 1, paddingHorizontal: 12 }}> + {title()} + </View> + )} + /> +); + +const { width, height } = Dimensions.get('window'); + +const RoomHeader = ({ ...props }) => ( + <RoomHeaderComponent width={width} height={height} title='title' type='p' testID={props.title} onPress={() => alert('header pressed!')} {...props} /> +); + +stories.add('title and subtitle', () => ( + <> + <HeaderExample title={() => <RoomHeader title='title' type='p' />} /> + <HeaderExample title={() => <RoomHeader title={longText} type='p' />} /> + <HeaderExample title={() => <RoomHeader subtitle='subtitle' />} /> + <HeaderExample title={() => <RoomHeader subtitle={longText} />} /> + <HeaderExample title={() => <RoomHeader title={longText} subtitle={longText} />} /> + </> +)); + +stories.add('icons', () => ( + <> + <HeaderExample title={() => <RoomHeader title='private channel' type='p' />} /> + <HeaderExample title={() => <RoomHeader title='public channel' type='c' />} /> + <HeaderExample title={() => <RoomHeader title='discussion' prid='asd' />} /> + <HeaderExample title={() => <RoomHeader title='omnichannel' type='l' />} /> + <HeaderExample title={() => <RoomHeader title='private team' type='p' teamMain />} /> + <HeaderExample title={() => <RoomHeader title='public team' type='c' teamMain />} /> + <HeaderExample title={() => <RoomHeader title='group dm' type='d' isGroupChat />} /> + <HeaderExample title={() => <RoomHeader title='online dm' type='d' status='online' />} /> + <HeaderExample title={() => <RoomHeader title='away dm' type='d' status='away' />} /> + <HeaderExample title={() => <RoomHeader title='busy dm' type='d' status='busy' />} /> + <HeaderExample title={() => <RoomHeader title='loading dm' type='d' status='loading' />} /> + <HeaderExample title={() => <RoomHeader title='offline dm' type='d' />} /> + </> +)); + +stories.add('typing', () => ( + <> + <HeaderExample title={() => <RoomHeader usersTyping={['user 1']} />} /> + <HeaderExample title={() => <RoomHeader usersTyping={['user 1', 'user 2']} />} /> + <HeaderExample title={() => <RoomHeader usersTyping={['user 1', 'user 2', 'user 3', 'user 4', 'user 5']} />} /> + </> +)); + +stories.add('landscape', () => ( + <> + <HeaderExample title={() => <RoomHeader width={height} height={width} />} /> + <HeaderExample title={() => <RoomHeader width={height} height={width} subtitle='subtitle' />} /> + <HeaderExample title={() => <RoomHeader width={height} height={width} title={longText} subtitle={longText} />} /> + </> +)); + +stories.add('thread', () => ( + <> + <HeaderExample title={() => <RoomHeader tmid='123' parentTitle='parent title' />} /> + <HeaderExample title={() => <RoomHeader tmid='123' title={'markdown\npreview\n#3\n4\n5'} parentTitle={longText} />} /> + </> +)); + +const ThemeStory = ({ theme }) => ( + <ThemeContext.Provider + value={{ theme }} + > + <HeaderExample title={() => <RoomHeader subtitle='subtitle' />} /> + </ThemeContext.Provider> +); + +stories.add('themes', () => ( + <> + <ThemeStory theme='light' /> + <ThemeStory theme='dark' /> + <ThemeStory theme='black' /> + </> +)); diff --git a/app/views/RoomView/Header/index.js b/app/containers/RoomHeader/index.js similarity index 77% rename from app/views/RoomView/Header/index.js rename to app/containers/RoomHeader/index.js index a66f21a4ae2..4eeab701f29 100644 --- a/app/views/RoomView/Header/index.js +++ b/app/containers/RoomHeader/index.js @@ -3,42 +3,37 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { dequal } from 'dequal'; -import Header from './Header'; -import LeftButtons from './LeftButtons'; -import RightButtons from './RightButtons'; -import { withTheme } from '../../../theme'; -import { withDimensions } from '../../../dimensions'; -import I18n from '../../../i18n'; +import RoomHeader from './RoomHeader'; +import { withDimensions } from '../../dimensions'; +import I18n from '../../i18n'; -class RoomHeaderView extends Component { +class RoomHeaderContainer extends Component { static propTypes = { title: PropTypes.string, subtitle: PropTypes.string, type: PropTypes.string, prid: PropTypes.string, tmid: PropTypes.string, + teamMain: PropTypes.bool, usersTyping: PropTypes.string, status: PropTypes.string, statusText: PropTypes.string, connecting: PropTypes.bool, connected: PropTypes.bool, - theme: PropTypes.string, roomUserId: PropTypes.string, widthOffset: PropTypes.number, - goRoomActionsView: PropTypes.func, + onPress: PropTypes.func, width: PropTypes.number, height: PropTypes.number, parentTitle: PropTypes.string, - isGroupChat: PropTypes.bool + isGroupChat: PropTypes.bool, + testID: PropTypes.string }; shouldComponentUpdate(nextProps) { const { - type, title, subtitle, status, statusText, connecting, connected, goRoomActionsView, usersTyping, theme, width, height + type, title, subtitle, status, statusText, connecting, connected, onPress, usersTyping, width, height } = this.props; - if (nextProps.theme !== theme) { - return true; - } if (nextProps.type !== type) { return true; } @@ -69,7 +64,7 @@ class RoomHeaderView extends Component { if (!dequal(nextProps.usersTyping, usersTyping)) { return true; } - if (nextProps.goRoomActionsView !== goRoomActionsView) { + if (nextProps.onPress !== onPress) { return true; } return false; @@ -80,6 +75,7 @@ class RoomHeaderView extends Component { title, subtitle: subtitleProp, type, + teamMain, prid, tmid, widthOffset, @@ -88,13 +84,13 @@ class RoomHeaderView extends Component { connecting, connected, usersTyping, - goRoomActionsView, + onPress, roomUserId, - theme, width, height, parentTitle, - isGroupChat + isGroupChat, + testID } = this.props; let subtitle; @@ -107,23 +103,24 @@ class RoomHeaderView extends Component { } return ( - <Header + <RoomHeader prid={prid} tmid={tmid} title={title} subtitle={type === 'd' ? statusText : subtitle} type={type} + teamMain={teamMain} status={status} width={width} height={height} - theme={theme} usersTyping={usersTyping} widthOffset={widthOffset} roomUserId={roomUserId} - goRoomActionsView={goRoomActionsView} connecting={connecting} parentTitle={parentTitle} isGroupChat={isGroupChat} + testID={testID} + onPress={onPress} /> ); } @@ -153,6 +150,4 @@ const mapStateToProps = (state, ownProps) => { }; }; -export default connect(mapStateToProps)(withDimensions(withTheme(RoomHeaderView))); - -export { RightButtons, LeftButtons }; +export default connect(mapStateToProps)(withDimensions(RoomHeaderContainer)); diff --git a/app/containers/RoomTypeIcon.js b/app/containers/RoomTypeIcon.js index 44044f3318b..55294310de3 100644 --- a/app/containers/RoomTypeIcon.js +++ b/app/containers/RoomTypeIcon.js @@ -13,7 +13,7 @@ const styles = StyleSheet.create({ }); const RoomTypeIcon = React.memo(({ - type, size, isGroupChat, status, style, theme + type, size, isGroupChat, status, style, theme, teamMain }) => { if (!type) { return null; @@ -31,7 +31,9 @@ const RoomTypeIcon = React.memo(({ } let icon = 'channel-private'; - if (type === 'discussion') { + if (teamMain) { + icon = `teams${ type === 'p' ? '-private' : '' }`; + } else if (type === 'discussion') { icon = 'discussions'; } else if (type === 'c') { icon = 'channel-public'; @@ -58,6 +60,7 @@ RoomTypeIcon.propTypes = { theme: PropTypes.string, type: PropTypes.string, isGroupChat: PropTypes.bool, + teamMain: PropTypes.bool, status: PropTypes.string, size: PropTypes.number, style: PropTypes.object diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index ce4243c4311..ec289d27d8b 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -706,5 +706,8 @@ "Enter_workspace_URL": "Enter workspace URL", "Workspace_URL_Example": "Ex. your-company.rocket.chat", "This_room_encryption_has_been_enabled_by__username_": "This room's encryption has been enabled by {{username}}", - "This_room_encryption_has_been_disabled_by__username_": "This room's encryption has been disabled by {{username}}" + "This_room_encryption_has_been_disabled_by__username_": "This room's encryption has been disabled by {{username}}", + "Teams": "Teams", + "No_team_channels_found": "No channels found", + "Team_not_found": "Team not found" } \ No newline at end of file diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 3d52af4a064..4002b2d6eb9 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -656,5 +656,8 @@ "This_room_encryption_has_been_disabled_by__username_": "A criptografia para essa sala foi desabilitada por {{username}}", "Apply_Your_Certificate": "Aplicar certificado", "Do_you_have_a_certificate": "Você tem um certificado?", - "Your_certificate": "Seu certificado" + "Your_certificate": "Seu certificado", + "Teams": "Times", + "No_team_channels_found": "Nenhum canal encontrado", + "Team_not_found": "Time não encontrado" } \ No newline at end of file diff --git a/app/lib/database/model/Subscription.js b/app/lib/database/model/Subscription.js index 378c9759d3e..5b1ebd14110 100644 --- a/app/lib/database/model/Subscription.js +++ b/app/lib/database/model/Subscription.js @@ -125,4 +125,8 @@ export default class Subscription extends Model { @field('e2e_key_id') e2eKeyId; @field('avatar_etag') avatarETag; + + @field('team_id') teamId; + + @field('team_main') teamMain; } diff --git a/app/lib/database/model/migrations.js b/app/lib/database/model/migrations.js index c8f3d449fc6..cdc65ef0f7b 100644 --- a/app/lib/database/model/migrations.js +++ b/app/lib/database/model/migrations.js @@ -212,6 +212,18 @@ export default schemaMigrations({ ] }) ] + }, + { + toVersion: 13, + steps: [ + addColumns({ + table: 'subscriptions', + columns: [ + { name: 'team_id', type: 'string', isIndexed: true }, + { name: 'team_main', type: 'boolean', isOptional: true } + ] + }) + ] } ] }); diff --git a/app/lib/database/schema/app.js b/app/lib/database/schema/app.js index 055b8f64ddd..883e6dfd96b 100644 --- a/app/lib/database/schema/app.js +++ b/app/lib/database/schema/app.js @@ -1,7 +1,7 @@ import { appSchema, tableSchema } from '@nozbe/watermelondb'; export default appSchema({ - version: 12, + version: 13, tables: [ tableSchema({ name: 'subscriptions', @@ -57,7 +57,9 @@ export default appSchema({ { name: 'e2e_key', type: 'string', isOptional: true }, { name: 'encrypted', type: 'boolean', isOptional: true }, { name: 'e2e_key_id', type: 'string', isOptional: true }, - { name: 'avatar_etag', type: 'string', isOptional: true } + { name: 'avatar_etag', type: 'string', isOptional: true }, + { name: 'team_id', type: 'string', isIndexed: true }, + { name: 'team_main', type: 'boolean', isOptional: true } ] }), tableSchema({ diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.js b/app/lib/methods/helpers/mergeSubscriptionsRooms.js index 895f2a8a46a..82dfc4c68d4 100644 --- a/app/lib/methods/helpers/mergeSubscriptionsRooms.js +++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.js @@ -42,6 +42,8 @@ export const merge = (subscription, room) => { subscription.encrypted = room.encrypted; subscription.e2eKeyId = room.e2eKeyId; subscription.avatarETag = room.avatarETag; + subscription.teamId = room.teamId; + subscription.teamMain = room.teamMain; if (!subscription.roles || !subscription.roles.length) { subscription.roles = []; } diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 262983923d5..3cce8ed0df1 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -931,6 +931,19 @@ const RocketChat = { // RC 2.3.0 return this.sdk.get('livechat/visitors.info', { visitorId }); }, + getTeamListRoom({ + teamId, count, offset, type, filter + }) { + const params = { + teamId, count, offset, type + }; + + if (filter) { + params.filter = filter; + } + // RC 3.13.0 + return this.sdk.get('teams.listRooms', params); + }, closeLivechat(rid, comment) { // RC 0.29.0 return this.methodCallWrapper('livechat:closeRoom', rid, comment, { clientAction: true }); diff --git a/app/presentation/RoomItem/RoomItem.js b/app/presentation/RoomItem/RoomItem.js index 27cf9f37a3f..b3922787b57 100644 --- a/app/presentation/RoomItem/RoomItem.js +++ b/app/presentation/RoomItem/RoomItem.js @@ -44,7 +44,8 @@ const RoomItem = ({ onPress, toggleFav, toggleRead, - hideChannel + hideChannel, + teamMain }) => ( <Touchable onPress={onPress} @@ -78,6 +79,8 @@ const RoomItem = ({ prid={prid} status={status} isGroupChat={isGroupChat} + theme={theme} + teamMain={teamMain} /> <Title name={name} @@ -120,6 +123,8 @@ const RoomItem = ({ prid={prid} status={status} isGroupChat={isGroupChat} + theme={theme} + teamMain={teamMain} /> <Title name={name} @@ -159,6 +164,7 @@ RoomItem.propTypes = { isFocused: PropTypes.bool, isGroupChat: PropTypes.bool, isRead: PropTypes.bool, + teamMain: PropTypes.bool, date: PropTypes.string, accessibilityLabel: PropTypes.string, lastMessage: PropTypes.object, diff --git a/app/presentation/RoomItem/TypeIcon.js b/app/presentation/RoomItem/TypeIcon.js index 2eeded24777..425ee6db46f 100644 --- a/app/presentation/RoomItem/TypeIcon.js +++ b/app/presentation/RoomItem/TypeIcon.js @@ -4,14 +4,15 @@ import PropTypes from 'prop-types'; import RoomTypeIcon from '../../containers/RoomTypeIcon'; const TypeIcon = React.memo(({ - type, prid, status, isGroupChat -}) => <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} />); + type, prid, status, isGroupChat, teamMain +}) => <RoomTypeIcon type={prid ? 'discussion' : type} isGroupChat={isGroupChat} status={status} teamMain={teamMain} />); TypeIcon.propTypes = { type: PropTypes.string, status: PropTypes.string, prid: PropTypes.string, - isGroupChat: PropTypes.bool + isGroupChat: PropTypes.bool, + teamMain: PropTypes.bool }; export default TypeIcon; diff --git a/app/presentation/RoomItem/index.js b/app/presentation/RoomItem/index.js index 1f5bb9e70c0..80bcf063b19 100644 --- a/app/presentation/RoomItem/index.js +++ b/app/presentation/RoomItem/index.js @@ -188,6 +188,7 @@ class RoomItemContainer extends React.Component { tunreadUser={item.tunreadUser} tunreadGroup={item.tunreadGroup} swipeEnabled={swipeEnabled} + teamMain={item.teamMain} /> ); } diff --git a/app/sagas/rooms.js b/app/sagas/rooms.js index f963a29485f..4b0047a146b 100644 --- a/app/sagas/rooms.js +++ b/app/sagas/rooms.js @@ -12,6 +12,7 @@ import mergeSubscriptionsRooms from '../lib/methods/helpers/mergeSubscriptionsRo import RocketChat from '../lib/rocketchat'; import buildMessage from '../lib/methods/helpers/buildMessage'; import protectedFunction from '../lib/methods/helpers/protectedFunction'; +import UserPreferences from '../lib/userPreferences'; const updateRooms = function* updateRooms({ server, newRoomsUpdatedAt }) { const serversDB = database.servers; @@ -47,6 +48,16 @@ const handleRoomsRequest = function* handleRoomsRequest({ params }) { // Server not found } } + + // Force fetch all subscriptions to update columns related to Teams feature + // TODO: remove it a couple of releases + const teamsMigrationKey = `${ server }_TEAMS_MIGRATION`; + const teamsMigration = yield UserPreferences.getBoolAsync(teamsMigrationKey); + if (!teamsMigration) { + roomsUpdatedAt = null; + UserPreferences.setBoolAsync(teamsMigrationKey, true); + } + const [subscriptionsResult, roomsResult] = yield RocketChat.getRooms(roomsUpdatedAt); const { subscriptions } = yield mergeSubscriptionsRooms(subscriptionsResult, roomsResult); diff --git a/app/stacks/InsideStack.js b/app/stacks/InsideStack.js index a0af961771f..bda56f0d233 100644 --- a/app/stacks/InsideStack.js +++ b/app/stacks/InsideStack.js @@ -29,6 +29,7 @@ import ForwardLivechatView from '../views/ForwardLivechatView'; import LivechatEditView from '../views/LivechatEditView'; import PickerView from '../views/PickerView'; import ThreadMessagesView from '../views/ThreadMessagesView'; +import TeamChannelsView from '../views/TeamChannelsView'; import MarkdownTableView from '../views/MarkdownTableView'; import ReadReceiptsView from '../views/ReadReceiptView'; import { themes } from '../constants/colors'; @@ -168,6 +169,11 @@ const ChatsStackNavigator = () => { component={ThreadMessagesView} options={ThreadMessagesView.navigationOptions} /> + <ChatsStack.Screen + name='TeamChannelsView' + component={TeamChannelsView} + options={TeamChannelsView.navigationOptions} + /> <ChatsStack.Screen name='MarkdownTableView' component={MarkdownTableView} diff --git a/app/stacks/MasterDetailStack/index.js b/app/stacks/MasterDetailStack/index.js index db49cf0edc3..7307ba6cae3 100644 --- a/app/stacks/MasterDetailStack/index.js +++ b/app/stacks/MasterDetailStack/index.js @@ -30,6 +30,7 @@ import ForwardLivechatView from '../../views/ForwardLivechatView'; import LivechatEditView from '../../views/LivechatEditView'; import PickerView from '../../views/PickerView'; import ThreadMessagesView from '../../views/ThreadMessagesView'; +import TeamChannelsView from '../../views/TeamChannelsView'; import MarkdownTableView from '../../views/MarkdownTableView'; import ReadReceiptsView from '../../views/ReadReceiptView'; import ProfileView from '../../views/ProfileView'; @@ -193,6 +194,11 @@ const ModalStackNavigator = React.memo(({ navigation }) => { name='ThreadMessagesView' component={ThreadMessagesView} /> + <ModalStack.Screen + name='TeamChannelsView' + component={TeamChannelsView} + options={TeamChannelsView.navigationOptions} + /> <ModalStack.Screen name='MarkdownTableView' component={MarkdownTableView} diff --git a/app/utils/goRoom.js b/app/utils/goRoom.js index f126309513d..94adfde4945 100644 --- a/app/utils/goRoom.js +++ b/app/utils/goRoom.js @@ -2,7 +2,7 @@ import Navigation from '../lib/Navigation'; import RocketChat from '../lib/rocketchat'; const navigate = ({ item, isMasterDetail, ...props }) => { - let navigationMethod = Navigation.navigate; + let navigationMethod = props.navigationMethod ?? Navigation.navigate; if (isMasterDetail) { navigationMethod = Navigation.replace; diff --git a/app/utils/log/events.js b/app/utils/log/events.js index 2e1e8f9a447..fc8d704200a 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -212,6 +212,7 @@ export default { ROOM_JOIN: 'room_join', ROOM_GO_RA: 'room_go_ra', ROOM_TOGGLE_FOLLOW_THREADS: 'room_toggle_follow_threads', + ROOM_GO_TEAM_CHANNELS: 'room_go_team_channels', ROOM_GO_SEARCH: 'room_go_search', ROOM_GO_THREADS: 'room_go_threads', ROOM_GO_ROOM_INFO: 'room_go_room_info', @@ -310,5 +311,11 @@ export default { // E2E ENCRYPTION SECURITY VIEW E2E_SEC_CHANGE_PASSWORD: 'e2e_sec_change_password', - E2E_SEC_RESET_OWN_KEY: 'e2e_sec_reset_own_key' + E2E_SEC_RESET_OWN_KEY: 'e2e_sec_reset_own_key', + + // TEAM CHANNELS VIEW + TC_SEARCH: 'tc_search', + TC_CANCEL_SEARCH: 'tc_cancel_search', + TC_GO_ACTIONS: 'tc_go_actions', + TC_GO_ROOM: 'tc_go_room' }; diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index 7e2aa232379..78178c4cc2b 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -175,7 +175,7 @@ class NewMessageView extends React.Component { {maxUsers > 2 ? this.renderButton({ onPress: this.createGroupChat, title: I18n.t('Create_Direct_Messages'), - icon: 'team', + icon: 'message', testID: 'new-message-view-create-direct-message' }) : null} {this.renderButton({ diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 2686b60ef93..89bc5f229c1 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -461,7 +461,7 @@ class RoomActionsView extends React.Component { ? <Text style={[styles.roomTitle, { color: themes[theme].titleText }]} numberOfLines={1}>{room.fname}</Text> : ( <View style={styles.roomTitleRow}> - <RoomTypeIcon type={room.prid ? 'discussion' : room.t} status={room.visitor?.status} /> + <RoomTypeIcon type={room.prid ? 'discussion' : room.t} teamMain={room.teamMain} status={room.visitor?.status} /> <Text style={[styles.roomTitle, { color: themes[theme].titleText }]} numberOfLines={1}>{RocketChat.getRoomTitle(room)}</Text> </View> ) diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index 5966f312dab..a49aab5b15d 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -41,7 +41,7 @@ const getRoomTitle = (room, type, name, username, statusText, theme) => (type == ) : ( <View style={styles.roomTitleRow}> - <RoomTypeIcon type={room.prid ? 'discussion' : room.t} key='room-info-type' status={room.visitor?.status} /> + <RoomTypeIcon type={room.prid ? 'discussion' : room.t} teamMain={room.teamMain} key='room-info-type' status={room.visitor?.status} /> <Text testID='room-info-view-name' style={[styles.roomTitle, { color: themes[theme].titleText }]} key='room-info-name'>{RocketChat.getRoomTitle(room)}</Text> </View> ) diff --git a/app/views/RoomView/Header/LeftButtons.js b/app/views/RoomView/LeftButtons.js similarity index 93% rename from app/views/RoomView/Header/LeftButtons.js rename to app/views/RoomView/LeftButtons.js index 68ad9b08f37..089c284d69f 100644 --- a/app/views/RoomView/Header/LeftButtons.js +++ b/app/views/RoomView/LeftButtons.js @@ -3,8 +3,8 @@ import PropTypes from 'prop-types'; import { StyleSheet } from 'react-native'; import { HeaderBackButton } from '@react-navigation/stack'; -import { themes } from '../../../constants/colors'; -import Avatar from '../../../containers/Avatar'; +import { themes } from '../../constants/colors'; +import Avatar from '../../containers/Avatar'; const styles = StyleSheet.create({ avatar: { diff --git a/app/views/RoomView/Header/RightButtons.js b/app/views/RoomView/RightButtons.js similarity index 85% rename from app/views/RoomView/Header/RightButtons.js rename to app/views/RoomView/RightButtons.js index 37939b1e30b..debc3edb9e5 100644 --- a/app/views/RoomView/Header/RightButtons.js +++ b/app/views/RoomView/RightButtons.js @@ -3,10 +3,10 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { dequal } from 'dequal'; -import * as HeaderButton from '../../../containers/HeaderButton'; -import database from '../../../lib/database'; -import { getUserSelector } from '../../../selectors/login'; -import { logEvent, events } from '../../../utils/log'; +import * as HeaderButton from '../../containers/HeaderButton'; +import database from '../../lib/database'; +import { getUserSelector } from '../../selectors/login'; +import { logEvent, events } from '../../utils/log'; class RightButtonsContainer extends Component { static propTypes = { @@ -15,6 +15,7 @@ class RightButtonsContainer extends Component { rid: PropTypes.string, t: PropTypes.string, tmid: PropTypes.string, + teamId: PropTypes.bool, navigation: PropTypes.object, isMasterDetail: PropTypes.bool, toggleFollowThread: PropTypes.func @@ -109,6 +110,21 @@ class RightButtonsContainer extends Component { }); } + goTeamChannels = () => { + logEvent(events.ROOM_GO_TEAM_CHANNELS); + const { + navigation, isMasterDetail, teamId + } = this.props; + if (isMasterDetail) { + navigation.navigate('ModalStackNavigator', { + screen: 'TeamChannelsView', + params: { teamId } + }); + } else { + navigation.navigate('TeamChannelsView', { teamId }); + } + } + goThreadsView = () => { logEvent(events.ROOM_GO_THREADS); const { @@ -146,7 +162,9 @@ class RightButtonsContainer extends Component { const { isFollowingThread, tunread, tunreadUser, tunreadGroup } = this.state; - const { t, tmid, threadsEnabled } = this.props; + const { + t, tmid, threadsEnabled, teamId + } = this.props; if (t === 'l') { return null; } @@ -163,6 +181,13 @@ class RightButtonsContainer extends Component { } return ( <HeaderButton.Container> + {teamId ? ( + <HeaderButton.Item + iconName='channel-public' + onPress={this.goTeamChannels} + testID='room-view-header-team-channels' + /> + ) : null} {threadsEnabled ? ( <HeaderButton.Item iconName='threads' diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 405e386e90d..5853717e2f1 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -29,7 +29,9 @@ import styles from './styles'; import log, { logEvent, events } from '../../utils/log'; import EventEmitter from '../../utils/events'; import I18n from '../../i18n'; -import RoomHeaderView, { RightButtons, LeftButtons } from './Header'; +import RoomHeader from '../../containers/RoomHeader'; +import LeftButtons from './LeftButtons'; +import RightButtons from './RightButtons'; import StatusBar from '../../containers/StatusBar'; import Separator from './Separator'; import { themes } from '../../constants/colors'; @@ -317,13 +319,23 @@ class RoomView extends React.Component { } const subtitle = room?.topic; const t = room?.t; + const teamMain = room?.teamMain; + const teamId = room?.teamId; const { id: userId, token } = user; const avatar = room?.name; const visitor = room?.visitor; if (!room?.rid) { return; } - const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight: tmid ? 1 : 2 }); + + let numIconsRight = 2; + if (tmid) { + numIconsRight = 1; + } else if (teamId) { + numIconsRight = 3; + } + const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight }); + navigation.setOptions({ headerShown: true, headerTitleAlign: 'left', @@ -347,24 +359,27 @@ class RoomView extends React.Component { /> ), headerTitle: () => ( - <RoomHeaderView + <RoomHeader rid={rid} prid={prid} tmid={tmid} title={title} + teamMain={teamMain} parentTitle={parentTitle} subtitle={subtitle} type={t} roomUserId={roomUserId} visitor={visitor} isGroupChat={isGroupChat} - goRoomActionsView={this.goRoomActionsView} + onPress={this.goRoomActionsView} + testID={`room-view-title-${ title }`} /> ), headerRight: () => ( <RightButtons rid={rid} tmid={tmid} + teamId={teamId} t={t} navigation={navigation} toggleFollowThread={this.toggleFollowThread} diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index a0b3984e6c6..4c12c4dded7 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -68,6 +68,7 @@ const CHATS_HEADER = 'Chats'; const UNREAD_HEADER = 'Unread'; const FAVORITES_HEADER = 'Favorites'; const DISCUSSIONS_HEADER = 'Discussions'; +const TEAMS_HEADER = 'Teams'; const CHANNELS_HEADER = 'Channels'; const DM_HEADER = 'Direct_Messages'; const GROUPS_HEADER = 'Private_Groups'; @@ -77,6 +78,8 @@ const QUERY_SIZE = 20; const filterIsUnread = s => (s.unread > 0 || s.tunread?.length > 0 || s.alert) && !s.hideUnreadStatus; const filterIsFavorite = s => s.f; const filterIsOmnichannel = s => s.t === 'l'; +const filterIsTeam = s => s.teamMain; +const filterIsDiscussion = s => s.prid; const shouldUpdateProps = [ 'searchText', @@ -475,10 +478,12 @@ class RoomsListView extends React.Component { // type if (groupByType) { - const discussions = chats.filter(s => s.prid); - const channels = chats.filter(s => s.t === 'c' && !s.prid); - const privateGroup = chats.filter(s => s.t === 'p' && !s.prid); - const direct = chats.filter(s => s.t === 'd' && !s.prid); + const teams = chats.filter(s => filterIsTeam(s)); + const discussions = chats.filter(s => filterIsDiscussion(s)); + const channels = chats.filter(s => s.t === 'c' && !filterIsDiscussion(s) && !filterIsTeam(s)); + const privateGroup = chats.filter(s => s.t === 'p' && !filterIsDiscussion(s) && !filterIsTeam(s)); + const direct = chats.filter(s => s.t === 'd' && !filterIsDiscussion(s) && !filterIsTeam(s)); + tempChats = this.addRoomsGroup(teams, TEAMS_HEADER, tempChats); tempChats = this.addRoomsGroup(discussions, DISCUSSIONS_HEADER, tempChats); tempChats = this.addRoomsGroup(channels, CHANNELS_HEADER, tempChats); tempChats = this.addRoomsGroup(privateGroup, GROUPS_HEADER, tempChats); diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js new file mode 100644 index 00000000000..ab8d261e4b2 --- /dev/null +++ b/app/views/TeamChannelsView.js @@ -0,0 +1,369 @@ +import React from 'react'; +import { Keyboard } from 'react-native'; +import PropTypes from 'prop-types'; +import { Q } from '@nozbe/watermelondb'; +import { withSafeAreaInsets } from 'react-native-safe-area-context'; +import { connect } from 'react-redux'; +import { FlatList } from 'react-native-gesture-handler'; +import { HeaderBackButton } from '@react-navigation/stack'; + +import StatusBar from '../containers/StatusBar'; +import RoomHeader from '../containers/RoomHeader'; +import { withTheme } from '../theme'; +import SearchHeader from './ThreadMessagesView/SearchHeader'; +import log, { events, logEvent } from '../utils/log'; +import database from '../lib/database'; +import { getUserSelector } from '../selectors/login'; +import { getHeaderTitlePosition } from '../containers/Header'; +import * as HeaderButton from '../containers/HeaderButton'; +import BackgroundContainer from '../containers/BackgroundContainer'; +import SafeAreaView from '../containers/SafeAreaView'; +import ActivityIndicator from '../containers/ActivityIndicator'; +import RoomItem, { ROW_HEIGHT } from '../presentation/RoomItem'; +import RocketChat from '../lib/rocketchat'; +import { withDimensions } from '../dimensions'; +import { isIOS } from '../utils/deviceInfo'; +import { themes } from '../constants/colors'; +import debounce from '../utils/debounce'; +import { showErrorAlert } from '../utils/info'; +import { goRoom } from '../utils/goRoom'; +import I18n from '../i18n'; + +const API_FETCH_COUNT = 50; + +const getItemLayout = (data, index) => ({ + length: data.length, + offset: ROW_HEIGHT * index, + index +}); +const keyExtractor = item => item._id; + +class TeamChannelsView extends React.Component { + static propTypes = { + route: PropTypes.object, + navigation: PropTypes.object, + isMasterDetail: PropTypes.bool, + insets: PropTypes.object, + theme: PropTypes.string, + useRealName: PropTypes.bool, + width: PropTypes.number, + StoreLastMessage: PropTypes.bool + } + + constructor(props) { + super(props); + this.teamId = props.route.params?.teamId; + this.state = { + loading: true, + loadingMore: false, + data: [], + total: -1, + isSearching: false, + searchText: '', + search: [] + }; + this.loadTeam(); + } + + componentDidMount() { + this.load(); + } + + loadTeam = async() => { + const db = database.active; + try { + const subCollection = db.get('subscriptions'); + this.teamChannels = await subCollection.query( + Q.where('team_id', Q.eq(this.teamId)) + ); + this.team = this.teamChannels?.find(channel => channel.teamMain); + this.setHeader(); + + if (!this.team) { + throw new Error(); + } + } catch { + const { navigation } = this.props; + navigation.pop(); + showErrorAlert(I18n.t('Team_not_found')); + } + } + + load = debounce(async() => { + const { + loadingMore, total, data, search, isSearching, searchText + } = this.state; + + const length = isSearching ? search.length : data.length; + if (loadingMore || length === total) { + return; + } + + this.setState({ loadingMore: true }); + try { + const result = await RocketChat.getTeamListRoom({ + teamId: this.teamId, + offset: length, + count: API_FETCH_COUNT, + type: 'all', + filter: searchText + }); + + if (result.success) { + const newState = { + loading: false, + loadingMore: false, + total: result.total + }; + const rooms = result.rooms.map((room) => { + const record = this.teamChannels?.find(c => c.rid === room._id); + return record ?? room; + }); + if (isSearching) { + newState.search = [...search, ...rooms]; + } else { + newState.data = [...data, ...rooms]; + } + + this.setState(newState); + } else { + this.setState({ loading: false, loadingMore: false }); + } + } catch (e) { + log(e); + this.setState({ loading: false, loadingMore: false }); + } + }, 300) + + getHeader = () => { + const { isSearching } = this.state; + const { + navigation, isMasterDetail, insets, theme + } = this.props; + + const { team } = this; + if (!team) { + return; + } + + const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight: 1 }); + + if (isSearching) { + return { + headerTitleAlign: 'left', + headerLeft: () => ( + <HeaderButton.Container left> + <HeaderButton.Item + iconName='close' + onPress={this.onCancelSearchPress} + /> + </HeaderButton.Container> + ), + headerTitle: () => <SearchHeader onSearchChangeText={this.onSearchChangeText} />, + headerTitleContainerStyle: { + left: headerTitlePosition.left, + right: headerTitlePosition.right + }, + headerRight: () => null + }; + } + + const options = { + headerShown: true, + headerTitleAlign: 'left', + headerTitleContainerStyle: { + left: headerTitlePosition.left, + right: headerTitlePosition.right + }, + headerTitle: () => ( + <RoomHeader + title={RocketChat.getRoomTitle(team)} + subtitle={team.topic} + type={team.t} + onPress={this.goRoomActionsView} + teamMain + /> + ) + }; + + if (isMasterDetail) { + options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} />; + } else { + options.headerLeft = () => ( + <HeaderBackButton + labelVisible={false} + onPress={() => navigation.pop()} + tintColor={themes[theme].headerTintColor} + /> + ); + } + + options.headerRight = () => ( + <HeaderButton.Container> + <HeaderButton.Item iconName='search' onPress={this.onSearchPress} /> + </HeaderButton.Container> + ); + return options; + } + + setHeader = () => { + const { navigation } = this.props; + const options = this.getHeader(); + navigation.setOptions(options); + } + + onSearchPress = () => { + logEvent(events.TC_SEARCH); + this.setState({ isSearching: true }, () => this.setHeader()); + } + + onSearchChangeText = debounce((searchText) => { + this.setState({ + searchText, search: [], loading: !!searchText, loadingMore: false, total: -1 + }, () => { + if (searchText) { + this.load(); + } + }); + }, 300) + + onCancelSearchPress = () => { + logEvent(events.TC_CANCEL_SEARCH); + const { isSearching } = this.state; + if (!isSearching) { + return; + } + Keyboard.dismiss(); + this.setState({ isSearching: false, search: [] }, () => { + this.setHeader(); + }); + }; + + goRoomActionsView = (screen) => { + logEvent(events.TC_GO_ACTIONS); + const { team } = this; + const { + navigation, isMasterDetail + } = this.props; + if (isMasterDetail) { + navigation.navigate('ModalStackNavigator', { + screen: screen ?? 'RoomActionsView', + params: { + rid: team.rid, t: team.t, room: team, showCloseModal: false + } + }); + } else { + navigation.navigate('RoomActionsView', { + rid: team.rid, t: team.t, room: team + }); + } + } + + getRoomTitle = item => RocketChat.getRoomTitle(item) + + getRoomAvatar = item => RocketChat.getRoomAvatar(item) + + onPressItem = debounce(async(item) => { + logEvent(events.TC_GO_ROOM); + const { navigation, isMasterDetail } = this.props; + try { + let params = {}; + if (item.rid) { + params = item; + } else { + const { room } = await RocketChat.getRoomInfo(item._id); + params = { + rid: item._id, name: RocketChat.getRoomTitle(room), joinCodeRequired: room.joinCodeRequired, t: room.t, teamId: room.teamId + }; + } + if (isMasterDetail) { + navigation.pop(); + } + goRoom({ item: params, isMasterDetail, navigationMethod: navigation.push }); + } catch (e) { + // do nothing + } + }, 1000, true); + + renderItem = ({ item }) => { + const { + StoreLastMessage, + useRealName, + theme, + width + } = this.props; + return ( + <RoomItem + item={item} + theme={theme} + type={item.t} + showLastMessage={StoreLastMessage} + onPress={this.onPressItem} + width={width} + useRealName={useRealName} + getRoomTitle={this.getRoomTitle} + getRoomAvatar={this.getRoomAvatar} + swipeEnabled={false} + /> + ); + }; + + renderFooter = () => { + const { loadingMore } = this.state; + const { theme } = this.props; + if (loadingMore) { + return <ActivityIndicator theme={theme} />; + } + return null; + } + + renderScroll = () => { + const { + loading, data, search, isSearching, searchText + } = this.state; + if (loading) { + return <BackgroundContainer loading />; + } + if (isSearching && !search.length) { + return <BackgroundContainer text={searchText ? I18n.t('No_team_channels_found') : ''} />; + } + if (!isSearching && !data.length) { + return <BackgroundContainer text={I18n.t('No_team_channels_found')} />; + } + + return ( + <FlatList + data={isSearching ? search : data} + extraData={isSearching ? search : data} + keyExtractor={keyExtractor} + renderItem={this.renderItem} + getItemLayout={getItemLayout} + removeClippedSubviews={isIOS} + keyboardShouldPersistTaps='always' + onEndReached={() => this.load()} + onEndReachedThreshold={0.5} + ListFooterComponent={this.renderFooter} + /> + ); + }; + + render() { + console.count(`${ this.constructor.name }.render calls`); + return ( + <SafeAreaView testID='team-channels-view'> + <StatusBar /> + {this.renderScroll()} + </SafeAreaView> + ); + } +} + +const mapStateToProps = state => ({ + baseUrl: state.server.server, + user: getUserSelector(state), + useRealName: state.settings.UI_Use_Real_Name, + isMasterDetail: state.app.isMasterDetail, + StoreLastMessage: state.settings.Store_Last_Message +}); + +export default connect(mapStateToProps)(withDimensions(withSafeAreaInsets(withTheme(TeamChannelsView)))); diff --git a/app/views/ThreadMessagesView/index.js b/app/views/ThreadMessagesView/index.js index 417c103283f..48cab9c9917 100644 --- a/app/views/ThreadMessagesView/index.js +++ b/app/views/ThreadMessagesView/index.js @@ -28,7 +28,7 @@ import * as List from '../../containers/List'; import Dropdown from './Dropdown'; import DropdownItemHeader from './Dropdown/DropdownItemHeader'; import { FILTER } from './filters'; -import NoDataFound from './NoDataFound'; +import BackgroundContainer from '../../containers/BackgroundContainer'; import { isIOS } from '../../utils/deviceInfo'; import { getBadgeColor, makeThreadName } from '../../utils/room'; import { getHeaderTitlePosition } from '../../containers/Header'; @@ -463,7 +463,7 @@ class ThreadMessagesView extends React.Component { return ( <> {this.renderHeader()} - <NoDataFound text={text} /> + <BackgroundContainer text={text} /> </> ); } diff --git a/e2e/tests/assorted/02-broadcast.spec.js b/e2e/tests/assorted/02-broadcast.spec.js index 9e87c5e14b6..97e5783cf60 100644 --- a/e2e/tests/assorted/02-broadcast.spec.js +++ b/e2e/tests/assorted/02-broadcast.spec.js @@ -32,7 +32,7 @@ describe('Broadcast room', () => { await element(by.id('create-channel-submit')).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000); await waitFor(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible().withTimeout(60000); - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); await element(by.id('room-actions-info')).tap(); await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000); diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 90707f9f959..1cf9a7fd462 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -15,7 +15,7 @@ async function navigateToRoom() { } async function navigateToRoomActions() { - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); } @@ -39,7 +39,7 @@ describe('Join public room', () => { // Render - Header describe('Header', async() => { it('should have actions button ', async() => { - await expect(element(by.id('room-view-header-actions'))).toBeVisible(); + await expect(element(by.id('room-header'))).toBeVisible(); }); }); diff --git a/e2e/tests/assorted/08-joinprotectedroom.spec.js b/e2e/tests/assorted/08-joinprotectedroom.spec.js index 32b23e9b3c0..965af00a45d 100644 --- a/e2e/tests/assorted/08-joinprotectedroom.spec.js +++ b/e2e/tests/assorted/08-joinprotectedroom.spec.js @@ -16,7 +16,7 @@ async function navigateToRoom() { } async function navigateToRoomActions() { - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index 228c340bc99..e5fb429256e 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -30,7 +30,7 @@ describe('Room screen', () => { // Render - Header describe('Header', async() => { it('should have actions button ', async() => { - await expect(element(by.id('room-view-header-actions'))).toExist(); + await expect(element(by.id('room-header'))).toExist(); }); it('should have threads button ', async() => { diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index 74b3114b2c5..494a8e394de 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -16,7 +16,7 @@ async function navigateToRoomActions(type) { await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); } @@ -218,7 +218,7 @@ describe('Room actions screen', () => { await starMessage('messageToStar') //Back into Room Actions - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); //Go to starred messages @@ -246,7 +246,7 @@ describe('Room actions screen', () => { await pinMessage('messageToPin') //Back into Room Actions - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); await waitFor(element(by.id('room-actions-pinned'))).toExist(); @@ -270,7 +270,7 @@ describe('Room actions screen', () => { await mockMessage('messageToFind'); //Back into Room Actions - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); await element(by.id('room-actions-search')).tap(); @@ -499,7 +499,7 @@ describe('Room actions screen', () => { }); it('should navigate to direct message', async() => { - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); await element(by.id('room-actions-members')).tap(); await waitFor(element(by.id('room-members-view'))).toExist().withTimeout(2000); diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js index 55ee40ab263..d1686840f4d 100644 --- a/e2e/tests/room/04-discussion.spec.js +++ b/e2e/tests/room/04-discussion.spec.js @@ -74,8 +74,8 @@ describe('Discussion', () => { describe('Check RoomActionsView render', async() => { it('should navigete to RoomActionsView', async() => { - await waitFor(element(by.id('room-view-header-actions'))).toBeVisible().withTimeout(5000); - await element(by.id('room-view-header-actions')).tap(); + await waitFor(element(by.id('room-header'))).toBeVisible().withTimeout(5000); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); }); diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js index 349c5d6d268..1b7c64b814f 100644 --- a/e2e/tests/room/05-threads.spec.js +++ b/e2e/tests/room/05-threads.spec.js @@ -30,7 +30,7 @@ describe('Threads', () => { // Render - Header describe('Header', async() => { it('should have actions button ', async() => { - await expect(element(by.id('room-view-header-actions'))).toExist(); + await expect(element(by.id('room-header'))).toExist(); }); it('should have threads button ', async() => { @@ -105,8 +105,8 @@ describe('Threads', () => { const messageText = 'threadonly'; await mockMessage(messageText); await tapBack(); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( await waitFor(element(by.label(`${ data.random }${ messageText }`)).atIndex(0)).toNotExist().withTimeout(2000); }); @@ -118,8 +118,8 @@ describe('Threads', () => { await element(by.id('messagebox-send-to-channel')).tap(); await element(by.id('messagebox-send-message')).tap(); await tapBack(); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( await waitFor(element(by.label(messageText)).atIndex(0)).toExist().withTimeout(2000); }); @@ -133,8 +133,8 @@ describe('Threads', () => { await element(by.id('messagebox-send-to-channel')).tap(); await element(by.id('messagebox-send-message')).tap(); await tapBack(); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( await element(by.id(`message-thread-replied-on-${ thread }`)).tap(); diff --git a/e2e/tests/room/08-roominfo.spec.js b/e2e/tests/room/08-roominfo.spec.js index 9fd9aebbf69..b172935cf42 100644 --- a/e2e/tests/room/08-roominfo.spec.js +++ b/e2e/tests/room/08-roominfo.spec.js @@ -17,7 +17,7 @@ async function navigateToRoomInfo(type) { await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); - await element(by.id('room-view-header-actions')).tap(); + await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); await element(by.id('room-actions-info')).tap(); await waitFor(element(by.id('room-info-view'))).toExist().withTimeout(2000); diff --git a/storybook/stories/RoomViewHeader.js b/storybook/stories/RoomViewHeader.js deleted file mode 100644 index cce19f67596..00000000000 --- a/storybook/stories/RoomViewHeader.js +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react'; -import { ScrollView, View, StyleSheet } from 'react-native'; -import { HeaderBackButton } from '@react-navigation/stack'; - -import HeaderComponent from '../../app/views/RoomView/Header/Header'; -// import { CustomHeaderButtons, Item } from '../../app/containers/HeaderButton'; -import StoriesSeparator from './StoriesSeparator'; -import { isIOS } from '../../app/utils/deviceInfo'; -import { themes } from '../../app/constants/colors'; - -let _theme = 'light'; - -const styles = StyleSheet.create({ - container: { - flex: 1, - flexDirection: 'row', - height: isIOS ? 44 : 56, - borderTopWidth: 1, - borderBottomWidth: 1, - marginVertical: 6 - } -}); - -const Header = props => ( - <View style={[styles.container, { backgroundColor: themes[_theme].headerBackground }]}> - <HeaderBackButton /> - <HeaderComponent - title='test' - type='d' - width={375} - height={480} - theme={_theme} - {...props} - /> - {/* not working because we use withTheme */} - {/* <CustomHeaderButtons> - <Item title='thread' iconName='thread' /> - </CustomHeaderButtons> - <CustomHeaderButtons> - <Item title='more' iconName='menu' /> - </CustomHeaderButtons> */} - </View> -); - -// eslint-disable-next-line react/prop-types -export default ({ theme }) => { - _theme = theme; - return ( - <ScrollView style={{ backgroundColor: themes[theme].auxiliaryBackground }}> - <StoriesSeparator title='Basic' theme={theme} /> - <Header /> - - <StoriesSeparator title='Types' theme={theme} /> - <Header type='d' /> - <Header type='c' /> - <Header type='p' /> - <Header type='discussion' /> - <Header type='thread' /> - - <StoriesSeparator title='Typing' theme={theme} /> - <Header usersTyping={['diego.mello']} /> - <Header usersTyping={['diego.mello', 'rocket.cat']} /> - <Header usersTyping={['diego.mello', 'rocket.cat', 'detoxrn']} /> - - <StoriesSeparator title='Title scroll' theme={theme} /> - <Header title='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' /> - <Header - title='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' - usersTyping={['diego.mello', 'rocket.cat', 'detoxrn']} - /> - </ScrollView> - ); -}; diff --git a/storybook/stories/index.js b/storybook/stories/index.js index 8edb159ba6b..cd84085c197 100644 --- a/storybook/stories/index.js +++ b/storybook/stories/index.js @@ -14,6 +14,8 @@ import Markdown from './Markdown'; import './HeaderButtons'; import './UnreadBadge'; import '../../app/views/ThreadMessagesView/Item.stories.js'; +import '../../app/containers/BackgroundContainer/index.stories.js'; +import '../../app/containers/RoomHeader/RoomHeader.stories.js'; import Avatar from './Avatar'; // import RoomViewHeader from './RoomViewHeader'; From 9ce374dc2d6782cde2e4f050a8a0c5ad8bdd9169 Mon Sep 17 00:00:00 2001 From: Sumukha Hegde <SUMUKHA214@GMAIL.COM> Date: Thu, 8 Apr 2021 00:26:16 +0530 Subject: [PATCH 098/177] [CHORE] Refactor mention tracking logic (#2997) * [Improvement] Improve mentions This PR focuses on improving command, emoji, channel and user mentions. * [Tests] Added e2e tests for mention improvement * [Improvement] Modify slash command mention logic. Added slash command with argument preview Slash command should show only if the message bigins with / * Return data on search for empty text * Minor fixes * Update e2e tests * Minor fix * [FIX] allow command mentioning in between text Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/MessageBox/Mentions/index.js | 2 +- app/containers/MessageBox/constants.js | 1 + app/containers/MessageBox/index.js | 103 ++++++++---------- app/lib/rocketchat.js | 7 -- app/utils/avatar.js | 2 +- app/views/RoomsListView/index.js | 1 + e2e/helpers/app.js | 2 + e2e/tests/assorted/01-e2eencryption.spec.js | 1 - e2e/tests/assorted/02-broadcast.spec.js | 1 - e2e/tests/assorted/04-setting.spec.js | 6 +- e2e/tests/assorted/05-joinpublicroom.spec.js | 1 - .../assorted/08-joinprotectedroom.spec.js | 1 - e2e/tests/onboarding/06-roomslist.spec.js | 1 - e2e/tests/room/02-room.spec.js | 23 +++- e2e/tests/room/03-roomactions.spec.js | 1 - e2e/tests/room/04-discussion.spec.js | 1 - e2e/tests/room/05-threads.spec.js | 1 - e2e/tests/room/07-markasunread.spec.js | 1 - e2e/tests/room/08-roominfo.spec.js | 1 - 19 files changed, 80 insertions(+), 77 deletions(-) diff --git a/app/containers/MessageBox/Mentions/index.js b/app/containers/MessageBox/Mentions/index.js index fb845b2adda..cb99dcdd718 100644 --- a/app/containers/MessageBox/Mentions/index.js +++ b/app/containers/MessageBox/Mentions/index.js @@ -18,7 +18,7 @@ const Mentions = React.memo(({ mentions, trackingType, theme }) => { data={mentions} extraData={mentions} renderItem={({ item }) => <MentionItem item={item} trackingType={trackingType} theme={theme} />} - keyExtractor={item => item.id || item.username || item.command || item} + keyExtractor={item => item.rid || item.name || item.command || item} keyboardShouldPersistTaps='always' /> </View> diff --git a/app/containers/MessageBox/constants.js b/app/containers/MessageBox/constants.js index d5ef03e2fd7..8fe37fc8c2c 100644 --- a/app/containers/MessageBox/constants.js +++ b/app/containers/MessageBox/constants.js @@ -1,4 +1,5 @@ export const MENTIONS_TRACKING_TYPE_USERS = '@'; export const MENTIONS_TRACKING_TYPE_EMOJIS = ':'; export const MENTIONS_TRACKING_TYPE_COMMANDS = '/'; +export const MENTIONS_TRACKING_TYPE_ROOMS = '#'; export const MENTIONS_COUNT_TO_DISPLAY = 4; diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index 9a075e31a90..1fc874f9fdb 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -41,7 +41,8 @@ import { MENTIONS_TRACKING_TYPE_EMOJIS, MENTIONS_TRACKING_TYPE_COMMANDS, MENTIONS_COUNT_TO_DISPLAY, - MENTIONS_TRACKING_TYPE_USERS + MENTIONS_TRACKING_TYPE_USERS, + MENTIONS_TRACKING_TYPE_ROOMS } from './constants'; import CommandsPreview from './CommandsPreview'; import { getUserSelector } from '../../selectors/login'; @@ -354,58 +355,48 @@ class MessageBox extends Component { // eslint-disable-next-line react/sort-comp debouncedOnChangeText = debounce(async(text) => { const { sharing } = this.props; - const db = database.active; const isTextEmpty = text.length === 0; - // this.setShowSend(!isTextEmpty); + if (isTextEmpty) { + this.stopTrackingMention(); + return; + } this.handleTyping(!isTextEmpty); - - if (!sharing) { - // matches if their is text that stats with '/' and group the command and params so we can use it "/command params" - const slashCommand = text.match(/^\/([a-z0-9._-]+) (.+)/im); - if (slashCommand) { - const [, name, params] = slashCommand; + const { start, end } = this.selection; + const cursor = Math.max(start, end); + const txt = cursor < text.length ? text.substr(0, cursor).split(' ') : text.split(' '); + const lastWord = txt[txt.length - 1]; + const result = lastWord.substring(1); + + const commandMention = text.match(/^\//); // match only if message begins with / + const channelMention = lastWord.match(/^#/); + const userMention = lastWord.match(/^@/); + const emojiMention = lastWord.match(/^:/); + + if (commandMention && !sharing) { + const command = text.substr(1); + const commandParameter = text.match(/^\/([a-z0-9._-]+) (.+)/im); + if (commandParameter) { + const db = database.active; + const [, name, params] = commandParameter; const commandsCollection = db.get('slash_commands'); try { - const command = await commandsCollection.find(name); - if (command.providesPreview) { - return this.setCommandPreview(command, name, params); + const commandRecord = await commandsCollection.find(name); + if (commandRecord.providesPreview) { + return this.setCommandPreview(commandRecord, name, params); } } catch (e) { - console.log('Slash command not found'); - } - } - } - - if (!isTextEmpty) { - try { - const { start, end } = this.selection; - const cursor = Math.max(start, end); - const lastNativeText = this.text; - // matches if text either starts with '/' or have (@,#,:) then it groups whatever comes next of mention type - let regexp = /(#|@|:|^\/)([a-z0-9._-]+)$/im; - - // if sharing, track #|@|: - if (sharing) { - regexp = /(#|@|:)([a-z0-9._-]+)$/im; - } - - const result = lastNativeText.substr(0, cursor).match(regexp); - if (!result) { - if (!sharing) { - const slash = lastNativeText.match(/^\/$/); // matches only '/' in input - if (slash) { - return this.identifyMentionKeyword('', MENTIONS_TRACKING_TYPE_COMMANDS); - } - } - return this.stopTrackingMention(); + // do nothing } - const [, lastChar, name] = result; - this.identifyMentionKeyword(name, lastChar); - } catch (e) { - log(e); } + return this.identifyMentionKeyword(command, MENTIONS_TRACKING_TYPE_COMMANDS); + } else if (channelMention) { + return this.identifyMentionKeyword(result, MENTIONS_TRACKING_TYPE_ROOMS); + } else if (userMention) { + return this.identifyMentionKeyword(result, MENTIONS_TRACKING_TYPE_USERS); + } else if (emojiMention) { + return this.identifyMentionKeyword(result, MENTIONS_TRACKING_TYPE_EMOJIS); } else { - this.stopTrackingMention(); + return this.stopTrackingMention(); } }, 100) @@ -483,10 +474,10 @@ class MessageBox extends Component { getFixedMentions = (keyword) => { let result = []; if ('all'.indexOf(keyword) !== -1) { - result = [{ id: -1, username: 'all' }]; + result = [{ rid: -1, username: 'all' }]; } if ('here'.indexOf(keyword) !== -1) { - result = [{ id: -2, username: 'here' }, ...result]; + result = [{ rid: -2, username: 'here' }, ...result]; } return result; } @@ -504,17 +495,17 @@ class MessageBox extends Component { getEmojis = debounce(async(keyword) => { const db = database.active; - if (keyword) { - const customEmojisCollection = db.get('custom_emojis'); - const likeString = sanitizeLikeString(keyword); - let customEmojis = await customEmojisCollection.query( - Q.where('name', Q.like(`${ likeString }%`)) - ).fetch(); - customEmojis = customEmojis.slice(0, MENTIONS_COUNT_TO_DISPLAY); - const filteredEmojis = emojis.filter(emoji => emoji.indexOf(keyword) !== -1).slice(0, MENTIONS_COUNT_TO_DISPLAY); - const mergedEmojis = [...customEmojis, ...filteredEmojis].slice(0, MENTIONS_COUNT_TO_DISPLAY); - this.setState({ mentions: mergedEmojis || [] }); + const customEmojisCollection = db.get('custom_emojis'); + const likeString = sanitizeLikeString(keyword); + const whereClause = []; + if (likeString) { + whereClause.push(Q.where('name', Q.like(`${ likeString }%`))); } + let customEmojis = await customEmojisCollection.query(...whereClause).fetch(); + customEmojis = customEmojis.slice(0, MENTIONS_COUNT_TO_DISPLAY); + const filteredEmojis = emojis.filter(emoji => emoji.indexOf(keyword) !== -1).slice(0, MENTIONS_COUNT_TO_DISPLAY); + const mergedEmojis = [...customEmojis, ...filteredEmojis].slice(0, MENTIONS_COUNT_TO_DISPLAY); + this.setState({ mentions: mergedEmojis || [] }); }, 300) getSlashCommands = debounce(async(keyword) => { diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 3cce8ed0df1..fc73e375fa0 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -618,9 +618,6 @@ const RocketChat = { async localSearch({ text, filterUsers = true, filterRooms = true }) { const searchText = text.trim(); - if (searchText === '') { - return []; - } const db = database.active; const likeString = sanitizeLikeString(searchText); let data = await db.get('subscriptions').query( @@ -659,10 +656,6 @@ const RocketChat = { this.oldPromise('cancel'); } - if (searchText === '') { - return []; - } - const data = await this.localSearch({ text, filterUsers, filterRooms }); const usernames = data.map(sub => sub.name); diff --git a/app/utils/avatar.js b/app/utils/avatar.js index c0b4e2db928..664c3ea451b 100644 --- a/app/utils/avatar.js +++ b/app/utils/avatar.js @@ -3,7 +3,7 @@ import { compareServerVersion, methods } from '../lib/utils'; const formatUrl = (url, size, query) => `${ url }?format=png&size=${ size }${ query }`; export const avatarURL = ({ - type, text, size, user = {}, avatar, server, avatarETag, rid, blockUnauthenticatedAccess, serverVersion + type, text, size = 25, user = {}, avatar, server, avatarETag, rid, blockUnauthenticatedAccess, serverVersion }) => { let room; if (type === 'd') { diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 4c12c4dded7..19df2c3b0ff 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -519,6 +519,7 @@ class RoomsListView extends React.Component { const { openSearchHeader } = this.props; this.internalSetState({ searching: true }, () => { openSearchHeader(); + this.search(''); this.setHeader(); }); }; diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index 8a07cb45c2a..2706eb2f6fb 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -101,6 +101,8 @@ async function searchRoom(room) { await expect(element(by.id('rooms-list-view-search-input'))).toExist(); await waitFor(element(by.id('rooms-list-view-search-input'))).toExist().withTimeout(5000); await element(by.id('rooms-list-view-search-input')).typeText(room); + await sleep(300); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); } async function tryTapping(theElement, timeout, longtap = false){ diff --git a/e2e/tests/assorted/01-e2eencryption.spec.js b/e2e/tests/assorted/01-e2eencryption.spec.js index f3e4bcf909f..dc85cb7b5b3 100644 --- a/e2e/tests/assorted/01-e2eencryption.spec.js +++ b/e2e/tests/assorted/01-e2eencryption.spec.js @@ -22,7 +22,6 @@ const checkBanner = async() => { async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); - await waitFor(element(by.id(`rooms-list-view-item-${ roomName }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/assorted/02-broadcast.spec.js b/e2e/tests/assorted/02-broadcast.spec.js index 97e5783cf60..a11f717133e 100644 --- a/e2e/tests/assorted/02-broadcast.spec.js +++ b/e2e/tests/assorted/02-broadcast.spec.js @@ -61,7 +61,6 @@ describe('Broadcast room', () => { //await element(by.id('two-factor-send')).tap(); await searchRoom(`broadcast${ data.random }`); - await waitFor(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-broadcast${ data.random }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible().withTimeout(60000); diff --git a/e2e/tests/assorted/04-setting.spec.js b/e2e/tests/assorted/04-setting.spec.js index 419d377d25e..201ac62008d 100644 --- a/e2e/tests/assorted/04-setting.spec.js +++ b/e2e/tests/assorted/04-setting.spec.js @@ -83,7 +83,11 @@ describe('Settings screen', () => { await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); // Database was cleared, so the room shouldn't be there anymore while it's fetched again from the server - await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toNotExist().withTimeout(10000); + /** + * FIXME: rooms are fetched to quickly on docker and the test below fails + * We need to think on another way to test database being resetted + */ + // await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toNotExist().withTimeout(10000); await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toExist().withTimeout(10000); }) }); diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 1cf9a7fd462..8e97a893e2a 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -9,7 +9,6 @@ const room = data.channels.detoxpublic.name; async function navigateToRoom() { await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/assorted/08-joinprotectedroom.spec.js b/e2e/tests/assorted/08-joinprotectedroom.spec.js index 965af00a45d..a07d541cd93 100644 --- a/e2e/tests/assorted/08-joinprotectedroom.spec.js +++ b/e2e/tests/assorted/08-joinprotectedroom.spec.js @@ -10,7 +10,6 @@ const joinCode = data.channels.detoxpublicprotected.joinCode async function navigateToRoom() { await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/onboarding/06-roomslist.spec.js b/e2e/tests/onboarding/06-roomslist.spec.js index e213b7f2c74..ea6dc06c173 100644 --- a/e2e/tests/onboarding/06-roomslist.spec.js +++ b/e2e/tests/onboarding/06-roomslist.spec.js @@ -36,7 +36,6 @@ describe('Rooms list screen', () => { describe('Usage', () => { it('should search room and navigate', async() => { await searchRoom('rocket.cat'); - await waitFor(element(by.id('rooms-list-view-item-rocket.cat'))).toBeVisible().withTimeout(60000); await element(by.id('rooms-list-view-item-rocket.cat')).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(10000); await waitFor(element(by.id('room-view-title-rocket.cat'))).toBeVisible().withTimeout(60000); diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index e5fb429256e..da83c1eb27f 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -6,7 +6,6 @@ const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMes async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); - await waitFor(element(by.id(`rooms-list-view-item-${ roomName }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } @@ -103,6 +102,14 @@ describe('Room screen', () => { await element(by.id('messagebox-input')).clearText(); }); + it('should not show emoji autocomplete on semicolon in middle of a string', async() => { + await element(by.id('messagebox-input')).tap(); + // await element(by.id('messagebox-input')).replaceText(':'); + await element(by.id('messagebox-input')).typeText('name:is'); + await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(20000); + await element(by.id('messagebox-input')).clearText(); + }); + it('should show and tap on user autocomplete and send mention', async() => { const username = data.users.regular.username await element(by.id('messagebox-input')).tap(); @@ -117,6 +124,14 @@ describe('Room screen', () => { // await waitFor(element(by.label(`@${ data.user } ${ data.random }mention`)).atIndex(0)).toExist().withTimeout(60000); }); + it('should not show user autocomplete on @ in the middle of a string', async() => { + const username = data.users.regular.username + await element(by.id('messagebox-input')).tap(); + await element(by.id('messagebox-input')).typeText(`email@gmail`); + await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(4000); + await element(by.id('messagebox-input')).clearText(); + }); + it('should show and tap on room autocomplete', async() => { await element(by.id('messagebox-input')).tap(); await element(by.id('messagebox-input')).typeText('#general'); @@ -127,6 +142,12 @@ describe('Room screen', () => { await element(by.id('messagebox-input')).clearText(); }); + it('should not show room autocomplete on # in middle of a string', async() => { + await element(by.id('messagebox-input')).tap(); + await element(by.id('messagebox-input')).typeText('te#gen'); + await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(4000); + await element(by.id('messagebox-input')).clearText(); + }); it('should draft message', async () => { await element(by.id('messagebox-input')).atIndex(0).tap(); await element(by.id('messagebox-input')).atIndex(0).typeText(`${ data.random }draft`); diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index 494a8e394de..c7945f651ac 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -13,7 +13,6 @@ async function navigateToRoomActions(type) { room = data.groups.private.name; } await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); await element(by.id('room-header')).tap(); diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js index d1686840f4d..0a0bc8e755f 100644 --- a/e2e/tests/room/04-discussion.spec.js +++ b/e2e/tests/room/04-discussion.spec.js @@ -8,7 +8,6 @@ const channel = data.groups.private.name; const navigateToRoom = async() => { await searchRoom(channel); - await waitFor(element(by.id(`rooms-list-view-item-${ channel }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ channel }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js index 1b7c64b814f..e7dec4c70ca 100644 --- a/e2e/tests/room/05-threads.spec.js +++ b/e2e/tests/room/05-threads.spec.js @@ -9,7 +9,6 @@ async function navigateToRoom(roomName) { await navigateToLogin(); await login(data.users.regular.username, data.users.regular.password); await searchRoom(`${ roomName }`); - await waitFor(element(by.id(`rooms-list-view-item-${ roomName }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/room/07-markasunread.spec.js b/e2e/tests/room/07-markasunread.spec.js index 0247e039d65..9f425e8c4f0 100644 --- a/e2e/tests/room/07-markasunread.spec.js +++ b/e2e/tests/room/07-markasunread.spec.js @@ -6,7 +6,6 @@ const { navigateToLogin, login, mockMessage, tapBack, searchRoom, logout } = req async function navigateToRoom(user) { await searchRoom(`${ user }`); - await waitFor(element(by.id(`rooms-list-view-item-${ user }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ user }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } diff --git a/e2e/tests/room/08-roominfo.spec.js b/e2e/tests/room/08-roominfo.spec.js index b172935cf42..3cd339bace9 100644 --- a/e2e/tests/room/08-roominfo.spec.js +++ b/e2e/tests/room/08-roominfo.spec.js @@ -14,7 +14,6 @@ async function navigateToRoomInfo(type) { room = privateRoomName; } await searchRoom(room); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); await element(by.id(`rooms-list-view-item-${ room }`)).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); await element(by.id('room-header')).tap(); From 23a7f0f689e4b5063d9054aa0d4daa0177de551e Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 7 Apr 2021 15:11:15 -0400 Subject: [PATCH 099/177] [FIX] Status text not being updated on sidebar (#3041) * Update StatusView.js * Minor tweak * Minor tweaks Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/StatusView.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/views/StatusView.js b/app/views/StatusView.js index f703b8e0afa..4441169f5e7 100644 --- a/app/views/StatusView.js +++ b/app/views/StatusView.js @@ -16,8 +16,7 @@ import { LISTENER } from '../containers/Toast'; import { withTheme } from '../theme'; import { getUserSelector } from '../selectors/login'; import * as HeaderButton from '../containers/HeaderButton'; -import store from '../lib/createStore'; -import { setUser } from '../actions/login'; +import { setUser as setUserAction } from '../actions/login'; import SafeAreaView from '../containers/SafeAreaView'; const STATUS = [{ @@ -58,7 +57,8 @@ class StatusView extends React.Component { }), theme: PropTypes.string, navigation: PropTypes.object, - isMasterDetail: PropTypes.bool + isMasterDetail: PropTypes.bool, + setUser: PropTypes.func } constructor(props) { @@ -103,7 +103,7 @@ class StatusView extends React.Component { setCustomStatus = async() => { const { statusText } = this.state; - const { user } = this.props; + const { user, setUser } = this.props; this.setState({ loading: true }); @@ -111,6 +111,7 @@ class StatusView extends React.Component { const result = await RocketChat.setUserStatus(user.status, statusText); if (result.success) { logEvent(events.STATUS_CUSTOM); + setUser({ statusText }); EventEmitter.emit(LISTENER, { message: I18n.t('Status_saved_successfully') }); } else { logEvent(events.STATUS_CUSTOM_F); @@ -154,7 +155,7 @@ class StatusView extends React.Component { renderItem = ({ item }) => { const { statusText } = this.state; - const { user } = this.props; + const { user, setUser } = this.props; const { id, name } = item; return ( <List.Item @@ -165,7 +166,7 @@ class StatusView extends React.Component { try { const result = await RocketChat.setUserStatus(item.id, statusText); if (result.success) { - store.dispatch(setUser({ status: item.id })); + setUser({ status: item.id }); } } catch (e) { logEvent(events.SET_STATUS_FAIL); @@ -202,4 +203,8 @@ const mapStateToProps = state => ({ isMasterDetail: state.app.isMasterDetail }); -export default connect(mapStateToProps)(withTheme(StatusView)); +const mapDispatchToProps = dispatch => ({ + setUser: user => dispatch(setUserAction(user)) +}); + +export default connect(mapStateToProps, mapDispatchToProps)(withTheme(StatusView)); From 5a800fe21de182cba74eaef91c429a0c0bb03ba2 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 7 Apr 2021 15:15:05 -0400 Subject: [PATCH 100/177] [FIX] Unable to search non-latin alphabet names on members list (#3039) * Add search by name in members list * Update RoomMembersView search Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomMembersView/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index 4caa0338127..9a47b60f74b 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -139,7 +139,7 @@ class RoomMembersView extends React.Component { let membersFiltered = []; if (members && members.length > 0 && text) { - membersFiltered = members.filter(m => m.username.toLowerCase().match(text.toLowerCase())); + membersFiltered = members.filter(m => m.username.toLowerCase().match(text.toLowerCase()) || m.name.toLowerCase().match(text.toLowerCase())); } this.setState({ filtering: !!text, membersFiltered }); }) From ecc0052c91ae0e76e073631637cb9e601fbe0b1f Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 7 Apr 2021 17:41:19 -0300 Subject: [PATCH 101/177] Search stops working after some time (#3044) --- app/views/TeamChannelsView.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index ab8d261e4b2..15724ab5cba 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -29,7 +29,7 @@ import { showErrorAlert } from '../utils/info'; import { goRoom } from '../utils/goRoom'; import I18n from '../i18n'; -const API_FETCH_COUNT = 50; +const API_FETCH_COUNT = 25; const getItemLayout = (data, index) => ({ length: data.length, @@ -57,10 +57,10 @@ class TeamChannelsView extends React.Component { loading: true, loadingMore: false, data: [], - total: -1, isSearching: false, searchText: '', - search: [] + search: [], + end: false }; this.loadTeam(); } @@ -91,11 +91,11 @@ class TeamChannelsView extends React.Component { load = debounce(async() => { const { - loadingMore, total, data, search, isSearching, searchText + loadingMore, data, search, isSearching, searchText, end } = this.state; const length = isSearching ? search.length : data.length; - if (loadingMore || length === total) { + if (loadingMore || end) { return; } @@ -113,7 +113,7 @@ class TeamChannelsView extends React.Component { const newState = { loading: false, loadingMore: false, - total: result.total + end: result.rooms.length < API_FETCH_COUNT }; const rooms = result.rooms.map((room) => { const record = this.teamChannels?.find(c => c.rid === room._id); @@ -219,7 +219,7 @@ class TeamChannelsView extends React.Component { onSearchChangeText = debounce((searchText) => { this.setState({ - searchText, search: [], loading: !!searchText, loadingMore: false, total: -1 + searchText, search: [], loading: !!searchText, loadingMore: false, end: false }, () => { if (searchText) { this.load(); @@ -234,7 +234,9 @@ class TeamChannelsView extends React.Component { return; } Keyboard.dismiss(); - this.setState({ isSearching: false, search: [] }, () => { + this.setState({ + searchText: null, isSearching: false, search: [], loadingMore: false, end: false + }, () => { this.setHeader(); }); }; From 69c0ccd8a72a9999022b651ea2a97c87cb68756a Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Tue, 13 Apr 2021 10:47:17 -0300 Subject: [PATCH 102/177] Bump version to 4.17.0 (#3058) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 44b3bb150a9..e3da57bb90f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.16.0" + versionName "4.17.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 3d7bd4dda07..ae9ff665e9a 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1691,7 +1691,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.16.0; + MARKETING_VERSION = 4.17.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1728,7 +1728,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.16.0; + MARKETING_VERSION = 4.17.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index d8b121b1316..4357a8abb7a 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.16.0</string> + <string>4.17.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index c4c44690d80..e38798d7361 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.16.0</string> + <string>4.17.0</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 05afdafac7e..1eefb46e47a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.16.0", + "version": "4.17.0", "private": true, "scripts": { "start": "react-native start", From f7f13dabcca07df1f3faad245530ed423416f95d Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Tue, 13 Apr 2021 15:41:55 -0300 Subject: [PATCH 103/177] [CHORE] Add job to upload Experimental to Google Play production (#3050) --- .circleci/config.yml | 32 ++++++++++++++++++++++++++++++++ android/fastlane/Fastfile | 9 +++++++++ 2 files changed, 41 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3e3a66b8790..182e6433906 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -290,6 +290,24 @@ commands: command: bundle exec fastlane android beta official:<< parameters.official >> working_directory: android + # EXPERIMENTAL ONLY + # No plans to do it for Official + upload-to-google-play-production: + description: "Upload to Google Play production" + steps: + - checkout + - attach_workspace: + at: android + - run: + name: Store the google service account key + command: echo "$FASTLANE_GOOGLE_SERVICE_ACCOUNT" | base64 --decode > service_account.json + working_directory: android + - run: *update-fastlane-android + - run: + name: Fastlane Play Store Upload + command: bundle exec fastlane android production + working_directory: android + upload-to-testflight: description: "Upload to TestFlight" parameters: @@ -382,6 +400,13 @@ jobs: - upload-to-google-play-beta: official: false + android-google-play-production-experimental: + <<: *defaults + docker: + - image: circleci/android:api-28-node + steps: + - upload-to-google-play-production + android-google-play-beta-official: <<: *defaults docker: @@ -466,6 +491,13 @@ workflows: - android-google-play-beta-experimental: requires: - android-hold-google-play-beta-experimental + - android-hold-google-play-production-experimental: + type: approval + requires: + - android-build-experimental + - android-google-play-production-experimental: + requires: + - android-hold-google-play-production-experimental # Android Official - android-hold-build-official: diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile index 1ac6d1fa734..a1c5bd70c33 100644 --- a/android/fastlane/Fastfile +++ b/android/fastlane/Fastfile @@ -32,4 +32,13 @@ platform :android do ) end end + + desc "Upload App to Play Store Production" + lane :production do |options| + upload_to_play_store( + package_name: 'chat.rocket.reactnative', + track: 'production', + aab: 'android/app/build/outputs/bundle/experimentalPlayRelease/app-experimental-play-release.aab' + ) + end end From d71805347be1074762348702c6991d7ddede27c3 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 14 Apr 2021 11:24:13 -0300 Subject: [PATCH 104/177] [REGRESSION] SAML stopped working after #2978 (#3060) --- app/views/AuthenticationWebView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/AuthenticationWebView.js b/app/views/AuthenticationWebView.js index b21c85bba87..99978b7d793 100644 --- a/app/views/AuthenticationWebView.js +++ b/app/views/AuthenticationWebView.js @@ -88,8 +88,8 @@ class AuthenticationWebView extends React.PureComponent { this.dismiss(); } - // eslint-disable-next-line react/sort-comp - debouncedLogin = debounce(params => this.login(params), 3000, true); + // Force 3s delay so the server has time to evaluate the token + debouncedLogin = debounce(params => this.login(params), 3000); tryLogin = debounce(async() => { const { Accounts_Iframe_api_url, Accounts_Iframe_api_method } = this.props; From d555f1937695b57305d1b2cf65575049ab2b21ad Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 14 Apr 2021 13:03:58 -0300 Subject: [PATCH 105/177] [REGRESSION] Room actions not loading on tablet (#3061) --- app/containers/RoomHeader/RoomHeader.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/containers/RoomHeader/RoomHeader.js b/app/containers/RoomHeader/RoomHeader.js index 6715fc137e6..0f1ee472e98 100644 --- a/app/containers/RoomHeader/RoomHeader.js +++ b/app/containers/RoomHeader/RoomHeader.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { View, Text, StyleSheet, TouchableOpacity @@ -149,11 +149,13 @@ const Header = React.memo(({ ); } + const handleOnPress = useCallback(() => onPress(), []); + return ( <TouchableOpacity testID='room-header' accessibilityLabel={title} - onPress={onPress} + onPress={handleOnPress} style={styles.container} disabled={tmid} hitSlop={HIT_SLOP} From 14078c09434337042f51471029c83b6240956503 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 14 Apr 2021 14:09:44 -0300 Subject: [PATCH 106/177] Bump version to 4.16.1 (#3063) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index e3da57bb90f..8e55d11da24 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.17.0" + versionName "4.16.1" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index ae9ff665e9a..07bb1935c0c 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1691,7 +1691,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.17.0; + MARKETING_VERSION = 4.16.1; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1728,7 +1728,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.17.0; + MARKETING_VERSION = 4.16.1; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 4357a8abb7a..dd599d645db 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.17.0</string> + <string>4.16.1</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index e38798d7361..2f523baaa49 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.17.0</string> + <string>4.16.1</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 1eefb46e47a..d9d0dc05108 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.17.0", + "version": "4.16.1", "private": true, "scripts": { "start": "react-native start", From f14868678b6165af9fb8528560b6506798347e82 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 15 Apr 2021 10:31:22 -0300 Subject: [PATCH 107/177] [REGRESSION] Fallback language stopped working (#3072) --- app/i18n/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/i18n/index.js b/app/i18n/index.js index 6ac163a0dff..c82e9e17ece 100644 --- a/app/i18n/index.js +++ b/app/i18n/index.js @@ -79,13 +79,16 @@ export const setLanguage = (l) => { return; } // server uses lowercase pattern (pt-br), but we're forced to use standard pattern (pt-BR) - const locale = LANGUAGES.find(ll => ll.value.toLowerCase() === l.toLowerCase())?.value; + let locale = LANGUAGES.find(ll => ll.value.toLowerCase() === l.toLowerCase())?.value; + if (!locale) { + locale = 'en'; + } // don't go forward if it's the same language and default language (en) was setup already if (i18n.locale === locale && i18n.translations?.en) { return; } i18n.locale = locale; - i18n.translations = { ...i18n.translations, [locale]: translations[locale]() }; + i18n.translations = { ...i18n.translations, [locale]: translations[locale]?.() }; I18nManager.forceRTL(isRTL(locale)); I18nManager.swapLeftAndRightInRTL(isRTL(locale)); i18n.isRTL = I18nManager.isRTL; From 3f4fa04f04ca0d96a2528d99fc5a501932ad65f4 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Mon, 19 Apr 2021 10:31:43 -0400 Subject: [PATCH 108/177] [CHORE] Update Detox to 18.10.0 (#3052) * Updated detox and 5 tests * Update e2e cases for Detox v18, update setUserStatus and added SET_STATUS_FAIL * Downgrade mocha * Exclude arm64 from building and update tests cases * Update more tests cases, add registeringUser4 * Update more test files and add room-actions-scrollview testID * Update package.json * Remove unused username from test file and update 08-roominfo test file * Fixing * Mark as unread * Fixing flaky tests * Minor fixes Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/MessageBox/index.js | 4 +- app/utils/log/events.js | 1 + app/views/RoomActionsView/index.js | 2 +- app/views/StatusView.js | 5 +- e2e/data.js | 11 +- e2e/helpers/app.js | 23 ++- e2e/helpers/data_setup.js | 9 +- e2e/tests/assorted/01-e2eencryption.spec.js | 9 +- e2e/tests/assorted/02-broadcast.spec.js | 2 +- e2e/tests/assorted/03-profile.spec.js | 13 +- e2e/tests/assorted/04-setting.spec.js | 6 - e2e/tests/assorted/05-joinpublicroom.spec.js | 6 +- e2e/tests/assorted/06-status.spec.js | 4 +- e2e/tests/assorted/07-changeserver.spec.js | 5 +- .../assorted/08-joinprotectedroom.spec.js | 7 +- e2e/tests/assorted/10-deleteserver.spec.js | 5 +- e2e/tests/assorted/11-deeplinking.spec.js | 32 ++-- e2e/tests/onboarding/01-onboarding.spec.js | 6 +- .../onboarding/03-forgotpassword.spec.js | 1 + .../onboarding/07-server-history.spec.js | 2 +- e2e/tests/room/01-createroom.spec.js | 15 +- e2e/tests/room/02-room.spec.js | 25 +-- e2e/tests/room/03-roomactions.spec.js | 24 +-- e2e/tests/room/05-threads.spec.js | 34 +--- e2e/tests/room/07-markasunread.spec.js | 19 +- e2e/tests/room/08-roominfo.spec.js | 28 +-- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 + package.json | 10 +- yarn.lock | 179 ++++++++++++++---- 29 files changed, 278 insertions(+), 213 deletions(-) diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index 1fc874f9fdb..213f27d5173 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -876,7 +876,7 @@ class MessageBox extends Component { recording, showEmojiKeyboard, showSend, mentions, trackingType, commandPreview, showCommandPreview } = this.state; const { - editing, message, replying, replyCancel, user, getCustomEmoji, theme, Message_AudioRecorderEnabled, children, isActionsEnabled + editing, message, replying, replyCancel, user, getCustomEmoji, theme, Message_AudioRecorderEnabled, children, isActionsEnabled, tmid } = this.props; const isAndroidTablet = isTablet && isAndroid ? { @@ -936,7 +936,7 @@ class MessageBox extends Component { underlineColorAndroid='transparent' defaultValue='' multiline - testID='messagebox-input' + testID={`messagebox-input${ tmid ? '-thread' : '' }`} theme={theme} {...isAndroidTablet} /> diff --git a/app/utils/log/events.js b/app/utils/log/events.js index fc8d704200a..c9c9579f83b 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -51,6 +51,7 @@ export default { STATUS_F: 'status_f', STATUS_CUSTOM: 'status_custom', STATUS_CUSTOM_F: 'status_custom_f', + SET_STATUS_FAIL: 'set_status_fail', // ROOMS LIST VIEW RL_TOGGLE_SERVER_DROPDOWN: 'rl_toggle_server_dropdown', diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 89bc5f229c1..ea833d7588f 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -595,7 +595,7 @@ class RoomActionsView extends React.Component { return ( <SafeAreaView testID='room-actions-view'> <StatusBar /> - <List.Container> + <List.Container testID='room-actions-scrollview'> {this.renderRoomInfo()} {this.renderJitsi()} {this.renderE2EEncryption()} diff --git a/app/views/StatusView.js b/app/views/StatusView.js index 4441169f5e7..3f5a48c12b8 100644 --- a/app/views/StatusView.js +++ b/app/views/StatusView.js @@ -91,7 +91,7 @@ class StatusView extends React.Component { const { statusText } = this.state; const { user } = this.props; if (statusText !== user.statusText) { - await this.setCustomStatus(); + await this.setCustomStatus(statusText); } this.close(); } @@ -101,8 +101,7 @@ class StatusView extends React.Component { navigation.goBack(); } - setCustomStatus = async() => { - const { statusText } = this.state; + setCustomStatus = async(statusText) => { const { user, setUser } = this.props; this.setState({ loading: true }); diff --git a/e2e/data.js b/e2e/data.js index 77f9f82c055..79e7842e864 100644 --- a/e2e/data.js +++ b/e2e/data.js @@ -1,9 +1,9 @@ const random = require('./helpers/random'); const value = random(20); const data = { - server: 'http://localhost:3000', - adminUser: 'admin', - adminPassword: 'password', + server: 'https://mobile.rocket.chat', + adminUser: 'e2e_admin', + adminPassword: 'p7mFh4yLwCRXSnMvG', alternateServer: 'https://stable.rocket.chat', users: { regular: { @@ -57,6 +57,11 @@ const data = { password: `passwordthree${ value }`, email: `mobile+registeringthree${ value }@rocket.chat` }, + registeringUser4: { + username: `newuserfour${ value }`, + password: `passwordfour${ value }`, + email: `mobile+registeringfour${ value }@rocket.chat` + }, random: value } module.exports = data; diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index 2706eb2f6fb..af72f73d1d6 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -7,8 +7,7 @@ async function navigateToWorkspace(server = data.server) { await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000); await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).replaceText(server); - await element(by.id('new-server-view-button')).tap(); + await element(by.id('new-server-view-input')).typeText(`${server}\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); await expect(element(by.id('workspace-view'))).toBeVisible(); } @@ -33,7 +32,7 @@ async function login(username, password) { await element(by.id('login-view-email')).replaceText(username); await element(by.id('login-view-password')).replaceText(password); await element(by.id('login-view-submit')).tap(); - await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(30000); } async function logout() { @@ -52,24 +51,24 @@ async function logout() { await expect(element(by.id('onboarding-view'))).toBeVisible(); } -async function mockMessage(message) { - await element(by.id('messagebox-input')).atIndex(0).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(`${ data.random }${ message }`); - await element(by.id('messagebox-send-message')).atIndex(0).tap(); - await waitFor(element(by.label(`${ data.random }${ message }`)).atIndex(0)).toExist().withTimeout(60000); - await expect(element(by.label(`${ data.random }${ message }`)).atIndex(0)).toExist(); +async function mockMessage(message, isThread = false) { + let input = isThread ? 'messagebox-input-thread' : 'messagebox-input'; + await element(by.id(input)).tap(); + await element(by.id(input)).typeText(`${ data.random }${ message }`); + await element(by.id('messagebox-send-message')).tap(); + await waitFor(element(by.label(`${ data.random }${ message }`))).toExist().withTimeout(60000); + await expect(element(by.label(`${ data.random }${ message }`))).toExist(); await element(by.label(`${ data.random }${ message }`)).atIndex(0).tap(); }; async function starMessage(message){ const messageLabel = `${ data.random }${ message }` - await waitFor(element(by.label(messageLabel))).toBeVisible().withTimeout(5000); await element(by.label(messageLabel)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await element(by.label('Star')).tap(); - await waitFor(element(by.id('action-sheet'))).toNotExist().withTimeout(5000); + await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); }; async function pinMessage(message){ @@ -80,7 +79,7 @@ async function pinMessage(message){ await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await element(by.label('Pin')).tap(); - await waitFor(element(by.id('action-sheet'))).toNotExist().withTimeout(5000); + await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); } async function dismissReviewNag(){ diff --git a/e2e/helpers/data_setup.js b/e2e/helpers/data_setup.js index 66c6ea086a3..1f8f8fb6511 100644 --- a/e2e/helpers/data_setup.js +++ b/e2e/helpers/data_setup.js @@ -20,6 +20,7 @@ const login = async (username, password) => { const authToken = response.data.data.authToken rocketchat.defaults.headers.common['X-User-Id'] = userId rocketchat.defaults.headers.common['X-Auth-Token'] = authToken + return { authToken, userId }; } const createUser = async (username, password, name, email) => { @@ -91,11 +92,11 @@ const changeChannelJoinCode = async (roomId, joinCode) => { } } -const sendMessage = async (user, groupname, msg) => { - console.log(`Sending message to ${groupname}`) +const sendMessage = async (user, channel, msg) => { + console.log(`Sending message to ${channel}`) try { await login(user.username, user.password); - await rocketchat.post('chat.postMessage', { channel: `#${groupname}`, msg }); + await rocketchat.post('chat.postMessage', { channel, msg }); } catch (infoError) { console.log(JSON.stringify(infoError)) throw "Failed to find or create private group" @@ -146,5 +147,5 @@ const post = (endpoint, body) => { } module.exports = { - setup, sendMessage, get, post + setup, sendMessage, get, post, login } \ No newline at end of file diff --git a/e2e/tests/assorted/01-e2eencryption.spec.js b/e2e/tests/assorted/01-e2eencryption.spec.js index dc85cb7b5b3..423d9615208 100644 --- a/e2e/tests/assorted/01-e2eencryption.spec.js +++ b/e2e/tests/assorted/01-e2eencryption.spec.js @@ -166,7 +166,7 @@ describe('E2E Encryption', () => { await navigateToLogin(); await login(testuser.username, testuser.password); await navigateToRoom(room); - await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toNotExist().withTimeout(2000); + await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).not.toExist().withTimeout(2000); await expect(element(by.label('Encrypted message')).atIndex(0)).toExist(); }); @@ -178,7 +178,7 @@ describe('E2E Encryption', () => { await waitFor(element(by.id('e2e-enter-your-password-view'))).toBeVisible().withTimeout(2000); await element(by.id('e2e-enter-your-password-view-password')).typeText(newPassword); await element(by.id('e2e-enter-your-password-view-confirm')).tap(); - await waitFor(element(by.id('listheader-encryption'))).toNotExist().withTimeout(10000); + await waitFor(element(by.id('listheader-encryption'))).not.toExist().withTimeout(10000); await navigateToRoom(room); await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toExist().withTimeout(2000); }); @@ -221,8 +221,7 @@ describe('E2E Encryption', () => { // TODO: refactor await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).replaceText(data.alternateServer); - await element(by.id('new-server-view-button')).tap(); + await element(by.id('new-server-view-input')).typeText(`${data.alternateServer}\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); await element(by.id('workspace-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); @@ -231,7 +230,7 @@ describe('E2E Encryption', () => { await element(by.id('register-view-name')).replaceText(data.registeringUser.username); await element(by.id('register-view-username')).replaceText(data.registeringUser.username); await element(by.id('register-view-email')).replaceText(data.registeringUser.email); - await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-password')).typeText(data.registeringUser.password); await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); diff --git a/e2e/tests/assorted/02-broadcast.spec.js b/e2e/tests/assorted/02-broadcast.spec.js index a11f717133e..059643c0269 100644 --- a/e2e/tests/assorted/02-broadcast.spec.js +++ b/e2e/tests/assorted/02-broadcast.spec.js @@ -75,7 +75,7 @@ describe('Broadcast room', () => { }); it('should have the message created earlier', async() => { - await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible().withTimeout(60000); + await waitFor(element(by.label(`${ data.random }message`))).toExist().withTimeout(60000); }); it('should have reply button', async() => { diff --git a/e2e/tests/assorted/03-profile.spec.js b/e2e/tests/assorted/03-profile.spec.js index f531ef18aee..86fc001db16 100644 --- a/e2e/tests/assorted/03-profile.spec.js +++ b/e2e/tests/assorted/03-profile.spec.js @@ -9,10 +9,10 @@ const profileChangeUser = data.users.profileChanges const scrollDown = 200; async function waitForToast() { - // await waitFor(element(by.id('toast'))).toBeVisible().withTimeout(10000); + // await waitFor(element(by.id('toast'))).toBeVisible().withTimeout(1000); // await expect(element(by.id('toast'))).toBeVisible(); - // await waitFor(element(by.id('toast'))).toBeNotVisible().withTimeout(10000); - // await expect(element(by.id('toast'))).toBeNotVisible(); + // await waitFor(element(by.id('toast'))).not.toBeNotVisible().withTimeout(1000); + // await expect(element(by.id('toast'))).not.toBeVisible(); await sleep(300); } @@ -76,9 +76,8 @@ describe('Profile screen', () => { describe('Usage', async() => { it('should change name and username', async() => { - await element(by.type('UIScrollView')).atIndex(1).swipe('down'); await element(by.id('profile-view-name')).replaceText(`${ profileChangeUser.username }new`); - await element(by.id('profile-view-username')).replaceText(`${ profileChangeUser.username }new`); + await element(by.id('profile-view-username')).typeText(`${ profileChangeUser.username }new`); await element(by.type('UIScrollView')).atIndex(1).swipe('up'); await element(by.id('profile-view-submit')).tap(); await waitForToast(); @@ -88,9 +87,7 @@ describe('Profile screen', () => { await element(by.id('profile-view-email')).replaceText(`mobile+profileChangesNew${ data.random }@rocket.chat`); await element(by.id('profile-view-new-password')).replaceText(`${ profileChangeUser.password }new`); await element(by.id('profile-view-submit')).tap(); - await element(by.type('_UIAlertControllerTextField')).replaceText(`${ profileChangeUser.password }`) - // For some reason, replaceText does some type of submit, which submits the alert for us - // await element(by.label('Save').and(by.type('_UIAlertControllerActionView'))).tap(); + await element(by.type('_UIAlertControllerTextField')).typeText(`${ profileChangeUser.password }\n`) await waitForToast(); }); diff --git a/e2e/tests/assorted/04-setting.spec.js b/e2e/tests/assorted/04-setting.spec.js index 201ac62008d..a83b5b65386 100644 --- a/e2e/tests/assorted/04-setting.spec.js +++ b/e2e/tests/assorted/04-setting.spec.js @@ -82,12 +82,6 @@ describe('Settings screen', () => { await waitFor(element(by.text('This will clear all your offline data.'))).toExist().withTimeout(2000); await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); - // Database was cleared, so the room shouldn't be there anymore while it's fetched again from the server - /** - * FIXME: rooms are fetched to quickly on docker and the test below fails - * We need to think on another way to test database being resetted - */ - // await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toNotExist().withTimeout(10000); await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toExist().withTimeout(10000); }) }); diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 8e97a893e2a..9b92d33b397 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -63,7 +63,7 @@ describe('Join public room', () => { describe('Room Actions', async() => { before(async() => { - await navigateToRoomActions('c'); + await navigateToRoomActions(); }); it('should have room actions screen', async() => { @@ -103,7 +103,6 @@ describe('Join public room', () => { }); it('should have share', async() => { - await element(by.type('UIScrollView')).atIndex(1).swipe('down'); await expect(element(by.id('room-actions-share'))).toBeVisible(); }); @@ -142,7 +141,7 @@ describe('Join public room', () => { }); it('should have disable notifications and leave channel', async() => { - await navigateToRoomActions('c'); + await navigateToRoomActions(); await expect(element(by.id('room-actions-view'))).toBeVisible(); await expect(element(by.id('room-actions-info'))).toBeVisible(); // await expect(element(by.id('room-actions-voice'))).toBeVisible(); @@ -165,7 +164,6 @@ describe('Join public room', () => { await expect(element(by.text('Yes, leave it!'))).toBeVisible(); await element(by.text('Yes, leave it!')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); - // await element(by.id('rooms-list-view-search')).typeText(''); await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible().withTimeout(60000); }); }); diff --git a/e2e/tests/assorted/06-status.spec.js b/e2e/tests/assorted/06-status.spec.js index 45c4c6f964d..52c6f9b9814 100644 --- a/e2e/tests/assorted/06-status.spec.js +++ b/e2e/tests/assorted/06-status.spec.js @@ -41,10 +41,10 @@ describe('Status screen', () => { }); it('should change status text', async () => { - await element(by.id('status-view-input')).replaceText('status-text-new'); + await element(by.id('status-view-input')).typeText('status-text-new'); await element(by.id('status-view-submit')).tap(); await waitForToast(); - await waitFor(element(by.label('status-text-new').withAncestor(by.id('sidebar-custom-status')))).toBeVisible().withTimeout(2000); + await waitFor(element(by.label('status-text-new').withAncestor(by.id('sidebar-custom-status')))).toExist().withTimeout(2000); }); }); }); \ No newline at end of file diff --git a/e2e/tests/assorted/07-changeserver.spec.js b/e2e/tests/assorted/07-changeserver.spec.js index a795e66c371..06ac7c36a0c 100644 --- a/e2e/tests/assorted/07-changeserver.spec.js +++ b/e2e/tests/assorted/07-changeserver.spec.js @@ -24,9 +24,8 @@ describe('Change server', () => { await element(by.id('rooms-list-header-server-add')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(6000); - await element(by.id('new-server-view-input')).replaceText(data.alternateServer); - await element(by.id('new-server-view-button')).tap(); - await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(6000); + await element(by.id('new-server-view-input')).typeText(`${data.alternateServer}\n`); + await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(10000); await reopenAndCheckServer(data.server); }); diff --git a/e2e/tests/assorted/08-joinprotectedroom.spec.js b/e2e/tests/assorted/08-joinprotectedroom.spec.js index a07d541cd93..9101a965951 100644 --- a/e2e/tests/assorted/08-joinprotectedroom.spec.js +++ b/e2e/tests/assorted/08-joinprotectedroom.spec.js @@ -14,17 +14,12 @@ async function navigateToRoom() { await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); } -async function navigateToRoomActions() { - await element(by.id('room-header')).tap(); - await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); -} - async function openJoinCode() { await element(by.id('room-view-join-button')).tap(); await waitFor(element(by.id('join-code'))).toBeVisible().withTimeout(5000); } -describe('Join public room', () => { +describe('Join protected room', () => { before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); diff --git a/e2e/tests/assorted/10-deleteserver.spec.js b/e2e/tests/assorted/10-deleteserver.spec.js index bf7379104eb..8e260fd70de 100644 --- a/e2e/tests/assorted/10-deleteserver.spec.js +++ b/e2e/tests/assorted/10-deleteserver.spec.js @@ -22,8 +22,7 @@ describe('Delete server', () => { await element(by.id('rooms-list-header-server-add')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(10000); - await element(by.id('new-server-view-input')).replaceText(data.alternateServer); - await element(by.id('new-server-view-button')).tap(); + await element(by.id('new-server-view-input')).typeText(`${data.alternateServer}\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(10000); await element(by.id('workspace-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); @@ -32,7 +31,7 @@ describe('Delete server', () => { await element(by.id('register-view-name')).replaceText(data.registeringUser3.username); await element(by.id('register-view-username')).replaceText(data.registeringUser3.username); await element(by.id('register-view-email')).replaceText(data.registeringUser3.email); - await element(by.id('register-view-password')).replaceText(data.registeringUser3.password); + await element(by.id('register-view-password')).typeText(data.registeringUser3.password); await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); diff --git a/e2e/tests/assorted/11-deeplinking.spec.js b/e2e/tests/assorted/11-deeplinking.spec.js index cdde0323a82..c40cff7bf08 100644 --- a/e2e/tests/assorted/11-deeplinking.spec.js +++ b/e2e/tests/assorted/11-deeplinking.spec.js @@ -2,8 +2,8 @@ const { device, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { tapBack, checkServer, navigateToRegister, login } = require('../../helpers/app'); -const { post, get } = require('../../helpers/data_setup'); +const { tapBack, checkServer, navigateToRegister } = require('../../helpers/app'); +const { post, get, login } = require('../../helpers/data_setup'); const DEEPLINK_METHODS = { AUTH: 'auth', ROOM: 'room' }; const getDeepLink = (method, server, params) => { @@ -14,35 +14,31 @@ const getDeepLink = (method, server, params) => { describe('Deep linking', () => { let userId; - let token; + let authToken; before(async() => { - const loginResult = await post('login', { - user: data.users.regular.username, - password: data.users.regular.password - }) - userId = loginResult.data.data.userId - token = loginResult.data.data.authToken + const loginResult = await login(data.users.regular.username, data.users.regular.password); + ({ userId, authToken } = loginResult); }); describe('Authentication', () => { it('should run a deep link to an invalid account and raise error', async() => { await device.launchApp({ permissions: { notifications: 'YES' }, - newInstance: true, + delete: true, url: getDeepLink(DEEPLINK_METHODS.AUTH, data.server, 'userId=123&token=abc'), sourceApp: 'com.apple.mobilesafari' }); - await waitFor(element(by.text('You\'ve been logged out by the server. Please log in again.'))).toExist().withTimeout(5000); // TODO: we need to improve this message + await waitFor(element(by.text('You\'ve been logged out by the server. Please log in again.'))).toExist().withTimeout(10000); // TODO: we need to improve this message }); const authAndNavigate = async() => { await device.launchApp({ permissions: { notifications: 'YES' }, newInstance: true, - url: getDeepLink(DEEPLINK_METHODS.AUTH, data.server, `userId=${ userId }&token=${ token }&path=group/${ data.groups.private.name }`), + url: getDeepLink(DEEPLINK_METHODS.AUTH, data.server, `userId=${ userId }&token=${ authToken }&path=group/${ data.groups.private.name }`), sourceApp: 'com.apple.mobilesafari' }); - await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(10000); + await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(30000); await tapBack(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); await checkServer(data.server); @@ -56,10 +52,10 @@ describe('Deep linking', () => { it('should authenticate while logged in another server', async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToRegister(data.alternateServer); - await element(by.id('register-view-name')).replaceText(data.registeringUser.username); - await element(by.id('register-view-username')).replaceText(data.registeringUser.username); - await element(by.id('register-view-email')).replaceText(data.registeringUser.email); - await element(by.id('register-view-password')).replaceText(data.registeringUser.password); + await element(by.id('register-view-name')).replaceText(data.registeringUser4.username); + await element(by.id('register-view-username')).replaceText(data.registeringUser4.username); + await element(by.id('register-view-email')).replaceText(data.registeringUser4.email); + await element(by.id('register-view-password')).typeText(data.registeringUser4.password); await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); await authAndNavigate(); @@ -86,7 +82,7 @@ describe('Deep linking', () => { url: getDeepLink(DEEPLINK_METHODS.ROOM, data.server, `rid=${ roomResult.data.group._id }`), sourceApp: 'com.apple.mobilesafari' }); - await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(10000); + await waitFor(element(by.id(`room-view-title-${ data.groups.private.name }`))).toExist().withTimeout(15000); await tapBack(); }); }); diff --git a/e2e/tests/onboarding/01-onboarding.spec.js b/e2e/tests/onboarding/01-onboarding.spec.js index 4806dcb5796..e38a83764f5 100644 --- a/e2e/tests/onboarding/01-onboarding.spec.js +++ b/e2e/tests/onboarding/01-onboarding.spec.js @@ -34,8 +34,7 @@ describe('Onboarding', () => { }); it('should enter an invalid server and get error', async() => { - await element(by.id('new-server-view-input')).replaceText('invalidtest'); - await element(by.id('new-server-view-button')).tap(); + await element(by.id('new-server-view-input')).typeText('invalidtest\n'); const errorText = 'Oops!'; await waitFor(element(by.text(errorText))).toBeVisible().withTimeout(60000); await element(by.text('OK')).tap(); @@ -51,8 +50,7 @@ describe('Onboarding', () => { await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000); await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).replaceText(data.server); - await element(by.id('new-server-view-button')).tap(); + await element(by.id('new-server-view-input')).typeText(`${data.server}\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); }); }); diff --git a/e2e/tests/onboarding/03-forgotpassword.spec.js b/e2e/tests/onboarding/03-forgotpassword.spec.js index 88d4c3e90f3..8b7fe9b5a86 100644 --- a/e2e/tests/onboarding/03-forgotpassword.spec.js +++ b/e2e/tests/onboarding/03-forgotpassword.spec.js @@ -30,6 +30,7 @@ describe('Forgot password screen', () => { it('should reset password and navigate to login', async() => { await element(by.id('forgot-password-view-email')).replaceText(data.users.existing.email); await element(by.id('forgot-password-view-submit')).tap(); + await waitFor(element(by.text('OK'))).toExist().withTimeout(10000); await element(by.text('OK')).tap(); await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(60000); }); diff --git a/e2e/tests/onboarding/07-server-history.spec.js b/e2e/tests/onboarding/07-server-history.spec.js index d026965fb7e..fc1d6af9c1d 100644 --- a/e2e/tests/onboarding/07-server-history.spec.js +++ b/e2e/tests/onboarding/07-server-history.spec.js @@ -25,7 +25,7 @@ describe('Server history', () => { it('should tap on a server history and navigate to login', async() => { await element(by.id(`server-history-${ data.server }`)).tap(); - await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(5000); await expect(element(by.id('login-view-email'))).toHaveText(data.users.regular.username); }); diff --git a/e2e/tests/room/01-createroom.spec.js b/e2e/tests/room/01-createroom.spec.js index 07ecd803076..5e7ae2ca564 100644 --- a/e2e/tests/room/01-createroom.spec.js +++ b/e2e/tests/room/01-createroom.spec.js @@ -94,7 +94,7 @@ describe('Create room screen', () => { describe('Usage', async() => { it('should get invalid room', async() => { - await element(by.id('create-channel-name')).replaceText('general'); + await element(by.id('create-channel-name')).typeText('general'); await element(by.id('create-channel-submit')).tap(); await waitFor(element(by.text(`A channel with name 'general' exists`))).toExist().withTimeout(60000); await expect(element(by.text(`A channel with name 'general' exists`))).toExist(); @@ -103,16 +103,17 @@ describe('Create room screen', () => { it('should create public room', async() => { const room = `public${ data.random }`; - await element(by.id('create-channel-name')).replaceText(room); + await element(by.id('create-channel-name')).replaceText(''); + await element(by.id('create-channel-name')).typeText(room); await element(by.id('create-channel-type')).tap(); await element(by.id('create-channel-submit')).tap(); - await waitFor(element(by.id('room-view'))).toExist().withTimeout(60000); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(6000); await expect(element(by.id('room-view'))).toExist(); - await waitFor(element(by.id(`room-view-title-${ room }`))).toExist().withTimeout(60000); + await waitFor(element(by.id(`room-view-title-${ room }`))).toExist().withTimeout(6000); await expect(element(by.id(`room-view-title-${ room }`))).toExist(); await tapBack(); await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(10000); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(6000); await expect(element(by.id(`rooms-list-view-item-${ room }`))).toExist(); }); @@ -127,7 +128,7 @@ describe('Create room screen', () => { await waitFor(element(by.id('selected-user-rocket.cat'))).toExist().withTimeout(5000); await element(by.id('selected-users-view-submit')).tap(); await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(5000); - await element(by.id('create-channel-name')).replaceText(room); + await element(by.id('create-channel-name')).typeText(room); await element(by.id('create-channel-submit')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(60000); await expect(element(by.id('room-view'))).toExist(); @@ -149,7 +150,7 @@ describe('Create room screen', () => { await waitFor(element(by.id('select-users-view'))).toExist().withTimeout(5000); await element(by.id('selected-users-view-submit')).tap(); await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); - await element(by.id('create-channel-name')).replaceText(room); + await element(by.id('create-channel-name')).typeText(room); await element(by.id('create-channel-submit')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(60000); await expect(element(by.id('room-view'))).toExist(); diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index da83c1eb27f..820536fb8f9 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -125,7 +125,6 @@ describe('Room screen', () => { }); it('should not show user autocomplete on @ in the middle of a string', async() => { - const username = data.users.regular.username await element(by.id('messagebox-input')).tap(); await element(by.id('messagebox-input')).typeText(`email@gmail`); await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(4000); @@ -149,8 +148,8 @@ describe('Room screen', () => { await element(by.id('messagebox-input')).clearText(); }); it('should draft message', async () => { - await element(by.id('messagebox-input')).atIndex(0).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(`${ data.random }draft`); + await element(by.id('messagebox-input')).tap(); + await element(by.id('messagebox-input')).typeText(`${ data.random }draft`); await tapBack(); await navigateToRoom(mainRoom); @@ -191,9 +190,9 @@ describe('Room screen', () => { await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await waitFor(element(by.label('Unstar'))).toBeVisible().withTimeout(2000); - await element(by.id('action-sheet-backdrop')).tap(); + await element(by.id('action-sheet-handle')).swipe('up', 'slow', 0.5); + await waitFor(element(by.label('Unstar'))).toBeVisible().withTimeout(6000); + await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8); }); it('should react to message', async() => { @@ -267,14 +266,14 @@ describe('Room screen', () => { await mockMessage('pin') await pinMessage('pin') - await waitFor(element(by.label(`${ data.random }pin`)).atIndex(0)).toBeVisible().withTimeout(2000); - await waitFor(element(by.label(`${ data.users.regular.username } Message pinned`)).atIndex(0)).toBeVisible().withTimeout(2000); + await waitFor(element(by.label(`${ data.random }pin`)).atIndex(0)).toExist().withTimeout(5000); + await waitFor(element(by.label(`${ data.users.regular.username } Message pinned`)).atIndex(0)).toExist().withTimeout(5000); await element(by.label(`${ data.random }pin`)).atIndex(0).longPress(); await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(1000); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await waitFor(element(by.label('Unpin'))).toBeVisible().withTimeout(2000); - await element(by.id('action-sheet-backdrop')).tap(); + await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8); }); it('should delete message', async() => { @@ -285,6 +284,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); + await waitFor(element(by.label('Delete'))).toExist().withTimeout(1000); await element(by.label('Delete')).tap(); const deleteAlertMessage = 'You will not be able to recover this message!'; @@ -294,12 +294,5 @@ describe('Room screen', () => { await waitFor(element(by.label(`${ data.random }delete`)).atIndex(0)).toNotExist().withTimeout(2000); }); }); - - // after(async() => { - // await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - // await tapBack(); - // await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); - // await expect(element(by.id('rooms-list-view'))).toExist(); - // }); }); }); diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index c7945f651ac..fcfc8671194 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -223,10 +223,10 @@ describe('Room actions screen', () => { //Go to starred messages await element(by.id('room-actions-starred')).tap(); await waitFor(element(by.id('starred-messages-view'))).toExist().withTimeout(2000); - await waitFor(element(by.label(`${ data.random }messageToStar`).withAncestor(by.id('starred-messages-view')))).toBeVisible().withTimeout(60000); + await waitFor(element(by.label(`${ data.random }messageToStar`).withAncestor(by.id('starred-messages-view')))).toExist().withTimeout(60000); //Unstar message - await element(by.label(`${ data.random }messageToStar`).withAncestor(by.id('starred-messages-view'))).longPress(); + await element(by.label(`${ data.random }messageToStar`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.label('Unstar')).tap(); @@ -247,18 +247,18 @@ describe('Room actions screen', () => { //Back into Room Actions await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); - await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); await waitFor(element(by.id('room-actions-pinned'))).toExist(); await element(by.id('room-actions-pinned')).tap(); await waitFor(element(by.id('pinned-messages-view'))).toExist().withTimeout(2000); - await waitFor(element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view')))).toBeVisible().withTimeout(60000); - await element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view'))).longPress(); + await waitFor(element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view')))).toExist().withTimeout(6000); + await element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view'))).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.label('Unpin')).tap(); - await waitFor(element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view')))).toBeNotVisible().withTimeout(60000); + await waitFor(element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view')))).not.toExist().withTimeout(6000); await backToActions(); }); @@ -283,7 +283,7 @@ describe('Room actions screen', () => { describe('Notification', async() => { it('should navigate to notification preference view', async() => { - await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); await waitFor(element(by.id('room-actions-notifications'))).toExist().withTimeout(2000); await element(by.id('room-actions-notifications')).tap(); await waitFor(element(by.id('notification-preference-view'))).toExist().withTimeout(2000); @@ -311,7 +311,7 @@ describe('Room actions screen', () => { it('should have notification sound option', async() => { // Ugly hack to scroll on detox - await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); await waitFor(element(by.id('notification-preference-view-sound'))).toExist().withTimeout(4000); }); @@ -335,7 +335,7 @@ describe('Room actions screen', () => { const user = data.users.alternate it('should tap on leave channel and raise alert', async() => { - await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); await waitFor(element(by.id('room-actions-leave-channel'))).toExist().withTimeout(2000); await element(by.id('room-actions-leave-channel')).tap(); await waitFor(element(by.text('Yes, leave it!'))).toExist().withTimeout(2000); @@ -368,7 +368,7 @@ describe('Room actions screen', () => { await element(by.id('room-actions-members')).tap(); await element(by.id('room-members-view-toggle-status')).tap(); await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); - await backToActions(1); + await backToActions(); }); describe('Room Members', async() => { @@ -414,7 +414,7 @@ describe('Room actions screen', () => { } const closeActionSheet = async() => { - await element(by.id('action-sheet-backdrop')).tap(); + await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.6); } it('should set/remove as owner', async() => { @@ -483,7 +483,7 @@ describe('Room actions screen', () => { it('should ignore user', async() => { const message = `${ data.random }ignoredmessagecontent`; - const channelName = data.groups.private.name; + const channelName = `#${ data.groups.private.name }`; await sendMessage(user, channelName, message); await openActionSheet(user.username); await element(by.label('Ignore')).tap(); diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js index e7dec4c70ca..40652df7d55 100644 --- a/e2e/tests/room/05-threads.spec.js +++ b/e2e/tests/room/05-threads.spec.js @@ -81,7 +81,7 @@ describe('Threads', () => { it('should navigate to thread from button', async() => { await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); await tapBack(); @@ -89,7 +89,7 @@ describe('Threads', () => { it('should toggle follow thread', async() => { await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); await element(by.id('room-view-header-unfollow')).tap(); @@ -102,7 +102,7 @@ describe('Threads', () => { it('should send message in thread only', async() => { const messageText = 'threadonly'; - await mockMessage(messageText); + await mockMessage(messageText, true); await tapBack(); await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); @@ -113,7 +113,7 @@ describe('Threads', () => { it('should mark send to channel and show on main channel', async() => { const messageText = 'sendToChannel'; await element(by.id(`message-thread-button-${ thread }`)).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(messageText); + await element(by.id('messagebox-input-thread')).typeText(messageText); await element(by.id('messagebox-send-to-channel')).tap(); await element(by.id('messagebox-send-message')).tap(); await tapBack(); @@ -128,16 +128,14 @@ describe('Threads', () => { await mockMessage('dummymessagebetweenthethread'); await dismissReviewNag() //TODO: Create a proper test for this elsewhere. await element(by.id(`message-thread-button-${ thread }`)).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(messageText); + await element(by.id('messagebox-input-thread')).typeText(messageText); await element(by.id('messagebox-send-to-channel')).tap(); await element(by.id('messagebox-send-message')).tap(); await tapBack(); await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( - + await waitFor(element(by.id(`message-thread-replied-on-${ thread }`))).toBeVisible().withTimeout(2000); await element(by.id(`message-thread-replied-on-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); await tapBack(); @@ -149,7 +147,6 @@ describe('Threads', () => { await waitFor(element(by.id('thread-messages-view'))).toExist().withTimeout(5000); await expect(element(by.id('thread-messages-view'))).toExist(); await element(by.id(`thread-messages-view-${ thread }`)).atIndex(0).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); await tapBack(); @@ -160,31 +157,20 @@ describe('Threads', () => { it('should draft thread message', async () => { await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await element(by.id('messagebox-input')).atIndex(0).tap(); - await element(by.id('messagebox-input')).atIndex(0).typeText(`${ thread }draft`); + await element(by.id('messagebox-input-thread')).typeText(`${ thread }draft`); await tapBack(); await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(`${ thread }draft`); - await element(by.id('messagebox-input')).atIndex(0).clearText(); + await expect(element(by.id('messagebox-input-thread'))).toHaveText(`${ thread }draft`); + await element(by.id('messagebox-input-thread')).clearText(); await tapBack(); await element(by.id(`message-thread-button-${ thread }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); - await expect(element(by.id('messagebox-input')).atIndex(0)).toHaveText(''); + await expect(element(by.id('messagebox-input-thread'))).toHaveText(''); }); }); - - // after(async() => { - // await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - // await tapBack(); - // await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); - // await expect(element(by.id('rooms-list-view'))).toExist(); - // }); }); }); diff --git a/e2e/tests/room/07-markasunread.spec.js b/e2e/tests/room/07-markasunread.spec.js index 9f425e8c4f0..dcbc503676a 100644 --- a/e2e/tests/room/07-markasunread.spec.js +++ b/e2e/tests/room/07-markasunread.spec.js @@ -2,7 +2,8 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, mockMessage, tapBack, searchRoom, logout } = require('../../helpers/app'); +const { navigateToLogin, login, searchRoom } = require('../../helpers/app'); +const { sendMessage } = require('../../helpers/data_setup') async function navigateToRoom(user) { await searchRoom(`${ user }`); @@ -20,23 +21,21 @@ describe('Mark as unread', () => { await navigateToRoom(user); }); + // TODO: Fix flakiness. If it fails, run it solo. describe('Usage', async() => { describe('Mark message as unread', async() => { it('should mark message as unread', async() => { - await mockMessage('message') - await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toExist(); - await tapBack(); - await logout(); - await navigateToLogin(); - await login(data.users.alternate.username, data.users.alternate.password); - await navigateToRoom(data.users.regular.username); - await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); + const message = `${ data.random }message`; + const channelName = `@${ data.users.regular.username }`; + await sendMessage(data.users.alternate, channelName, message); + await waitFor(element(by.label(message)).atIndex(0)).toExist().withTimeout(30000); + await element(by.label(message)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await element(by.label('Mark Unread')).tap(); await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); - await expect(element(by.id(`rooms-list-view-item-${data.users.regular.username}`))).toExist(); + await expect(element(by.id(`rooms-list-view-item-${data.users.alternate.username}`))).toExist(); }); }); }); diff --git a/e2e/tests/room/08-roominfo.spec.js b/e2e/tests/room/08-roominfo.spec.js index 3cd339bace9..fd6216cf91a 100644 --- a/e2e/tests/room/08-roominfo.spec.js +++ b/e2e/tests/room/08-roominfo.spec.js @@ -119,7 +119,7 @@ describe('Room info screen', () => { it('should have type switch', async() => { // Ugly hack to scroll on detox - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.8); await expect(element(by.id('room-info-edit-view-t'))).toExist(); }); @@ -145,7 +145,7 @@ describe('Room info screen', () => { after(async() => { // Ugly hack to scroll on detox - await element(by.type('UIScrollView')).atIndex(1).swipe('down'); + await element(by.id('room-info-edit-view-list')).swipe('down', 'fast', 0.8); }); }); @@ -164,7 +164,7 @@ describe('Room info screen', () => { it('should change room name', async() => { await element(by.id('room-info-edit-view-name')).replaceText(`${ privateRoomName }new`); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); await tapBack(); @@ -174,10 +174,10 @@ describe('Room info screen', () => { await element(by.id('room-info-view-edit-button')).tap(); await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000); await element(by.id('room-info-edit-view-name')).replaceText(`${ privateRoomName }`); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); - await element(by.type('UIScrollView')).atIndex(1).swipe('down'); + await element(by.id('room-info-edit-view-list')).swipe('down', 'fast', 0.8); }); it('should reset form', async() => { @@ -186,7 +186,7 @@ describe('Room info screen', () => { await element(by.id('room-info-edit-view-topic')).replaceText('abc'); await element(by.id('room-info-edit-view-announcement')).replaceText('abc'); await element(by.id('room-info-edit-view-password')).replaceText('abc'); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-t')).tap(); await element(by.id('room-info-edit-view-ro')).longPress(); //https://github.com/facebook/react-native/issues/28032 await element(by.id('room-info-edit-view-react-when-ro')).tap(); @@ -200,12 +200,12 @@ describe('Room info screen', () => { await expect(element(by.id('room-info-edit-view-t'))).toHaveValue('1'); await expect(element(by.id('room-info-edit-view-ro'))).toHaveValue('0'); await expect(element(by.id('room-info-edit-view-react-when-ro'))).toBeNotVisible(); - await element(by.type('UIScrollView')).atIndex(1).swipe('down'); + await element(by.id('room-info-edit-view-list')).swipe('down', 'fast', 0.8); }); it('should change room description', async() => { await element(by.id('room-info-edit-view-description')).replaceText('new description'); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); await tapBack(); @@ -218,7 +218,7 @@ describe('Room info screen', () => { await element(by.id('room-info-view-edit-button')).tap(); await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000); await element(by.id('room-info-edit-view-topic')).replaceText('new topic'); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); await tapBack(); @@ -231,7 +231,7 @@ describe('Room info screen', () => { await element(by.id('room-info-view-edit-button')).tap(); await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000); await element(by.id('room-info-edit-view-announcement')).replaceText('new announcement'); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); await tapBack(); @@ -243,14 +243,14 @@ describe('Room info screen', () => { await waitFor(element(by.id('room-info-view-edit-button'))).toExist().withTimeout(10000); await element(by.id('room-info-view-edit-button')).tap(); await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000); - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-password')).replaceText('password'); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); }); it('should change room type', async() => { - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-t')).tap(); await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); @@ -272,7 +272,7 @@ describe('Room info screen', () => { // }); it('should archive room', async() => { - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-archive')).tap(); await waitFor(element(by.text('Yes, archive it!'))).toExist().withTimeout(5000); await element(by.text('Yes, archive it!')).tap(); @@ -288,7 +288,7 @@ describe('Room info screen', () => { }); it('should delete room', async() => { - await element(by.type('UIScrollView')).atIndex(1).swipe('up'); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-delete')).tap(); await waitFor(element(by.text('Yes, delete it!'))).toExist().withTimeout(5000); await element(by.text('Yes, delete it!')).tap(); diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 07bb1935c0c..e1ea97e83ef 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1450,6 +1450,7 @@ DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = S6UPZG7ZR3; ENABLE_BITCODE = NO; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -1569,6 +1570,7 @@ DEVELOPMENT_TEAM = S6UPZG7ZR3; ENABLE_BITCODE = NO; ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"${PODS_ROOT}/Crashlytics/iOS\"", @@ -1687,6 +1689,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = S6UPZG7ZR3; ENABLE_BITCODE = NO; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; @@ -1756,6 +1759,7 @@ DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = S6UPZG7ZR3; ENABLE_BITCODE = NO; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", diff --git a/package.json b/package.json index d9d0dc05108..5b9589de24f 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "js-base64": "2.5.2", "js-sha256": "^0.9.0", "lodash": "4.17.20", + "mocha": "7.1.2", "moment": "2.27.0", "pretty-bytes": "^5.3.0", "prop-types": "15.7.2", @@ -144,7 +145,7 @@ "babel-runtime": "^6.26.0", "bugsnag-sourcemaps": "1.3.0", "codecov": "3.7.1", - "detox": "^16.9.0", + "detox": "^18.10.0", "emotion-theming": "10.0.27", "eslint": "6.8.0", "eslint-plugin-import": "2.22.0", @@ -156,7 +157,6 @@ "jest": "^25.1.0", "jest-cli": "^23.6.0", "metro-react-native-babel-preset": "^0.59.0", - "mocha": "7.1.2", "otp.js": "1.2.0", "patch-package": "6.2.2", "react-dom": "16.13.1", @@ -194,8 +194,7 @@ "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { - "type": "iPhone 11 Pro", - "os": "13.7" + "type": "iPhone 11 Pro" } }, "ios.sim.release": { @@ -203,8 +202,7 @@ "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { - "type": "iPhone 11 Pro", - "os": "13.7" + "type": "iPhone 11 Pro" }, "artifacts": { "plugins": { diff --git a/yarn.lock b/yarn.lock index 2938649e310..0fc1c6c53d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4610,12 +4610,12 @@ bunyan-debug-stream@^1.1.0: exception-formatter "^1.0.4" bunyan@^1.8.12: - version "1.8.12" - resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" - integrity sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c= + version "1.8.15" + resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.15.tgz#8ce34ca908a17d0776576ca1b2f6cbd916e93b46" + integrity sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig== optionalDependencies: dtrace-provider "~0.8" - moment "^2.10.6" + moment "^2.19.3" mv "~2" safe-json-stringify "~1" @@ -4756,6 +4756,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -5046,6 +5051,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" @@ -5726,6 +5740,11 @@ decamelize@^3.2.0: dependencies: xregexp "^4.2.4" +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -5904,10 +5923,10 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" -detox@^16.9.0: - version "16.9.2" - resolved "https://registry.yarnpkg.com/detox/-/detox-16.9.2.tgz#3b99be3df54ef0f35ffe12d3aa87b556d00a50d3" - integrity sha512-yi74zL3hHFRU131B5tgZiYh0hPWvpryntllAKEpxRGRRuz+11s2+TjpuS0M02jGOdDMFBk5BzcXFGM57FWbWNA== +detox@^18.10.0: + version "18.10.0" + resolved "https://registry.yarnpkg.com/detox/-/detox-18.10.0.tgz#8b8d6b6f2bf9775f09d92b63f98dc1b5f4c9334e" + integrity sha512-okqMongBq0hKuJN8hxVHoBjM3Ms0XbaaWq5PyZGWuog3SXTX18ux8YjSmCU2J8ESA8muXyuOpl9KGgT8bWJTHA== dependencies: bunyan "^1.8.12" bunyan-debug-stream "^1.1.0" @@ -5921,16 +5940,18 @@ detox@^16.9.0: lodash "^4.17.5" minimist "^1.2.0" proper-lockfile "^3.0.2" + resolve-from "^5.0.0" sanitize-filename "^1.6.1" - shell-utils "^1.0.9" + serialize-error "^8.0.1" + shell-quote "^1.7.2" signal-exit "^3.0.3" tail "^2.0.0" telnet-client "1.2.8" tempfile "^2.0.0" which "^1.3.1" - ws "^3.3.1" - yargs "^13.0.0" - yargs-parser "^13.0.0" + ws "^7.4.3" + yargs "^16.0.3" + yargs-unparser "^2.0.0" diff-sequences@^24.9.0: version "24.9.0" @@ -6323,6 +6344,11 @@ es6-shim@^0.35.5: resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -7281,12 +7307,17 @@ flat-cache@^2.0.1: write "1.0.3" flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== dependencies: is-buffer "~2.0.3" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" @@ -7543,7 +7574,7 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -8294,7 +8325,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -8465,9 +8501,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" @@ -8676,6 +8712,11 @@ is-plain-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -10290,11 +10331,16 @@ lodash@4.17.20, lodash@^4.0.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@4.x.x, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -11121,12 +11167,12 @@ moment@2.27.0: resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== -moment@2.x.x, moment@^2.10.6: +moment@2.x.x: version "2.26.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a" integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw== -moment@^2.24.0: +moment@^2.19.3, moment@^2.24.0: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -11177,11 +11223,16 @@ mv@~2: ncp "~2.0.0" rimraf "~2.4.0" -nan@^2.12.1, nan@^2.14.0: +nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nan@^2.14.0: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + nanoid@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.10.tgz#69a8a52b77892de0d11cede96bc9762852145bc4" @@ -14022,6 +14073,13 @@ serialize-error@^2.1.0: resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= +serialize-error@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.0.1.tgz#7a67f8ecbbf28973b5a954a2852ff9f4eef52d99" + integrity sha512-r5o60rWFS+8/b49DNAbB+GXZA0SpDpuWE758JxDKgRTga05r3U5lwyksE91dYKDhXSmnu36RALj615E6Aj5pSg== + dependencies: + type-fest "^0.20.2" + serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" @@ -14139,18 +14197,11 @@ shell-quote@1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" -shell-quote@1.7.2, shell-quote@^1.6.1: +shell-quote@1.7.2, shell-quote@^1.6.1, shell-quote@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shell-utils@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/shell-utils/-/shell-utils-1.0.10.tgz#7fe7b8084f5d6d21323d941267013bc38aed063e" - integrity sha512-p1xuqhj3jgcXiV8wGoF1eL/NOvapN9tyGDoObqKwvZTUZn7fIzK75swLTEHfGa7sObeN9vxFplHw/zgYUYRTsg== - dependencies: - lodash "4.x.x" - shelljs@^0.7.8: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" @@ -14890,9 +14941,9 @@ table@^5.2.3: string-width "^3.0.0" tail@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tail/-/tail-2.0.3.tgz#37567adc4624a70b35f1d146c3376fa3d6ef7c04" - integrity sha512-s9NOGkLqqiDEtBttQZI7acLS8ycYK5sTlDwNjGnpXG9c8AWj0cfAtwEIzo/hVRMMiC5EYz+bXaJWC1u1u0GPpQ== + version "2.2.1" + resolved "https://registry.yarnpkg.com/tail/-/tail-2.2.1.tgz#3369a786dde3d7b1a5baa3a0accea09348bc5a83" + integrity sha512-pqtI8HB6pbltcaDxkTq12meYxMeLNtZg7+h+c2WlXofaOh4bUeLFQ3eU8S23niqb8We4/UFc+QNlky9nCRnrSQ== tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" @@ -15288,6 +15339,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -16034,6 +16090,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -16091,7 +16156,7 @@ ws@^1.1.0, ws@^1.1.5: options ">=0.0.5" ultron "1.0.x" -ws@^3.3.1, ws@^3.3.3: +ws@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== @@ -16117,6 +16182,11 @@ ws@^7.0.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== +ws@^7.4.3: + version "7.4.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== + xcode@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" @@ -16224,6 +16294,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +y18n@^5.0.5: + version "5.0.7" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.7.tgz#0c514aba53fc40e2db911aeb8b51566a3374efe7" + integrity sha512-oOhslryvNcA1lB9WYr+M6TMyLkLg81Dgmyb48ZDU0lvR+5bmNDTMz7iobM1QXooaLhbbrcHrlNaABhI6Vo6StQ== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -16244,7 +16319,7 @@ yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@13.1.2, yargs-parser@^13.0.0, yargs-parser@^13.1.2: +yargs-parser@13.1.2, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -16268,6 +16343,11 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -16284,7 +16364,17 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs@13.3.2, yargs@^13.0.0, yargs@^13.3.0: +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@13.3.2, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -16368,3 +16458,16 @@ yargs@^15.1.0, yargs@^15.3.1: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^18.1.2" + +yargs@^16.0.3: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" From 21b587749cd7ab273372586d5e1622ee29501ed2 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 19 Apr 2021 11:33:07 -0300 Subject: [PATCH 109/177] [FIX] Message author touchable taking whole space available (#3048) Co-authored-by: Gerzon Z <gerzonc@icloud.com> --- .../__snapshots__/Storyshots.test.js.snap | 228 ++++++++++++------ app/containers/message/User.js | 3 +- 2 files changed, 154 insertions(+), 77 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 286e506ee18..78185ec1c1b 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -14599,6 +14599,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -14615,8 +14616,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -14859,6 +14860,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -14875,8 +14877,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -15119,6 +15121,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -15135,8 +15138,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -15358,6 +15361,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -15374,8 +15378,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -15801,6 +15805,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -15817,8 +15822,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -16184,6 +16189,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -16200,8 +16206,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -16442,6 +16448,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -16458,8 +16465,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -16721,6 +16728,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -16737,8 +16745,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -16981,6 +16989,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -16997,8 +17006,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -17446,6 +17455,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -17462,8 +17472,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -18328,6 +18338,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -18344,8 +18355,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -18635,6 +18646,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -18651,8 +18663,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -18920,6 +18932,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -18936,8 +18949,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -19267,6 +19280,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -19283,8 +19297,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -19797,6 +19811,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -19813,8 +19828,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -20068,6 +20083,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -20084,8 +20100,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -20407,6 +20423,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -20423,8 +20440,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -20891,6 +20908,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -20907,8 +20925,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -21282,6 +21300,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -21298,8 +21317,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -21728,6 +21747,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -21744,8 +21764,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -21988,6 +22008,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -22004,8 +22025,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -22248,6 +22269,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -22264,8 +22286,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -22664,6 +22686,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -22680,8 +22703,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -23129,6 +23152,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -23145,8 +23169,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -23395,6 +23419,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -23411,8 +23436,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -23661,6 +23686,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -23677,8 +23703,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -24066,6 +24092,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -24082,8 +24109,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -24333,6 +24360,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -24349,8 +24377,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -24634,6 +24662,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -24650,8 +24679,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -24957,6 +24986,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -24973,8 +25003,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -25217,6 +25247,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -25233,8 +25264,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -25818,6 +25849,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -25834,8 +25866,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -26863,6 +26895,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -26879,8 +26912,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -27102,6 +27135,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -27118,8 +27152,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -27341,6 +27375,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -27357,8 +27392,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -27580,6 +27615,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -27596,8 +27632,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -27840,6 +27876,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -27856,8 +27893,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -28143,6 +28180,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -28159,8 +28197,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -28530,6 +28568,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -28546,8 +28585,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -28815,6 +28854,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -28831,8 +28871,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -29075,6 +29115,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -29091,8 +29132,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -29391,6 +29432,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -29407,8 +29449,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -29763,6 +29805,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -29779,8 +29822,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -30078,6 +30121,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -30094,8 +30138,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -30334,6 +30378,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -30350,8 +30395,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -31443,6 +31488,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -31459,8 +31505,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -32035,6 +32081,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -32051,8 +32098,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -32404,6 +32451,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -32420,8 +32468,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -32829,6 +32877,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -32845,8 +32894,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -33170,6 +33219,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -33186,8 +33236,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -33576,6 +33626,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -33592,8 +33643,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -35747,6 +35798,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -35763,8 +35815,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -37355,6 +37407,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -37371,8 +37424,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -37682,6 +37735,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -37698,8 +37752,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -38011,6 +38065,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -38027,8 +38082,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -38340,6 +38395,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -38356,8 +38412,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -38690,6 +38746,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -38706,8 +38763,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -39062,6 +39119,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -39078,8 +39136,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -39559,6 +39617,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -39575,8 +39634,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -40344,6 +40403,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -40360,8 +40420,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -41217,6 +41277,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -41233,8 +41294,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -42111,6 +42172,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -42127,8 +42189,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -42454,6 +42516,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -42470,8 +42533,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -42698,6 +42761,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -42714,8 +42778,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -42899,6 +42963,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -42915,8 +42980,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -43205,6 +43270,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -43221,8 +43287,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -43471,6 +43537,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -43487,8 +43554,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -46724,6 +46791,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -46740,8 +46808,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -46984,6 +47052,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -47000,8 +47069,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -47573,6 +47642,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -47589,8 +47659,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -48020,6 +48090,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -48036,8 +48107,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -48486,6 +48557,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -48502,8 +48574,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -48746,6 +48818,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -48762,8 +48835,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -48992,6 +49065,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -49008,8 +49082,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -49364,6 +49438,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -49380,8 +49455,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } @@ -49656,6 +49731,7 @@ exports[`Storyshots Message list message 1`] = ` "alignItems": "center", "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > @@ -49672,8 +49748,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flex": 1, "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } diff --git a/app/containers/message/User.js b/app/containers/message/User.js index cd4559b4299..98b4498498b 100644 --- a/app/containers/message/User.js +++ b/app/containers/message/User.js @@ -18,6 +18,7 @@ const styles = StyleSheet.create({ container: { flex: 1, flexDirection: 'row', + justifyContent: 'space-between', alignItems: 'center' }, username: { @@ -30,7 +31,7 @@ const styles = StyleSheet.create({ ...sharedStyles.textMedium }, titleContainer: { - flex: 1, + flexShrink: 1, flexDirection: 'row', alignItems: 'center' }, From ff1da46ef7dc4a0ef9a69c8d31b40b7c7f9a26ae Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Tue, 20 Apr 2021 00:57:19 +0800 Subject: [PATCH 110/177] [CHORE] Improve stories (#3028) * [CHORE] Improve stories * Refactor Avatar and UIKitModal * fixed undefined 'name' * Remove commented stories * Remove Markdown from stories/index, update Markdown test file and remove markdown stories from Message stories * Remove StoriesSeparator * Refactor Markdown * Remove commented lines of code * Small refactor * Re-add stories Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .eslintrc.js | 1 + .../__snapshots__/Storyshots.test.js.snap | 57495 +++++++--------- storybook/stories/Avatar.js | 276 +- storybook/stories/Markdown.js | 452 +- storybook/stories/Message.js | 1670 +- storybook/stories/RoomItem.js | 197 +- storybook/stories/StoriesSeparator.js | 36 - storybook/stories/UiKitMessage.js | 819 +- storybook/stories/UiKitModal.js | 1051 +- storybook/stories/index.js | 74 +- 10 files changed, 27974 insertions(+), 34097 deletions(-) delete mode 100644 storybook/stories/StoriesSeparator.js diff --git a/.eslintrc.js b/.eslintrc.js index add372a0b5c..31146aefefd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -46,6 +46,7 @@ module.exports = { "react/forbid-prop-types": 0, "jsx-quotes": [2, "prefer-single"], "jsx-a11y/href-no-hash": 0, + "jsx-a11y/aria-role": 0, "import/prefer-default-export": 0, "import/no-cycle": 0, "camelcase": 0, diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 78185ec1c1b..52cde22be23 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -1,1141 +1,896 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Storyshots Avatar list Avatar 1`] = ` -<RCTScrollView +exports[`Storyshots Avatar Avatar by path 1`] = ` +<View style={ - Object { - "backgroundColor": "#ffffff", + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=56", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Avatar by roomId 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] } > - <View> - <Text + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/room/devWBbYr7inwupPqK?format=png&size=56", + } + } style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Avatar by text 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", + } } - > - Avatar by text - </Text> - <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Avatar by url 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Channel 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/@general?format=png&size=56", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Children 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", + } } - > - Avatar by roomId - </Text> - <View style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 24, + }, Array [ Object { - "borderRadius": 4, - "height": 56, - "width": 56, + "height": 24, + "textAlignVertical": "center", + "width": 24, }, - undefined, - ] - } - > - <View - style={ Array [ Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, + "borderRadius": 10, + "bottom": -2, + "position": "absolute", + "right": -2, }, - ] + undefined, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + theme="light" + > +  + </Text> +</View> +`; + +exports[`Storyshots Avatar Custom borderRadius 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 28, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 28, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/room/devWBbYr7inwupPqK?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Custom style 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + Object { + "padding": 16, + }, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", + } } - > - Avatar by url - </Text> - <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Direct 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=56", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Emoji 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "height": 30, + "width": 30, }, - undefined, - ] - } - > - Avatar by path - </Text> - <View - style={ - Array [ Object { "borderRadius": 4, "height": 56, "width": 56, }, - undefined, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/troll.jpg", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] } - > - With ETag - </Text> - <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Static 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/djorkaeff.alexandre?format=png&size=56&etag=5ag8KffJcZj9m5rCv", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - Without ETag - </Text> + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Touchable 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > <View style={ Array [ + Object { + "overflow": "hidden", + }, Object { "borderRadius": 4, "height": 56, "width": 56, }, - undefined, ] } > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/djorkaeff.alexandre?format=png&size=56", - } + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - /> - </View> + } + /> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + </View> +</View> +`; + +exports[`Storyshots Avatar With ETag 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/djorkaeff.alexandre?format=png&size=56&etag=5ag8KffJcZj9m5rCv", + } } - > - Emoji - </Text> - <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 30, - "width": 30, - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ], - ] + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Without ETag 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/djorkaeff.alexandre?format=png&size=56", } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/troll.jpg", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> +</View> +`; + +exports[`Storyshots Avatar Wrong server 1`] = ` +<View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + undefined, + ] + } +> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 56, + "width": 56, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://google.com/avatar/Avatar?format=png&size=56", + } } - > - Direct - </Text> - <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] + /> + </View> +</View> +`; + +exports[`Storyshots BackgroundContainer basic 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", + } + } + > + <Image + source={ + Object { + "uri": "message_empty_light", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, }, Object { - "color": "#0d0e12", + "height": "100%", + "width": "100%", }, undefined, ] } - > - Channel - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] + /> + </View> +</View> +`; + +exports[`Storyshots BackgroundContainer black theme - loading 1`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "height": "100%", + "position": "absolute", + "width": "100%", } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] + } + > + <Image + source={ + Object { + "uri": "message_empty_black", } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/@general?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text + } style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, }, Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Touchable - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Static - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Custom borderRadius - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 28, - "height": 56, - "width": 56, - }, - undefined, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 28, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Children - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <View - style={ - Array [ - Object { - "borderRadius": 10, - "bottom": -2, - "position": "absolute", - "right": -2, - }, - Object { - "backgroundColor": "#ffffff", - }, - ] - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#2de0a5", - "fontSize": 20, - }, - Array [ - Object { - "height": 20, - "textAlignVertical": "center", - "width": 20, - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Wrong server - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - undefined, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://google.com/avatar/Avatar?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Custom style - </Text> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - Object { - "padding": 16, - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 56, - "width": 56, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/Avatar?format=png&size=56", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> -</RCTScrollView> -`; - -exports[`Storyshots BackgroundContainer basic 1`] = ` -<View - style={ - Object { - "flex": 1, - } - } -> - <View - accessibilityIgnoresInvertColors={true} - style={ - Object { - "height": "100%", - "position": "absolute", - "width": "100%", - } - } - > - <Image - source={ - Object { - "uri": "message_empty_light", - } - } - style={ - Array [ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - Object { - "height": "100%", - "width": "100%", - }, - undefined, - ] - } - /> - </View> -</View> -`; - -exports[`Storyshots BackgroundContainer black theme - loading 1`] = ` -<View - style={ - Object { - "flex": 1, - } - } -> - <View - accessibilityIgnoresInvertColors={true} - style={ - Object { - "height": "100%", - "position": "absolute", - "width": "100%", - } - } - > - <Image - source={ - Object { - "uri": "message_empty_black", - } - } - style={ - Array [ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - Object { - "height": "100%", - "width": "100%", + "height": "100%", + "width": "100%", }, undefined, ] @@ -10450,46 +10205,42 @@ exports[`Storyshots List with small font 1`] = ` </RNCSafeAreaView> `; -exports[`Storyshots Markdown list Markdown 1`] = ` -<RCTScrollView - contentContainerStyle={ - Object { - "paddingBottom": 50, - } - } +exports[`Storyshots Markdown Block quote 1`] = ` +<View style={ Object { "backgroundColor": "#ffffff", + "marginHorizontal": 15, "marginVertical": 50, } } > - <View> - <Text + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "height": "100%", + "marginRight": 5, + "width": 2, }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "#e1e5e8", }, ] } - > - Short Text - </Text> + /> <View style={ Object { - "marginHorizontal": 15, + "flex": 1, } } > @@ -10511,7 +10262,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="This is Rocket.Chat" + accessibilityLabel="This is block quote" style={ Array [ Object { @@ -10523,6 +10274,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, + undefined, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -10535,1245 +10287,1400 @@ exports[`Storyshots Markdown list Markdown 1`] = ` ] } > - This is Rocket.Chat + This is block quote </Text> </Text> </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text + accessibilityLabel="this is a normal line" style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > - Long Text + this is a normal line </Text> - <View - style={ + </Text> +</View> +`; + +exports[`Storyshots Markdown Code 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Text> - </Text> - </View> + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text + accessibilityLabel="This is " style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > - Line Break Text + This is </Text> - <View - style={ - Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="a" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - a - </Text> - <Text> - - - </Text> - <Text - accessibilityLabel="b" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - b - </Text> - <Text> - - - </Text> - <Text - accessibilityLabel="c" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - c - </Text> - <Text> - - - </Text> - <Text> - - - </Text> - <Text - accessibilityLabel="d" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - d - </Text> - <Text> - - - </Text> - <Text> - - - </Text> - <Text> - - - </Text> - <Text - accessibilityLabel="e" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - e - </Text> - </Text> - </View> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "#f1f2f4", + "borderColor": "#f1f2f4", + "borderRadius": 4, + "borderWidth": 1, + "color": "#2f343d", + "fontFamily": "Courier New", + "fontWeight": "400", + "textAlign": "left", }, ] } > - Sequential empty spaces + inline code </Text> - <View - style={ + </Text> + <Text + style={ + Array [ Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Inline " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="a b c" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - a b c - </Text> - </Text> - </View> + ], + ] + } + > + Inline + </Text> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "#f1f2f4", + "borderColor": "#f1f2f4", + "borderRadius": 4, + "borderWidth": 1, + "color": "#2f343d", + "fontFamily": "Courier New", + "fontWeight": "400", + "textAlign": "left", }, ] } > - Edited + code </Text> - <View + <Text + accessibilityLabel=" has " style={ - Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="This is edited" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is edited - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - ( - edited - ) - </Text> - </Text> - </View> + ], + ] + } + > + has + </Text> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "#f1f2f4", + "borderColor": "#f1f2f4", + "borderRadius": 4, + "borderWidth": 1, + "color": "#2f343d", + "fontFamily": "Courier New", + "fontWeight": "400", + "textAlign": "left", }, ] } > - Preview + back-ticks around </Text> - <View + <Text + accessibilityLabel=" it." style={ - Object { - "marginHorizontal": 15, - } - } - > - <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - numberOfLines={1} - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Text> - <Text - accessibilityLabel="a b c d e" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + ], + ] + } + > + it. + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "#f1f2f4", + "borderColor": "#f1f2f4", + "borderRadius": 4, + "borderWidth": 1, + "color": "#2f343d", + "fontFamily": "Courier New", + "fontWeight": "400", + "padding": 4, + "textAlign": "left", + }, + ] + } + > + Code block + + </Text> +</View> +`; + +exports[`Storyshots Markdown Edited 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is edited" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, + ], + ] + } + > + This is edited + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + ( + edited + ) + </Text> + </Text> +</View> +`; + +exports[`Storyshots Markdown Emoji 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Unicode: 😃😇👍" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] + ], + ] + } + > + Unicode: 😃😇👍 + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Shortnames: " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Shortnames: + </Text> + <Text + style={ + Array [ + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object {}, + ] + } + > + 😂 + </Text> + <Text + style={ + Array [ + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object {}, + ] + } + > + 👍 + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Custom emojis: " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Custom emojis: + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + } } - > - a b c d e - </Text> - <Text - accessibilityLabel="a b c" - numberOfLines={1} style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + accessibilityLabel=" " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, + ], + ] + } + > + + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ Object { - "color": "#2f343d", + "height": 20, + "width": 20, }, - ] + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } } - > - a b c - </Text> - <Text - accessibilityLabel="@rocket.cat @name1 @all @here @unknown #general #unknown" - numberOfLines={1} style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + accessibilityLabel=" " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, + ], + ] + } + > + + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ Object { - "color": "#2f343d", + "height": 20, + "width": 20, }, - ] + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", + } } - > - @rocket.cat @name1 @all @here @unknown #general #unknown - </Text> - <Text - accessibilityLabel="Testing: 😃 👍 :marioparty:" - numberOfLines={1} style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="😃 " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, + "fontSize": 30, "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - Testing: 😃 👍 :marioparty: - </Text> - </View> + ], + ] + } + > + 😃 + </Text> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "color": "#2f343d", }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 30, + "fontWeight": "400", + "textAlign": "left", }, + Object {}, ] } > - Mentions + 👍 </Text> - <View + <Text + accessibilityLabel=" " style={ - Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, + "fontSize": 30, "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F5455C", - }, - ] - } - > - rocket.cat - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F3BE08", - }, - ] + ], + ] + } + > + + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 30, + "width": 30, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", } - > - name1 - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - all - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - here - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - @unknown - </Text> - </Text> + } + /> </View> + </Text> +</View> +`; + +exports[`Storyshots Markdown Hashtag 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text + onPress={[Function]} style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "color": "#F3BE08", }, ] } > - Mentions with Real Name + #test-channel </Text> - <View + <Text + accessibilityLabel=" " style={ - Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F5455C", - }, - ] - } - > - Rocket Cat - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F3BE08", - }, - ] - } - > - Name - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - all - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - here - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - @unknown - </Text> - </Text> - </View> + ], + ] + } + > + + </Text> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "color": "#2f343d", }, ] } > - Hashtag + #unknown </Text> - <View - style={ + </Text> +</View> +`; + +exports[`Storyshots Markdown Headers 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ + undefined, Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Header 1" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", + "fontSize": 24, + "fontWeight": "700", "textAlign": "left", }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F3BE08", - }, - ] - } - > - #test-channel - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - #unknown - </Text> - </Text> - </View> + ], + ] + } + > + Header 1 + </Text> + </Text> + <Text + style={ + Array [ + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text + accessibilityLabel="Header 2" style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 22, + "fontWeight": "700", + "textAlign": "left", + }, + ], ] } > - Emoji + Header 2 </Text> - <View - style={ + </Text> + <Text + style={ + Array [ + undefined, Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Header 3" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "fontSize": 20, + "fontWeight": "600", + "textAlign": "left", }, - undefined, + ], + ] + } + > + Header 3 + </Text> + </Text> + <Text + style={ + Array [ + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Header 4" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 18, + "fontWeight": "600", + "textAlign": "left", + }, + ], + ] + } + > + Header 4 + </Text> + </Text> + <Text + style={ + Array [ + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Header 5" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + ], + ] + } + > + Header 5 + </Text> + </Text> + <Text + style={ + Array [ + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Header 6" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "500", + "textAlign": "left", + }, + ], + ] + } + > + Header 6 + </Text> + </Text> +</View> +`; + +exports[`Storyshots Markdown Image 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Image + source={ + Object { + "uri": "https://play.google.com/intl/en_us/badges/images/badge_new.png", + } + } + style={ + Object { + "height": 300, + "resizeMode": "contain", + "width": 300, + } + } + /> + </Text> +</View> +`; + +exports[`Storyshots Markdown Links 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + onLongPress={[Function]} + onPress={[Function]} + style={ + Object { + "backgroundColor": "transparent", + "color": "#1d74f5", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + } + } + > + <Text + accessibilityLabel="Markdown link" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + ], ] } > - <Text - accessibilityLabel="Unicode: 😃😇👍" - style={ + Markdown link + </Text> + </Text> + <Text + accessibilityLabel=": " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + : + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "#f1f2f4", + "borderColor": "#f1f2f4", + "borderRadius": 4, + "borderWidth": 1, + "color": "#2f343d", + "fontFamily": "Courier New", + "fontWeight": "400", + "textAlign": "left", + }, + ] + } + > + [description](url) + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + onLongPress={[Function]} + onPress={[Function]} + style={ + Object { + "backgroundColor": "transparent", + "color": "#1d74f5", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + } + } + > + <Text + accessibilityLabel="Formatted Link" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, Object { "backgroundColor": "transparent", "fontFamily": "System", @@ -11781,23 +11688,110 @@ exports[`Storyshots Markdown list Markdown 1`] = ` "fontWeight": "400", "textAlign": "left", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] + ], + ] + } + > + Formatted Link + </Text> + </Text> + <Text + accessibilityLabel=": " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + : + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "#f1f2f4", + "borderColor": "#f1f2f4", + "borderRadius": 4, + "borderWidth": 1, + "color": "#2f343d", + "fontFamily": "Courier New", + "fontWeight": "400", + "textAlign": "left", + }, + ] + } + > + <url|description> + </Text> + </Text> +</View> +`; + +exports[`Storyshots Markdown Lists 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 15, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", } - > - Unicode: 😃😇👍 - </Text> + } + > + • </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > <Text style={ Array [ @@ -11816,7 +11810,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="Shortnames: " + accessibilityLabel="Open Source" style={ Array [ Object { @@ -11828,6 +11822,8 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, + undefined, + undefined, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -11840,47 +11836,49 @@ exports[`Storyshots Markdown list Markdown 1`] = ` ] } > - Shortnames: - </Text> - <Text - style={ - Array [ - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object {}, - ] - } - > - 😂 + Open Source </Text> - <Text - style={ - Array [ - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object {}, - ] + </Text> + </View> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 15, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", } - > - 👍 - </Text> + } + > + • </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > <Text style={ Array [ @@ -11899,7 +11897,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="Custom emojis: " + accessibilityLabel="Rocket.Chat" style={ Array [ Object { @@ -11911,6 +11909,8 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, + undefined, + undefined, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -11923,335 +11923,98 @@ exports[`Storyshots Markdown list Markdown 1`] = ` ] } > - Custom emojis: + Rocket.Chat </Text> + </Text> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > <View style={ Array [ Object { - "overflow": "hidden", + "width": 15, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], ] } > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", - } - } + <Text style={ Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + "color": "#2f343d", } } - /> + > + ◦ + </Text> </View> - <Text - accessibilityLabel=" " + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] + Object { + "flex": 1, + } } > - - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, + <Text + style={ Array [ Object { - "height": 20, - "width": 20, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } + ] } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="😃 " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 30, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - 😃 - </Text> - <Text - style={ - Array [ - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 30, - "fontWeight": "400", - "textAlign": "left", - }, - Object {}, - ] - } - > - 👍 - </Text> - <Text - accessibilityLabel=" " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 30, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 30, - "width": 30, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + > + <Text + accessibilityLabel="nodejs" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] } - } - /> + > + nodejs + </Text> + </Text> </View> - </Text> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, - }, - ] - } - > - Block Quote - </Text> - <View - style={ - Object { - "marginHorizontal": 15, - } - } - > + </View> <View style={ Object { @@ -12264,16 +12027,25 @@ exports[`Storyshots Markdown list Markdown 1`] = ` style={ Array [ Object { - "height": "100%", - "marginRight": 5, - "width": 2, + "width": 15, }, Object { - "backgroundColor": "#e1e5e8", + "alignItems": "flex-end", + "marginRight": 5, }, ] } - /> + > + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + ◦ + </Text> + </View> <View style={ Object { @@ -12299,7 +12071,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="This is block quote" + accessibilityLabel="ReactNative" style={ Array [ Object { @@ -12312,6 +12084,9 @@ exports[`Storyshots Markdown list Markdown 1`] = ` Array [ Object {}, undefined, + undefined, + undefined, + undefined, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -12324,11 +12099,51 @@ exports[`Storyshots Markdown list Markdown 1`] = ` ] } > - This is block quote + ReactNative </Text> </Text> </View> </View> + </View> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 16, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + 1. + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > <Text style={ Array [ @@ -12347,7 +12162,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="this is a normal line" + accessibilityLabel="Open Source" style={ Array [ Object { @@ -12359,6 +12174,8 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, + undefined, + undefined, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -12371,35 +12188,46 @@ exports[`Storyshots Markdown list Markdown 1`] = ` ] } > - this is a normal line + Open Source </Text> </Text> </View> - <Text + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "width": 16, }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "alignItems": "flex-end", + "marginRight": 5, }, ] } > - Links - </Text> + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + 2. + </Text> + </View> <View style={ Object { - "marginHorizontal": 15, + "flex": 1, } } > @@ -12421,56 +12249,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - onLongPress={[Function]} - onPress={[Function]} - style={ - Object { - "backgroundColor": "transparent", - "color": "#1d74f5", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - } - } - > - <Text - accessibilityLabel="Markdown link" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - ], - ] - } - > - Markdown link - </Text> - </Text> - <Text - accessibilityLabel=": " + accessibilityLabel="Rocket.Chat" style={ Array [ Object { @@ -12482,6 +12261,8 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, + undefined, + undefined, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -12494,977 +12275,860 @@ exports[`Storyshots Markdown list Markdown 1`] = ` ] } > - : - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", - }, - ] - } - > - [description](url) + Rocket.Chat </Text> </Text> + </View> + </View> +</View> +`; + +exports[`Storyshots Markdown Mentions 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text + onPress={[Function]} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#F5455C", }, ] } > - <Text - onLongPress={[Function]} - onPress={[Function]} - style={ + rocket.cat + </Text> + <Text + accessibilityLabel=" " + style={ + Array [ Object { "backgroundColor": "transparent", - "color": "#1d74f5", "fontFamily": "System", "fontSize": 16, "fontWeight": "400", "textAlign": "left", - } - } - > - <Text - accessibilityLabel="Formatted Link" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - ], - ] - } - > - Formatted Link - </Text> - </Text> - <Text - accessibilityLabel=": " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - : - </Text> - <Text - style={ + }, Array [ + Object {}, Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <url|description> - </Text> - </Text> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, - }, - ] - } - > - Image - </Text> - <View - style={ - Object { - "marginHorizontal": 15, + ], + ] } - } - > + > + + </Text> <Text + onPress={[Function]} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#F3BE08", }, ] } > - <Image - source={ - Object { - "uri": "https://play.google.com/intl/en_us/badges/images/badge_new.png", - } - } - style={ - Object { - "height": 300, - "resizeMode": "contain", - "width": 300, - } - } - /> + name1 </Text> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, - }, - ] - } - > - Headers - </Text> - <View - style={ - Object { - "marginHorizontal": 15, - } - } - > <Text + accessibilityLabel=" " style={ Array [ - undefined, Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ] - } - > - <Text - accessibilityLabel="Header 1" - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 24, - "fontWeight": "700", - "textAlign": "left", - }, - ], - ] - } - > - Header 1 - </Text> + ], + ] + } + > + </Text> <Text style={ Array [ - undefined, Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", }, ] } > - <Text - accessibilityLabel="Header 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 22, - "fontWeight": "700", - "textAlign": "left", - }, - ], - ] - } - > - Header 2 - </Text> + all </Text> <Text + accessibilityLabel=" " style={ Array [ - undefined, Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ] - } - > - <Text - accessibilityLabel="Header 3" - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 20, - "fontWeight": "600", - "textAlign": "left", - }, - ], - ] - } - > - Header 3 - </Text> + ], + ] + } + > + </Text> <Text style={ Array [ - undefined, Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", }, ] } > - <Text - accessibilityLabel="Header 4" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 18, - "fontWeight": "600", - "textAlign": "left", - }, - ], - ] - } - > - Header 4 - </Text> + here </Text> <Text + accessibilityLabel=" " style={ Array [ - undefined, Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ] - } - > - <Text - accessibilityLabel="Header 5" - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - ], - ] - } - > - Header 5 - </Text> + ], + ] + } + > + </Text> <Text style={ Array [ - undefined, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Object { "color": "#2f343d", }, ] } > - <Text - accessibilityLabel="Header 6" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "500", - "textAlign": "left", - }, - ], - ] - } - > - Header 6 - </Text> + @unknown </Text> - </View> + </Text> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + undefined, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "color": "#2f343d", }, ] } - > - Inline Code - </Text> - <View - style={ - Object { - "marginHorizontal": 15, - } - } > <Text + onPress={[Function]} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#F5455C", }, ] } > - <Text - accessibilityLabel="This is " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is - </Text> - <Text - style={ + Rocket Cat + </Text> + <Text + accessibilityLabel=" " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - inline code - </Text> - </Text> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, - }, - ] - } - > - Code Block - </Text> - <View - style={ - Object { - "marginHorizontal": 15, + ], + ] } - } - > + > + + </Text> <Text + onPress={[Function]} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#F3BE08", }, ] } > - <Text - accessibilityLabel="Inline " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Inline - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", - }, - ] - } - > - code - </Text> - <Text - accessibilityLabel=" has " - style={ + Name + </Text> + <Text + accessibilityLabel=" " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - has - </Text> - <Text - style={ + ], + ] + } + > + + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", + }, + ] + } + > + all + </Text> + <Text + accessibilityLabel=" " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - back-ticks around - </Text> - <Text - accessibilityLabel=" it." - style={ + ], + ] + } + > + + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", + }, + ] + } + > + here + </Text> + <Text + accessibilityLabel=" " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - it. - </Text> + ], + ] + } + > + </Text> <Text style={ Array [ Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, "fontWeight": "400", - "padding": 4, "textAlign": "left", }, + Object { + "color": "#2f343d", + }, ] } > - Code block - + @unknown </Text> - </View> - <Text + </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Markdown Preview 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> + <Text + accessibilityLabel="a b c d e" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + a b c d e + </Text> + <Text + accessibilityLabel="a b c" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + a b c + </Text> + <Text + accessibilityLabel="@rocket.cat @name1 @all @here @unknown #general #unknown" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + @rocket.cat @name1 @all @here @unknown #general #unknown + </Text> + <Text + accessibilityLabel="Testing: 😃 👍 :marioparty:" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Testing: 😃 👍 :marioparty: + </Text> +</View> +`; + +exports[`Storyshots Markdown Table 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <RCTScrollView + contentContainerStyle={ + Object { + "width": 200, + } + } + scrollEnabled={false} + showsVerticalScrollIndicator={false} style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "borderBottomWidth": 1, + "borderRightWidth": 1, }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "borderColor": "#e1e5e8", + "maxHeight": 300, + "maxWidth": 200, }, ] } > - Lists - </Text> - <View - style={ - Object { - "marginHorizontal": 15, - } - } - > - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > + <View> <View style={ Array [ Object { - "width": 15, + "borderLeftWidth": 1, + "borderTopWidth": 1, }, Object { - "alignItems": "flex-end", - "marginRight": 5, + "borderColor": "#e1e5e8", }, ] } > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - • - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "flexDirection": "row", }, - undefined, Object { - "color": "#2f343d", + "borderColor": "#e1e5e8", + }, + Object { + "borderBottomWidth": 1, }, ] } > - <Text - accessibilityLabel="Open Source" + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "justifyContent": "flex-start", + "paddingHorizontal": 13, + "paddingVertical": 6, }, + Object { + "borderColor": "#e1e5e8", + }, + Object { + "borderRightWidth": 1, + }, + Object { + "width": 100, + }, + ] + } + > + <Text + style={ Array [ - Object {}, - undefined, - undefined, + null, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "color": "#2f343d", }, - ], + ] + } + > + <Text + accessibilityLabel="First Header" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "borderLeftWidth": 1, + "borderTopWidth": 1, + }, + undefined, + undefined, + ], + ] + } + > + First Header + </Text> + </Text> + </View> + <View + style={ + Array [ + Object { + "justifyContent": "flex-start", + "paddingHorizontal": 13, + "paddingVertical": 6, + }, + Object { + "borderColor": "#e1e5e8", + }, + Object { + "width": 100, + }, ] } > - Open Source - </Text> - </Text> - </View> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "width": 15, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, - }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - • - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text + <Text + style={ + Array [ + null, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Second Header" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "borderLeftWidth": 1, + "borderTopWidth": 1, + }, + undefined, + undefined, + ], + ] + } + > + Second Header + </Text> + </Text> + </View> + </View> + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "flexDirection": "row", }, - undefined, Object { - "color": "#2f343d", + "borderColor": "#e1e5e8", + }, + Object { + "borderBottomWidth": 1, }, ] } > - <Text - accessibilityLabel="Rocket.Chat" + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "justifyContent": "flex-start", + "paddingHorizontal": 13, + "paddingVertical": 6, + }, + Object { + "borderColor": "#e1e5e8", }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Rocket.Chat - </Text> - </Text> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ Object { - "width": 15, + "borderRightWidth": 1, }, Object { - "alignItems": "flex-end", - "marginRight": 5, + "width": 100, }, ] } > <Text style={ - Object { - "color": "#2f343d", - } + Array [ + null, + Object { + "color": "#2f343d", + }, + ] } > - ◦ + <Text + accessibilityLabel="Content from cell 1" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "borderLeftWidth": 1, + "borderTopWidth": 1, + }, + undefined, + undefined, + ], + ] + } + > + Content from cell 1 + </Text> </Text> </View> <View style={ - Object { - "flex": 1, - } + Array [ + Object { + "justifyContent": "flex-start", + "paddingHorizontal": 13, + "paddingVertical": 6, + }, + Object { + "borderColor": "#e1e5e8", + }, + Object { + "width": 100, + }, + ] } > <Text style={ Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, + null, Object { "color": "#2f343d", }, @@ -13472,7 +13136,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="nodejs" + accessibilityLabel="Content from cell 2" style={ Array [ Object { @@ -13484,76 +13148,111 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, - undefined, - undefined, - undefined, - undefined, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "borderLeftWidth": 1, + "borderTopWidth": 1, }, + undefined, + undefined, ], ] } > - nodejs + Content from cell 2 </Text> </Text> </View> </View> <View style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } + Array [ + Object { + "flexDirection": "row", + }, + Object { + "borderColor": "#e1e5e8", + }, + ] } > <View style={ Array [ Object { - "width": 15, + "justifyContent": "flex-start", + "paddingHorizontal": 13, + "paddingVertical": 6, + }, + Object { + "borderColor": "#e1e5e8", + }, + Object { + "borderRightWidth": 1, }, Object { - "alignItems": "flex-end", - "marginRight": 5, + "width": 100, }, ] } > <Text style={ - Object { - "color": "#2f343d", - } + Array [ + null, + Object { + "color": "#2f343d", + }, + ] } > - ◦ + <Text + accessibilityLabel="Content in the first column" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "borderLeftWidth": 1, + "borderTopWidth": 1, + }, + undefined, + undefined, + ], + ] + } + > + Content in the first column + </Text> </Text> </View> <View style={ - Object { - "flex": 1, - } + Array [ + Object { + "justifyContent": "flex-start", + "paddingHorizontal": 13, + "paddingVertical": 6, + }, + Object { + "borderColor": "#e1e5e8", + }, + Object { + "width": 100, + }, + ] } > <Text style={ Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, + null, Object { "color": "#2f343d", }, @@ -13561,7 +13260,7 @@ exports[`Storyshots Markdown list Markdown 1`] = ` } > <Text - accessibilityLabel="ReactNative" + accessibilityLabel="Content in the second column" style={ Array [ Object { @@ -13573,910 +13272,517 @@ exports[`Storyshots Markdown list Markdown 1`] = ` }, Array [ Object {}, - undefined, - undefined, - undefined, - undefined, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "borderLeftWidth": 1, + "borderTopWidth": 1, }, + undefined, + undefined, ], ] } > - ReactNative + Content in the second column </Text> </Text> </View> </View> </View> </View> - </View> + </RCTScrollView> <Text style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", }, Object { - "marginHorizontal": 10, - "marginVertical": 10, + "color": "#9ca2a8", }, ] } > - Numbered Lists + Click to see full table </Text> - <View - style={ + </View> +</View> +`; + +exports[`Storyshots Markdown Text 1`] = ` +<View + style={ + Object { + "backgroundColor": "#ffffff", + "marginHorizontal": 15, + "marginVertical": 50, + } + } +> + <Text + style={ + Array [ Object { - "marginHorizontal": 15, - } - } - > - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "width": 16, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, - }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - 1. - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Open Source" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Open Source - </Text> - </Text> - </View> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "width": 16, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, - }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - 2. - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Rocket.Chat" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Rocket.Chat - </Text> - </Text> - </View> - </View> - </View> + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text + accessibilityLabel="This is Rocket.Chat" style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > - Emphasis + This is Rocket.Chat </Text> - <View - style={ + </Text> + <Text + style={ + Array [ Object { - "marginHorizontal": 15, - } - } - > - <Text - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - undefined, + ], + ] + } + > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="a" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Strong emphasis, aka bold, with " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Strong emphasis, aka bold, with - </Text> - <Text - accessibilityLabel="asterisks" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontWeight": "bold", - }, - ], - ] - } - > - asterisks - </Text> - <Text - accessibilityLabel=" or " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - or - </Text> - <Text - accessibilityLabel="underscores" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontStyle": "italic", - }, - ], - ] - } - > - underscores - </Text> - </Text> - </View> + ], + ] + } + > + a + </Text> + <Text> + + + </Text> <Text + accessibilityLabel="b" style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + b + </Text> + <Text> + + + </Text> + <Text + accessibilityLabel="c" + style={ + Array [ Object { - "color": "#0d0e12", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + c + </Text> + <Text> + + + </Text> + <Text> + + + </Text> + <Text + accessibilityLabel="d" + style={ + Array [ Object { - "marginHorizontal": 10, - "marginVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > - Table + d </Text> - <View + <Text> + + + </Text> + <Text> + + + </Text> + <Text> + + + </Text> + <Text + accessibilityLabel="e" style={ - Object { - "marginHorizontal": 15, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + e + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="a b c" + style={ + Array [ Object { - "opacity": 1, - } - } - > - <RCTScrollView - contentContainerStyle={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "width": 200, - } - } - scrollEnabled={false} - showsVerticalScrollIndicator={false} - style={ - Array [ - Object { - "borderBottomWidth": 1, - "borderRightWidth": 1, - }, - Object { - "borderColor": "#e1e5e8", - "maxHeight": 300, - "maxWidth": 200, - }, - ] - } - > - <View> - <View - style={ - Array [ - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "flexDirection": "row", - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderBottomWidth": 1, - }, - ] - } - > - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderRightWidth": 1, - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="First Header" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - First Header - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Second Header" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Second Header - </Text> - </Text> - </View> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "row", - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderBottomWidth": 1, - }, - ] - } - > - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderRightWidth": 1, - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content from cell 1" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content from cell 1 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content from cell 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content from cell 2 - </Text> - </Text> - </View> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "row", - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderRightWidth": 1, - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content in the first column" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content in the first column - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content in the second column" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content in the second column - </Text> - </Text> - </View> - </View> - </View> - </View> - </RCTScrollView> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Click to see full table - </Text> - </View> - </View> - </View> -</RCTScrollView> -`; - -exports[`Storyshots Message list message 1`] = ` -<RCTScrollView - style={ - Object { - "backgroundColor": "#ffffff", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + a b c + </Text> + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - } -> - <View> + > <Text + accessibilityLabel="Strong emphasis, aka bold, with " style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Strong emphasis, aka bold, with + </Text> + <Text + accessibilityLabel="asterisks" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + Object { + "fontWeight": "bold", + }, + ], + ] + } + > + asterisks + </Text> + <Text + accessibilityLabel=" or " + style={ + Array [ Object { - "color": "#0d0e12", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + or + </Text> + <Text + accessibilityLabel="underscores" + style={ + Array [ Object { - "marginBottom": 0, - "marginTop": 30, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + Object { + "fontStyle": "italic", + }, + ], ] } > - Simple + underscores </Text> + </Text> +</View> +`; + +exports[`Storyshots Message Archived 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -14683,7 +13989,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Message" + accessibilityLabel="This message is inside an archived room" numberOfLines={0} style={ Array [ @@ -14708,7 +14014,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Message + This message is inside an archived room </Text> </Text> </View> @@ -14717,27 +14023,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Long message - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Basic 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -14944,7 +14242,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + accessibilityLabel="Message" numberOfLines={0} style={ Array [ @@ -14969,7 +14267,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Message </Text> </Text> </View> @@ -14978,27 +14276,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Grouped messages - </Text> <View accessible={true} focusable={true} @@ -15205,7 +14482,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="..." + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." numberOfLines={0} style={ Array [ @@ -15230,7 +14507,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - ... + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </Text> </Text> </View> @@ -15239,16 +14516,29 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Block Quote 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { "opacity": 1, @@ -15326,7 +14616,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -15402,7 +14692,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + diego.mello </Text> </View> <Text @@ -15426,53 +14716,85 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } } > - <Text - accessibilityLabel="Different user" - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "height": "100%", + "marginRight": 5, + "width": 2, + }, + Object { + "backgroundColor": "#e1e5e8", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], ] } + /> + <View + style={ + Object { + "flex": 1, + } + } > - Different user - </Text> - </Text> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Testing block quote" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Testing block quote + </Text> + </Text> + </View> + </View> </View> </View> </View> @@ -15520,116 +14842,231 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, }, - false, ] } > - <View> - <Text - numberOfLines={0} + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "overflow": "hidden", }, - undefined, Object { - "color": "#2f343d", + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } > <Text - accessibilityLabel="This is the third message" - numberOfLines={0} + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "500", + "lineHeight": 22, "textAlign": "left", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], + Object { + "color": "#0d0e12", + }, ] } > - This is the third message + diego.mello </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM </Text> </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > <View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "height": "100%", + "marginRight": 5, + "width": 2, + }, + Object { + "backgroundColor": "#e1e5e8", + }, + ] + } + /> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Testing block quote" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Testing block quote + </Text> + </Text> + </View> + </View> <Text numberOfLines={0} style={ @@ -15649,7 +15086,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="This is the second message" + accessibilityLabel="Testing block quote" numberOfLines={0} style={ Array [ @@ -15674,7 +15111,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - This is the second message + Testing block quote </Text> </Text> </View> @@ -15683,6 +15120,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Broadcast 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -15889,7 +15339,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="This is the first message" + accessibilityLabel="Broadcasted message" numberOfLines={0} style={ Array [ @@ -15914,159 +15364,111 @@ exports[`Storyshots Message list message 1`] = ` ] } > - This is the first message + Broadcasted message </Text> </Text> </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } + } + > + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "backgroundColor": "#1d74f5", + "borderRadius": 2, + "flexDirection": "row", + "justifyContent": "center", + "opacity": 1, + "paddingHorizontal": 12, + "paddingVertical": 8, + } + } + testID="message-broadcast-reply" + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + Object { + "marginRight": 8, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Reply + </Text> + </View> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Without header - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - With alias - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Colored attachments 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -16230,26 +15632,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Diego Mello - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - @ - diego.mello - </Text> + diego.mello </Text> </View> <Text @@ -16272,111 +15655,7 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > + <View /> <View accessible={true} focusable={true} @@ -16387,225 +15666,617 @@ exports[`Storyshots Message list message 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View style={ Object { "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "rgba(255, 0, 0, 0.2)", + "borderColor": "red", + "borderRadius": 4, + "borderWidth": 1, "flex": 1, "flexDirection": "row", - "justifyContent": "space-between", + "marginTop": 6, + "opacity": 1, } } > <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "flex": 1, + "flexDirection": "row", + "flexWrap": "wrap", + } } > - Diego Mello - <Text + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "textAlign": "left", + "flexDirection": "column", + "padding": 10, }, Object { - "color": "#9ca2a8", + "width": "50%", }, ] } > - @ - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Text> - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 1 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 1" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 1 + </Text> + </Text> + </View> + <View + style={ Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "flexDirection": "column", + "padding": 10, }, - ], - ] + Object { + "width": "50%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 2 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 2" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 2 + </Text> + </Text> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "rgba(0, 128, 0, 0.2)", + "borderColor": "green", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 4, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <View + style={ + Object { + "flex": 1, + "flexDirection": "row", + "flexWrap": "wrap", + } } > - Message - </Text> - </Text> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "50%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 1 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 1" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 1 + </Text> + </Text> + </View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "50%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 2 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 2" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 2 + </Text> + </Text> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "rgba(0, 0, 255, 0.2)", + "borderColor": "blue", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 4, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <View + style={ + Object { + "flex": 1, + "flexDirection": "row", + "flexWrap": "wrap", + } + } + > + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "50%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 1 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 1" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 1 + </Text> + </Text> + </View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "50%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 2 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 2" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 2 + </Text> + </Text> + </View> + </View> + </View> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Edited - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Custom fields 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -16841,83 +16512,6 @@ exports[`Storyshots Message list message 1`] = ` </Text> </Text> </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Encrypted - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > <View accessible={true} focusable={true} @@ -16928,331 +16522,146 @@ exports[`Storyshots Message list message 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View style={ Object { "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, "flex": 1, "flexDirection": "row", - "justifyContent": "space-between", + "marginTop": 6, + "opacity": 1, } } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> <View style={ Object { - "flexDirection": "row", + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, } } > <View style={ Object { + "alignItems": "center", "flex": 1, + "flexDirection": "row", } } > <Text - numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", + "flex": 1, "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "500", "textAlign": "left", }, - undefined, Object { "color": "#2f343d", }, ] } > - <Text - accessibilityLabel="Message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message - </Text> + rocket.cat </Text> </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + <Text style={ - Object { - "justifyContent": "center", - "opacity": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > <Text - allowFontScaling={false} + accessibilityLabel="Custom fields" style={ Array [ Object { - "color": "#9ca2a8", + "backgroundColor": "transparent", + "fontFamily": "System", "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > -  + Custom fields </Text> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View> - <View - style={ - Object { - "flexDirection": "row", - } - } - > + </Text> <View style={ Object { "flex": 1, + "flexDirection": "row", + "flexWrap": "wrap", } } > - <Text - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "flexDirection": "column", + "padding": 10, }, - undefined, Object { - "color": "#2f343d", + "width": "100%", }, ] } > <Text - accessibilityLabel="Message Encrypted without Header" - numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 1 + </Text> + <Text style={ Array [ Object { @@ -17262,104 +16671,403 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], + undefined, + Object { + "color": "#2f343d", + }, ] } > - Message Encrypted without Header + <Text + accessibilityLabel="Value 1" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 1 + </Text> </Text> - </Text> - </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "justifyContent": "center", - "opacity": 1, - } - } - > - <Text - allowFontScaling={false} + </View> + <View style={ Array [ Object { - "color": "#9ca2a8", - "fontSize": 16, + "flexDirection": "column", + "padding": 10, }, - undefined, Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "width": "100%", }, - Object {}, ] } > -  - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 2 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 2" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 2 + </Text> + </Text> + </View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "100%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 3 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 3" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 3 + </Text> + </Text> + </View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "100%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 4 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 4" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 4 + </Text> + </Text> + </View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "padding": 10, + }, + Object { + "width": "100%", + }, + ] + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Field 5 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Value 5" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Value 5 + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Custom style 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + Array [ + undefined, + Object { + "backgroundColor": "#ddd", + }, + ], ] } > @@ -17520,462 +17228,72 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <View + <Text + numberOfLines={0} style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > - <View + <Text + accessibilityLabel="Message" + numberOfLines={0} style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Message Encrypted with Reactions" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message Encrypted with Reactions - </Text> - </Text> - </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "justifyContent": "center", - "opacity": 1, - } + ], + ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 16, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - </View> - <View - style={ - Object { - "flexDirection": "row", - "flexWrap": "wrap", - "marginTop": 8, - } - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-reaction-:joy:" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 😂 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-reaction-:marioparty:" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "height": 19, - "marginLeft": 7, - "width": 19, - }, - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-reaction-:thinking:" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 🤔 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-add-reaction" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 21, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> + Message + </Text> + </Text> </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Date and Unread separators 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -18006,103 +17324,6 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, - } - } - testID="message-thread-replied-on-Thread with emoji :) :joy:" - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="Thread with emoji🙂 😂" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - Thread with emoji🙂 😂 - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> <View style={ Object { @@ -18114,12 +17335,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "marginLeft": 16, + "marginTop": 4, }, ] } @@ -18147,9 +17368,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } @@ -18160,7 +17381,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=36", } } style={ @@ -18189,40 +17410,201 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> <Text - accessibilityLabel="Thread reply encrypted" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, + "fontSize": 12, "fontWeight": "400", + "marginLeft": 8, "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - Thread reply encrypted + 10:00 AM </Text> </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Fourth message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Fourth message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginBottom": 4, + "marginHorizontal": 14, + "marginTop": 16, + } + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f5455c", + }, + ] + } + > + unread + </Text> + <View + style={ + Array [ + Object { + "flex": 1, + "height": 1, + }, + Object { + "backgroundColor": "#f5455c", + }, + Object { + "marginHorizontal": 14, + }, + ] + } + /> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f5455c", + }, + ] + } + > + November 10, 2017 + </Text> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} @@ -18402,122 +17784,202 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View - style={ - Object { - "opacity": 0.3, - } - } - > - <View + <View> + <Text + numberOfLines={0} style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > - <View + <Text + accessibilityLabel="Third message" + numberOfLines={0} style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Temp message encrypted" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Temp message encrypted - </Text> - </Text> - </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "justifyContent": "center", - "opacity": 1, - } + ], + ] } > - <Text - allowFontScaling={false} - style={ + Third message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginBottom": 4, + "marginHorizontal": 14, + "marginTop": 16, + } + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f5455c", + }, + Object { + "marginRight": 14, + }, + ] + } + > + unread + </Text> + <View + style={ + Array [ + Object { + "flex": 1, + "height": 1, + }, + Object { + "backgroundColor": "#f5455c", + }, + ] + } + /> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Second message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "color": "#9ca2a8", - "fontSize": 16, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> + ], + ] + } + > + Second message + </Text> + </Text> </View> </View> </View> @@ -18611,7 +18073,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=36", } } style={ @@ -18687,7 +18149,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - diego.mello + rocket.cat </Text> </View> <Text @@ -18711,229 +18173,154 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <View + <Text + numberOfLines={0} style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > - <View + <Text + accessibilityLabel="Second message" + numberOfLines={0} style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Message Edited encrypted" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message Edited encrypted - </Text> - </Text> - </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "justifyContent": "center", - "opacity": 1, - } + ], + ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 16, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> + Second message + </Text> + </Text> </View> </View> </View> </View> </View> </View> - <View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginBottom": 4, + "marginHorizontal": 14, + "marginTop": 16, + } + } + > <View style={ Array [ Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", + "flex": 1, + "height": 1, + }, + Object { + "backgroundColor": "#e1e5e8", + }, + ] + } + /> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Object { + "marginLeft": 14, }, - undefined, ] } > + November 10, 2017 + </Text> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> <View style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } + Object { + "flexDirection": "row", } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] } > <View style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] } > <View @@ -18948,216 +18335,196 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, "opacity": 1, } } > - <Text - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", + "overflow": "hidden", }, Object { - "color": "#0d0e12", + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - "paddingLeft": 10, - "paddingVertical": 5, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ + <FastImageView + resizeMode="cover" + source={ Object { - "color": "#f5455c", - "fontSize": 18, - }, - undefined, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> </View> - <View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > <View style={ Object { + "alignItems": "center", + "flex": 1, "flexDirection": "row", + "justifyContent": "space-between", } } > <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, } } > <Text - numberOfLines={0} + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "400", + "fontWeight": "500", + "lineHeight": 22, "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#0d0e12", }, ] } > - <Text - accessibilityLabel="This message has error and is encrypted" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This message has error and is encrypted - </Text> + diego.mello </Text> </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} style={ - Object { - "justifyContent": "center", - "opacity": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > <Text - allowFontScaling={false} + accessibilityLabel="First message" + numberOfLines={0} style={ Array [ Object { - "color": "#9ca2a8", + "backgroundColor": "transparent", + "fontFamily": "System", "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > -  + First message </Text> - </View> + </Text> </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Discussion 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -19344,351 +18711,148 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> - <View - style={ + <Text + style={ + Array [ Object { - "flexDirection": "row", - } - } - > - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Read Receipt encrypted with Header" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Read Receipt encrypted with Header - </Text> - </Text> - </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "justifyContent": "center", - "opacity": 1, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 16, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - </View> - </View> - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 15, - }, - Object { - "lineHeight": 20, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "marginBottom": 6, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Started a discussion: + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + This is a discussion + </Text> + <View + style={ Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View> + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } + } + > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { + "alignItems": "center", + "backgroundColor": "#1d74f5", + "borderRadius": 2, "flexDirection": "row", + "justifyContent": "center", + "opacity": 1, + "paddingHorizontal": 12, + "paddingVertical": 8, } } > - <View + <Text + allowFontScaling={false} style={ - Object { - "flex": 1, - } + Array [ + Object { + "color": "#ffffff", + "fontSize": 16, + }, + Object { + "marginRight": 8, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] } > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Read Receipt encrypted without Header" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Read Receipt encrypted without Header - </Text> - </Text> - </View> - <View - accessible={true} - focusable={false} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} +  + </Text> + <Text style={ - Object { - "justifyContent": "center", - "opacity": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 16, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> + No messages yet + </Text> </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + /> </View> </View> - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 15, - }, - Object { - "lineHeight": 20, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Block Quote - </Text> <View accessible={true} focusable={true} @@ -19875,86 +19039,144 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "marginBottom": 6, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Started a discussion: + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + This is a discussion + </Text> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } + } + > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "flex-start", + "alignItems": "center", + "backgroundColor": "#1d74f5", + "borderRadius": 2, "flexDirection": "row", + "justifyContent": "center", + "opacity": 1, + "paddingHorizontal": 12, + "paddingVertical": 8, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "height": "100%", - "marginRight": 5, - "width": 2, + "color": "#ffffff", + "fontSize": 16, }, Object { - "backgroundColor": "#e1e5e8", + "marginRight": 8, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } - /> - <View + > +  + </Text> + <Text style={ - Object { - "flex": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] } > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Testing block quote" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Testing block quote - </Text> - </Text> - </View> + 1 message + </Text> </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + November 10, 2017 + </Text> </View> </View> </View> @@ -20147,132 +19369,143 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "marginBottom": 6, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Started a discussion: + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } + } + > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "flex-start", + "alignItems": "center", + "backgroundColor": "#1d74f5", + "borderRadius": 2, "flexDirection": "row", + "justifyContent": "center", + "opacity": 1, + "paddingHorizontal": 12, + "paddingVertical": 8, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "height": "100%", - "marginRight": 5, - "width": 2, + "color": "#ffffff", + "fontSize": 16, }, Object { - "backgroundColor": "#e1e5e8", + "marginRight": 8, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } - /> - <View + > +  + </Text> + <Text style={ - Object { - "flex": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] } > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Testing block quote" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Testing block quote - </Text> - </Text> - </View> + 10 messages + </Text> </View> <Text - numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, + "fontSize": 12, "fontWeight": "400", + "marginLeft": 8, "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - <Text - accessibilityLabel="Testing block quote" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Testing block quote - </Text> + November 10, 2017 </Text> </View> </View> @@ -20280,27 +19513,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Lists - </Text> <View accessible={true} focusable={true} @@ -20487,305 +19699,163 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "marginBottom": 6, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Started a discussion: + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + This is a discussion + </Text> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } + } + > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "flex-start", + "alignItems": "center", + "backgroundColor": "#1d74f5", + "borderRadius": 2, "flexDirection": "row", + "justifyContent": "center", + "opacity": 1, + "paddingHorizontal": 12, + "paddingVertical": 8, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "width": 15, + "color": "#ffffff", + "fontSize": 16, }, Object { - "alignItems": "flex-end", - "marginRight": 5, + "marginRight": 8, }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, ] } > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - • - </Text> - </View> - <View +  + </Text> + <Text style={ - Object { - "flex": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] } > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Dogs" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Dogs - </Text> - </Text> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "width": 15, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, - }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - ◦ - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="cats" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - cats - </Text> - </Text> - </View> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "width": 15, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, - }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - ◦ - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="cats" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - cats - </Text> - </Text> - </View> - </View> - </View> + +999 messages + </Text> </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + November 10, 2017 + </Text> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Numerated lists - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Edited 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -20973,211 +20043,72 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <View + <Text + numberOfLines={0} style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > - <View + <Text + accessibilityLabel="Message" + numberOfLines={0} style={ Array [ Object { - "width": 16, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - 1. - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Dogs" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Dogs - </Text> - </Text> - </View> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "width": 16, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, - }, + ], ] } > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - 2. - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Cats" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Cats - </Text> - </Text> - </View> - </View> + Message + </Text> + </Text> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Numerated lists in separated messages - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Editing 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -21365,110 +20296,81 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <View + <Text + numberOfLines={0} style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > - <View + <Text + accessibilityLabel="Message being edited" + numberOfLines={0} style={ Array [ Object { - "width": 16, - }, - Object { - "alignItems": "flex-end", - "marginRight": 5, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ] - } - > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - 1. - </Text> - </View> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Dogs" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Dogs - </Text> - </Text> - </View> - </View> + ], + ] + } + > + Message being edited + </Text> + </Text> </View> </View> </View> </View> </View> </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Emojis 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} style={ Object { @@ -21497,6 +20399,72 @@ exports[`Storyshots Message list message 1`] = ` } } > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> <View style={ Array [ @@ -21504,127 +20472,142 @@ exports[`Storyshots Message list message 1`] = ` "flex": 1, "marginLeft": 46, }, - false, + Object { + "marginLeft": 10, + }, ] } > - <View> + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "flex-start", + "alignItems": "center", "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, } } > - <View + <Text + numberOfLines={1} style={ Array [ Object { - "width": 16, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", }, Object { - "alignItems": "flex-end", - "marginRight": 5, + "color": "#0d0e12", }, ] } > - <Text - style={ - Object { - "color": "#2f343d", - } - } - > - 2. - </Text> - </View> - <View - style={ + diego.mello + </Text> + </View> + <Text + style={ + Array [ Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="👊🤙👏" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, + "fontSize": 30, "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <Text - accessibilityLabel="Cats" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Cats - </Text> - </Text> - </View> - </View> + ], + ] + } + > + 👊🤙👏 + </Text> + </Text> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Static avatar - </Text> <View accessible={true} focusable={true} @@ -21712,7 +20695,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://pbs.twimg.com/profile_images/1016397063649660929/14EIApTi_400x400.jpg", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -21831,7 +20814,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Message" + accessibilityLabel="👏" numberOfLines={0} style={ Array [ @@ -21843,7 +20826,13 @@ exports[`Storyshots Message list message 1`] = ` "textAlign": "left", }, Array [ - Object {}, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 30, + "fontWeight": "400", + "textAlign": "left", + }, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -21856,7 +20845,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Message + 👏 </Text> </Text> </View> @@ -21865,27 +20854,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Full name - </Text> <View accessible={true} focusable={true} @@ -22049,7 +21017,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Diego Mello + diego.mello </Text> </View> <Text @@ -22091,8 +21059,43 @@ exports[`Storyshots Message list message 1`] = ` ] } > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 30, + "width": 30, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> <Text - accessibilityLabel="Message" + accessibilityLabel=" " numberOfLines={0} style={ Array [ @@ -22104,7 +21107,82 @@ exports[`Storyshots Message list message 1`] = ` "textAlign": "left", }, Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 30, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 30, + "width": 30, + }, Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + accessibilityLabel=" " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 30, + "fontWeight": "400", + "textAlign": "left", + }, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -22117,8 +21195,43 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Message + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 30, + "width": 30, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </Text> </View> </View> @@ -22126,27 +21239,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Mentions - </Text> <View accessible={true} focusable={true} @@ -22352,211 +21444,41 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F3BE08", - }, - ] - } - > - rocket.cat - </Text> - <Text - accessibilityLabel=" " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F5455C", - }, - ] - } - > - diego.mello - </Text> - <Text - accessibilityLabel=" " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - all - </Text> - <Text - accessibilityLabel=" " - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "overflow": "hidden", }, Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "height": 30, + "width": 30, }, - ], - ] - } - > - - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - here - </Text> - <Text - accessibilityLabel=" " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, ], ] } > - - </Text> - <Text - onPress={[Function]} - style={ - Array [ + <FastImageView + resizeMode="contain" + source={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + } + } + style={ Object { - "color": "#F3BE08", - }, - ] - } - > - #general - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </Text> </View> </View> @@ -22770,26 +21692,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F3BE08", - }, - ] - } - > - rocket.cat - </Text> - <Text - accessibilityLabel=" Lorem ipsum dolor " + accessibilityLabel="🤙" numberOfLines={0} style={ Array [ @@ -22801,54 +21704,13 @@ exports[`Storyshots Message list message 1`] = ` "textAlign": "left", }, Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 30, + "fontWeight": "400", + "textAlign": "left", }, - ], - ] - } - > - Lorem ipsum dolor - </Text> - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F5455C", - }, - ] - } - > - diego.mello - </Text> - <Text - accessibilityLabel=" sit amet, " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -22861,147 +21723,43 @@ exports[`Storyshots Message list message 1`] = ` ] } > - sit amet, - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F38C39", - }, - ] - } - > - all + 🤙 </Text> - <Text - accessibilityLabel=" consectetur adipiscing " - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "overflow": "hidden", }, Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "height": 30, + "width": 30, }, + Object {}, ], ] } > - consectetur adipiscing - </Text> - <Text - style={ - Array [ + <FastImageView + resizeMode="contain" + source={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + } + } + style={ Object { - "color": "#F38C39", - }, - ] - } - > - here - </Text> - <Text - accessibilityLabel=" elit, sed do eiusmod tempor " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - elit, sed do eiusmod tempor - </Text> - <Text - onPress={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#F3BE08", - }, - ] - } - > - #general - </Text> - <Text - accessibilityLabel=" incididunt ut labore et dolore magna aliqua." - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - incididunt ut labore et dolore magna aliqua. - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </Text> </View> </View> @@ -23009,27 +21767,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Emojis - </Text> <View accessible={true} focusable={true} @@ -23236,7 +21973,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="👊🤙👏" + accessibilityLabel="🤙" numberOfLines={0} style={ Array [ @@ -23248,13 +21985,70 @@ exports[`Storyshots Message list message 1`] = ` "textAlign": "left", }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 30, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + 🤙 + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 20, + "width": 20, }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + accessibilityLabel="🤙🤙" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { "alignItems": "flex-start", "flexDirection": "row", @@ -23267,7 +22061,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - 👊🤙👏 + 🤙🤙 </Text> </Text> </View> @@ -23276,27 +22070,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Single Emoji - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Encrypted 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -23484,86 +22270,285 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "flexDirection": "row", + } } > - <Text - accessibilityLabel="👏" - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 30, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "color": "#2f343d", }, - ], - ] + ] + } + > + <Text + accessibilityLabel="Message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Message + </Text> + </Text> + </View> + <View + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "justifyContent": "center", + "opacity": 1, + } } > - 👏 - </Text> - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 16, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> </View> </View> </View> </View> </View> </View> - <Text + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] + Object { + "opacity": 1, + } } > - Custom Emojis - </Text> + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Message Encrypted without Header" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Message Encrypted without Header + </Text> + </Text> + </View> + <View + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "justifyContent": "center", + "opacity": 1, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 16, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> <View accessible={true} focusable={true} @@ -23751,225 +22736,462 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} + <View style={ - Array [ + Object { + "flexDirection": "row", + } + } + > + <View + style={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Message Encrypted with Reactions" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Message Encrypted with Reactions + </Text> + </Text> + </View> + <View + accessible={true} + focusable={false} + hitSlop={ Object { - "color": "#2f343d", - }, - ] + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "justifyContent": "center", + "opacity": 1, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 16, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + <View + style={ + Object { + "flexDirection": "row", + "flexWrap": "wrap", + "marginTop": 8, + } + } + > + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } } + testID="message-reaction-:joy:" > <View style={ Array [ Object { - "overflow": "hidden", + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", }, - Array [ - Object { - "height": 30, - "width": 30, - }, - Object {}, - ], ] } > - <FastImageView - resizeMode="contain" - source={ + <Text + style={ Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, } } + > + 😂 + </Text> + <Text style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] } - /> + > + 1 + </Text> </View> - <Text - accessibilityLabel=" " - numberOfLines={0} + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:marioparty:" + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "height": 19, + "marginLeft": 7, + "width": 19, + }, + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 30, - "fontWeight": "400", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, "textAlign": "left", }, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "color": "#1d74f5", }, - ], - ] + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, } - > - - </Text> + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:thinking:" + > <View style={ Array [ Object { - "overflow": "hidden", + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", }, - Array [ - Object { - "height": 30, - "width": 30, - }, - Object {}, - ], ] } > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } + <Text style={ Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, } } - /> - </View> - <Text - accessibilityLabel=" " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + > + 🤔 + </Text> + <Text + style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 30, - "fontWeight": "400", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, "textAlign": "left", }, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "color": "#1d74f5", }, - ], - ] + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, } - > - - </Text> + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-add-reaction" + > <View style={ Array [ Object { - "overflow": "hidden", + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#e1e5e8", }, - Array [ - Object { - "height": 30, - "width": 30, - }, - Object {}, - ], ] } > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", - } - } + <Text + allowFontScaling={false} style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "color": "#1d74f5", + "fontSize": 21, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] } - /> + > +  + </Text> </View> - </Text> + </View> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Single Custom Emojis - </Text> <View accessible={true} focusable={true} @@ -24003,20 +23225,117 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { + "alignItems": "center", "flexDirection": "row", - } + "marginBottom": 12, + "marginTop": 6, + } + } + testID="message-thread-replied-on-Thread with emoji :) :joy:" + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 20, + }, + Object { + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="Thread with emoji🙂 😂" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + Thread with emoji🙂 😂 + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + <View + style={ + Object { + "flexDirection": "row", + } } > <View style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -24044,9 +23363,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -24057,7 +23376,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -24086,79 +23405,10 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <View> <Text - numberOfLines={0} + accessibilityLabel="Thread reply encrypted" + numberOfLines={1} style={ Array [ Object { @@ -24168,48 +23418,13 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, Object { "color": "#2f343d", }, ] } > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 30, - "width": 30, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + Thread reply encrypted </Text> </View> </View> @@ -24217,27 +23432,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Normal Emoji + Custom Emojis - </Text> <View accessible={true} focusable={true} @@ -24424,122 +23618,128 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> - <Text - numberOfLines={0} + <View + style={ + Object { + "opacity": 0.3, + } + } + > + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "flexDirection": "row", + } } > - <Text - accessibilityLabel="🤙" - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 30, + "fontSize": 16, "fontWeight": "400", "textAlign": "left", }, + undefined, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "color": "#2f343d", }, - ], - ] - } - > - 🤙 - </Text> + ] + } + > + <Text + accessibilityLabel="Temp message encrypted" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Temp message encrypted + </Text> + </Text> + </View> <View + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "overflow": "hidden", - }, + Object { + "justifyContent": "center", + "opacity": 1, + } + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 30, - "width": 30, + "color": "#9ca2a8", + "fontSize": 16, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + ] } - /> + > +  + </Text> </View> - </Text> + </View> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Four emoji - </Text> <View accessible={true} focusable={true} @@ -24727,192 +23927,229 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "flexDirection": "row", + } } > - <Text - accessibilityLabel="🤙" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - 🤙 - </Text> <View style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] + Object { + "flex": 1, + } } > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", - } - } + <Text + numberOfLines={0} style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <Text - accessibilityLabel="🤙🤙" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ], - ] + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Message Edited encrypted" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Message Edited encrypted + </Text> + </Text> + </View> + <View + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "justifyContent": "center", + "opacity": 1, + } } > - 🤙🤙 - </Text> - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 16, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Time format - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] } - } - > - <View> + > <View style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] + Object { + "flexDirection": "row", + } } > <View style={ - Object { - "flexDirection": "row", + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } } > <View @@ -24927,204 +24164,216 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } > - <View + <Text + numberOfLines={1} style={ Array [ Object { - "overflow": "hidden", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "color": "#0d0e12", }, ] } > - <FastImageView - resizeMode="cover" - source={ + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + "paddingLeft": 10, + "paddingVertical": 5, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ + "color": "#f5455c", + "fontSize": 18, + }, + undefined, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> </View> </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > + <View> <View style={ Object { - "alignItems": "center", - "flex": 1, "flexDirection": "row", - "justifyContent": "space-between", } } > <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, + "flex": 1, } } > <Text - numberOfLines={1} + numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, + "fontWeight": "400", "textAlign": "left", }, + undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } > - diego.mello + <Text + accessibilityLabel="This message has error and is encrypted" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This message has error and is encrypted + </Text> </Text> </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] + <View + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } } - > - 10 November 2017 - </Text> - </View> - <View> - <Text - numberOfLines={0} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "justifyContent": "center", + "opacity": 1, + } } > <Text - accessibilityLabel="Testing" - numberOfLines={0} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", + "color": "#9ca2a8", "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, ] } > - Testing +  </Text> - </Text> + </View> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Reactions - </Text> <View accessible={true} focusable={true} @@ -25312,370 +24561,91 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Reactions" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Reactions - </Text> - </Text> - </View> - <View - style={ - Object { - "flexDirection": "row", - "flexWrap": "wrap", - "marginTop": 8, - } - } - > <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, + "flexDirection": "row", } } - testID="message-reaction-:joy:" > <View style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] + Object { + "flex": 1, + } } > <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 😂 - </Text> - <Text + numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, + undefined, Object { - "color": "#1d74f5", - }, - ] - } - > - 3 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-reaction-:marioparty:" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "height": 19, - "marginLeft": 7, - "width": 19, + "color": "#2f343d", }, ] } > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", - } - } + <Text + accessibilityLabel="Read Receipt encrypted with Header" + numberOfLines={0} style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] } - /> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 13 + > + Read Receipt encrypted with Header + </Text> </Text> </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-reaction-:thinking:" - > <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 🤔 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, } - } - testID="message-add-reaction" - > - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] + Object { + "justifyContent": "center", + "opacity": 1, + } } > <Text @@ -25683,8 +24653,8 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "color": "#1d74f5", - "fontSize": 21, + "color": "#9ca2a8", + "fontSize": 16, }, undefined, Object { @@ -25696,37 +24666,38 @@ exports[`Storyshots Message list message 1`] = ` ] } > -  +  </Text> </View> </View> </View> </View> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 15, + }, + Object { + "lineHeight": 20, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Multiple reactions - </Text> <View accessible={true} focusable={true} @@ -25768,322 +24739,778 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, + "flex": 1, + "marginLeft": 46, }, + false, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > + <View> <View style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] + Object { + "flexDirection": "row", + } } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } + <View style={ Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + "flex": 1, } } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Read Receipt encrypted without Header" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Read Receipt encrypted without Header + </Text> + </Text> + </View> + <View + accessible={true} + focusable={false} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } } - } - > - <Text - numberOfLines={1} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "justifyContent": "center", + "opacity": 1, + } } > - diego.mello - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 16, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> </View> + </View> + </View> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 15, + }, + Object { + "lineHeight": 20, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Error 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#0d0e12", }, ] } > - 10:00 AM + diego.mello </Text> </View> - <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + "paddingLeft": 10, + "paddingVertical": 5, + } + } + > <Text - numberOfLines={0} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "color": "#f5455c", + "fontSize": 18, }, undefined, Object { - "color": "#2f343d", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <Text - accessibilityLabel="Multiple Reactions" - numberOfLines={0} - style={ +  + </Text> + </View> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This message has error" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Multiple Reactions - </Text> + ], + ] + } + > + This message has error </Text> - </View> + </Text> + </View> + </View> + </View> + </View> + </View> + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { + "alignItems": "center", "flexDirection": "row", - "flexWrap": "wrap", - "marginTop": 8, + "flexShrink": 1, + "opacity": 1, } } > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + <Text + numberOfLines={1} style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + "paddingLeft": 10, + "paddingVertical": 5, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#f5455c", + "fontSize": 18, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] } - testID="message-reaction-:marioparty:" > - <View - style={ +  + </Text> + </View> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This message has error too" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, + "alignItems": "flex-start", "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "height": 19, - "marginLeft": 7, - "width": 19, - }, - ] + ], + ] + } + > + This message has error too + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Full name 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - 1 - </Text> - </View> + } + /> </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > <View accessible={true} focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } onClick={[Function]} onResponderGrant={[Function]} onResponderMove={[Function]} @@ -26093,201 +25520,250 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } - testID="message-reaction-:react_rocket:" > - <View + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", }, Object { - "borderColor": "#e1e5e8", + "color": "#0d0e12", }, ] } > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "height": 19, - "marginLeft": 7, - "width": 19, - }, - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> + Diego Mello + </Text> </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - testID="message-reaction-:nyan_rocket:" > - <View + <Text + accessibilityLabel="Message" + numberOfLines={0} style={ Array [ Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ Array [ + Object {}, Object { - "overflow": "hidden", - }, - Object { - "height": 19, - "marginLeft": 7, - "width": 19, + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] + ], + ] + } + > + Message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Grouped messages 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - 1 - </Text> - </View> + } + /> </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > <View accessible={true} focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } onClick={[Function]} onResponderGrant={[Function]} onResponderMove={[Function]} @@ -26297,77 +25773,237 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } - testID="message-reaction-:heart:" > - <View + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", }, Object { - "borderColor": "#e1e5e8", + "color": "#0d0e12", }, ] } > - <Text - style={ + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="..." + numberOfLines={0} + style={ + Array [ Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - ❤️ - </Text> - <Text - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] + ], + ] + } + > + ... + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.?format=png&size=36", } - > - 1 - </Text> - </View> + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > <View accessible={true} focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } onClick={[Function]} onResponderGrant={[Function]} onResponderMove={[Function]} @@ -26377,402 +26013,108 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } - testID="message-reaction-:dog:" > - <View + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", }, Object { - "borderColor": "#e1e5e8", + "color": "#0d0e12", }, ] } > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 🐶 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-reaction-:grinning:" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 😀 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + <Text style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } - testID="message-reaction-:grimacing:" > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 😬 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - testID="message-reaction-:grin:" > - <View + <Text + accessibilityLabel="Different user" + numberOfLines={0} style={ Array [ Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ] - } - > - <Text - style={ - Object { - "color": "#ffffff", - "fontSize": 13, - "marginLeft": 7, - } - } - > - 😁 - </Text> - <Text - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "marginLeft": 3, - "marginRight": 8.5, - "textAlign": "left", - }, - Object { - "color": "#1d74f5", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] - } - > - 1 - </Text> - </View> - </View> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#ffffff", - "borderRadius": 2, - "marginBottom": 8, - "marginRight": 8, - "opacity": 1, - } - } - testID="message-add-reaction" - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "borderWidth": 1, - "flexDirection": "row", - "height": 28, - "justifyContent": "center", - "minWidth": 46.3, - }, - Object { - "borderColor": "#e1e5e8", - }, + ], ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 21, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> + Different user + </Text> + </Text> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Intercalated users - </Text> <View accessible={true} focusable={true} @@ -26814,68 +26156,104 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, + "flex": 1, + "marginLeft": 46, }, + false, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View + <View> + <Text + numberOfLines={0} style={ Array [ Object { - "overflow": "hidden", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + undefined, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "color": "#2f343d", }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=36", - } - } + <Text + accessibilityLabel="This is the third message" + numberOfLines={0} style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] } - /> - </View> + > + This is the third message + </Text> + </Text> </View> </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > <View style={ Array [ @@ -26883,82 +26261,10 @@ exports[`Storyshots Message list message 1`] = ` "flex": 1, "marginLeft": 46, }, - Object { - "marginLeft": 10, - }, + false, ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <View> <Text numberOfLines={0} @@ -26979,7 +26285,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Fourth message" + accessibilityLabel="This is the second message" numberOfLines={0} style={ Array [ @@ -27004,7 +26310,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Fourth message + This is the second message </Text> </Text> </View> @@ -27219,7 +26525,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Third message" + accessibilityLabel="This is the first message" numberOfLines={0} style={ Array [ @@ -27244,7 +26550,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Third message + This is the first message </Text> </Text> </View> @@ -27253,6 +26559,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Ignored 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -27294,12 +26613,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -27327,9 +26646,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -27340,7 +26659,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -27369,123 +26688,25 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <View> <Text - numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, + "fontStyle": "italic", "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - <Text - accessibilityLabel="Second message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Second message - </Text> + Message ignored. Tap to display it. </Text> </View> </View> @@ -27493,6 +26714,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Lists 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -27680,384 +26914,283 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="First message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - First message - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Date and Unread separators - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", + "alignItems": "flex-start", "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, } } > - <Text - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", + "width": 15, }, Object { - "color": "#0d0e12", + "alignItems": "flex-end", + "marginRight": 5, }, ] } > - rocket.cat - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Fourth message" - numberOfLines={0} - style={ - Array [ + <Text + style={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + "color": "#2f343d", + } + } + > + • + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ], - ] - } - > - Fourth message - </Text> - </Text> + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Dogs" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Dogs + </Text> + </Text> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 15, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + ◦ + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="cats" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + cats + </Text> + </Text> + </View> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 15, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + ◦ + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="cats" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + cats + </Text> + </Text> + </View> + </View> + </View> + </View> </View> </View> </View> </View> </View> </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 4, - "marginHorizontal": 14, - "marginTop": 16, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#f5455c", - }, - ] - } - > - unread - </Text> - <View - style={ - Array [ - Object { - "flex": 1, - "height": 1, - }, - Object { - "backgroundColor": "#f5455c", - }, - Object { - "marginHorizontal": 14, - }, - ] - } - /> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#f5455c", - }, - ] - } - > - November 10, 2017 - </Text> - </View> <View accessible={true} focusable={true} @@ -28245,201 +27378,184 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } } > - <Text - accessibilityLabel="Third message" - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "width": 16, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + 1. + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ], + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Dogs" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Dogs + </Text> + </Text> + </View> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 16, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, ] } > - Third message - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 4, - "marginHorizontal": 14, - "marginTop": 16, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#f5455c", - }, - Object { - "marginRight": 14, - }, - ] - } - > - unread - </Text> - <View - style={ - Array [ - Object { - "flex": 1, - "height": 1, - }, - Object { - "backgroundColor": "#f5455c", - }, - ] - } - /> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Second message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Second message - </Text> - </Text> + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + 2. + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Cats" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Cats + </Text> + </Text> + </View> + </View> </View> </View> </View> @@ -28533,7 +27649,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -28609,7 +27725,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - rocket.cat + diego.mello </Text> </View> <Text @@ -28633,53 +27749,95 @@ exports[`Storyshots Message list message 1`] = ` </Text> </View> <View> - <Text - numberOfLines={0} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } } > - <Text - accessibilityLabel="Second message" - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "width": 16, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], ] } > - Second message - </Text> - </Text> + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + 1. + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Dogs" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Dogs + </Text> + </Text> + </View> + </View> </View> </View> </View> @@ -28687,51 +27845,162 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 4, - "marginHorizontal": 14, - "marginTop": 16, + "opacity": 1, } } > - <View - style={ - Array [ - Object { - "flex": 1, - "height": 1, - }, - Object { - "backgroundColor": "#e1e5e8", - }, - ] - } - /> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - Object { - "marginLeft": 14, - }, - ] - } - > - November 10, 2017 - </Text> + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <View + style={ + Object { + "alignItems": "flex-start", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "width": 16, + }, + Object { + "alignItems": "flex-end", + "marginRight": 5, + }, + ] + } + > + <Text + style={ + Object { + "color": "#2f343d", + } + } + > + 2. + </Text> + </View> + <View + style={ + Object { + "flex": 1, + } + } + > + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Cats" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + undefined, + undefined, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Cats + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Mentions 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -28938,7 +28207,26 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="First message" + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F3BE08", + }, + ] + } + > + rocket.cat + </Text> + <Text + accessibilityLabel=" " numberOfLines={0} style={ Array [ @@ -28963,56 +28251,193 @@ exports[`Storyshots Message list message 1`] = ` ] } > - First message + </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - With image - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ + <Text + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F5455C", + }, + ] + } + > + diego.mello + </Text> + <Text + accessibilityLabel=" " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", + }, + ] + } + > + all + </Text> + <Text + accessibilityLabel=" " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", + }, + ] + } + > + here + </Text> + <Text + accessibilityLabel=" " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + + </Text> + <Text + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F3BE08", + }, + ] + } + > + #general + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ Object { "flexDirection": "column", "paddingHorizontal": 14, @@ -29179,86 +28604,186 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "borderRadius": 4, - "flexDirection": "column", - "opacity": 1, + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - } - > - <View> - <View + > + <Text + onPress={[Function]} style={ Array [ Object { - "borderRadius": 4, - "borderWidth": 1, - "minHeight": 200, - "overflow": "hidden", - "width": "100%", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", }, Object { - "borderColor": "#e1e5e8", + "color": "#F3BE08", }, ] } > - <View - style={ + rocket.cat + </Text> + <Text + accessibilityLabel=" Lorem ipsum dolor " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "overflow": "hidden", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - undefined, - ], - ] - } - > - <FastImageView - onFastImageError={[Function]} - onFastImageLoad={[Function]} - onFastImageLoadEnd={[Function]} - onFastImageLoadStart={[Function]} - onFastImageProgress={[Function]} - resizeMode="cover" - source={ + ], + ] + } + > + Lorem ipsum dolor + </Text> + <Text + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F5455C", + }, + ] + } + > + diego.mello + </Text> + <Text + accessibilityLabel=" sit amet, " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "uri": "https://open.rocket.chat/dummypath?rc_uid=&rc_token=", - } - } - style={ + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + sit amet, + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", + }, + ] + } + > + all + </Text> + <Text + accessibilityLabel=" consectetur adipiscing " + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + consectetur adipiscing + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F38C39", + }, + ] + } + > + here + </Text> <Text + accessibilityLabel=" elit, sed do eiusmod tempor " + numberOfLines={0} style={ Array [ Object { @@ -29268,48 +28793,89 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + elit, sed do eiusmod tempor + </Text> + <Text + onPress={[Function]} + style={ + Array [ Object { - "color": "#2f343d", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#F3BE08", }, ] } > - <Text - accessibilityLabel="This is a description" - style={ + #general + </Text> + <Text + accessibilityLabel=" incididunt ut labore et dolore magna aliqua." + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is a description - </Text> + ], + ] + } + > + incididunt ut labore et dolore magna aliqua. </Text> - </View> + </Text> </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Message with read receipt 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -29496,86 +29062,28 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "borderRadius": 4, - "flexDirection": "column", - "opacity": 1, + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - } - > - <View> - <View - style={ - Array [ - Object { - "borderRadius": 4, - "borderWidth": 1, - "minHeight": 200, - "overflow": "hidden", - "width": "100%", - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - undefined, - ], - ] - } - > - <FastImageView - onFastImageError={[Function]} - onFastImageLoad={[Function]} - onFastImageLoadEnd={[Function]} - onFastImageLoadStart={[Function]} - onFastImageProgress={[Function]} - resizeMode="cover" - source={ - Object { - "uri": "https://open.rocket.chat/dummypath?rc_uid=&rc_token=", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> + > <Text + accessibilityLabel="I'm fine!" + numberOfLines={0} style={ Array [ Object { @@ -29585,104 +29093,29 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="This is a description " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is a description - </Text> - <View - style={ Array [ + Object {}, Object { - "overflow": "hidden", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + ], + ] + } + > + I'm fine! </Text> - </View> + </Text> </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - With video - </Text> <View accessible={true} focusable={true} @@ -29724,276 +29157,62 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, + "flex": 1, + "marginLeft": 46, }, + false, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View + <View> + <Text + numberOfLines={0} style={ Array [ Object { - "overflow": "hidden", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + undefined, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "color": "#2f343d", }, ] } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } > <Text - numberOfLines={1} + accessibilityLabel="I'm fine!" + numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, + "fontWeight": "400", "textAlign": "left", }, - Object { - "color": "#0d0e12", - }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > - diego.mello + I'm fine! </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1f2329", - "borderRadius": 4, - "flex": 1, - "height": 150, - "justifyContent": "center", - "marginBottom": 6, - "opacity": 1, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 54, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  </Text> </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="This is a description " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is a description - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </Text> </View> </View> </View> @@ -30185,77 +29404,219 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1f2329", - "borderRadius": 4, - "flex": 1, - "height": 150, - "justifyContent": "center", - "marginBottom": 6, - "opacity": 1, - } - } - > + <View> <Text - allowFontScaling={false} + numberOfLines={0} style={ Array [ Object { - "color": "#ffffff", - "fontSize": 54, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, undefined, Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#2f343d", }, - Object {}, ] } > -  - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] + <Text + accessibilityLabel="I'm fine!" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + I'm fine! + </Text> + </Text> + </View> + </View> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 15, + }, + Object { + "lineHeight": 20, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } } > - With audio - </Text> + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="I'm fine!" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + I'm fine! + </Text> + </Text> + </View> + </View> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 15, + }, + Object { + "lineHeight": 20, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Message with reply 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -30442,214 +29803,166 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View /> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 56, - "marginBottom": 6, - }, - Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 12, - "left": 12, - "right": 12, - "top": 12, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "transparent", - "marginHorizontal": 10, - "opacity": 1, - } - } - > - <ActivityIndicator - animating={true} - color="#9ca2a8" - hidesWhenStopped={true} - size="small" - style={ - Array [ - Object { - "alignItems": "center", - "backgroundColor": "transparent", - "marginHorizontal": 10, - }, - Object { - "marginHorizontal": 8, - }, - ] - } - /> - </View> - <RNCSlider - animateTransitions={true} - animationConfig={ - Object { - "delay": 0, - "duration": 250, - "easing": [Function], - } - } - disabled={false} - enabled={true} - inverted={false} - maximumTrackTintColor="#9ca2a8" - maximumValue={0} - minimumTrackTintColor="#1d74f5" - minimumValue={0} - onChange={[Function]} - onRNCSliderSlidingComplete={null} - onRNCSliderSlidingStart={null} - onRNCSliderValueChange={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - step={0} - style={ - Array [ - Object { - "height": 40, - }, - Object { - "flex": 1, - }, - ] - } - thumbImage={ - Object { - "scale": 2, - "uri": "audio_thumb", - } - } - thumbTintColor={false} - value={0} - /> + <View> <Text + numberOfLines={0} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", - "marginHorizontal": 12, "textAlign": "left", }, + undefined, Object { - "color": "#9ca2a8", + "color": "#2f343d", }, ] } > - 00:00 + <Text + accessibilityLabel="I'm fine!" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + I'm fine! + </Text> </Text> </View> - <Text + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 6, + "opacity": 1, + } } > - <Text - accessibilityLabel="This is a description " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is a description - </Text> <View style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } } > - <FastImageView - resizeMode="contain" - source={ + <View + style={ Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + "alignItems": "center", + "flex": 1, + "flexDirection": "row", } } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] } + > + I'm a very long long title and I'll break + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - /> + > + <Text + accessibilityLabel="How are you?" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + How are you? + </Text> + </Text> </View> - </Text> + </View> </View> </View> </View> @@ -30696,13 +30009,151 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, }, - false, ] } > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> <View> <Text numberOfLines={0} @@ -30723,7 +30174,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="First message" + accessibilityLabel="I'm fine!" numberOfLines={0} style={ Array [ @@ -30748,15 +30199,174 @@ exports[`Storyshots Message list message 1`] = ` ] } > - First message + I'm fine! </Text> </Text> </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 6, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + rocket.cat + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="How are you? " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + How are you? + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </Text> + </View> + </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Message with thread 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -30794,6 +30404,72 @@ exports[`Storyshots Message list message 1`] = ` } } > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> <View style={ Array [ @@ -30801,41 +30477,25 @@ exports[`Storyshots Message list message 1`] = ` "flex": 1, "marginLeft": 46, }, - false, + Object { + "marginLeft": 10, + }, ] } > - <View /> <View style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 56, - "marginBottom": 6, - }, - Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - }, - ] + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } } > <View accessible={true} focusable={true} - hitSlop={ - Object { - "bottom": 12, - "left": 12, - "right": 12, - "top": 12, - } - } onClick={[Function]} onResponderGrant={[Function]} onResponderMove={[Function]} @@ -30846,82 +30506,42 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "backgroundColor": "transparent", - "marginHorizontal": 10, + "flexDirection": "row", + "flexShrink": 1, "opacity": 1, } } > - <ActivityIndicator - animating={true} - color="#9ca2a8" - hidesWhenStopped={true} - size="small" + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", "backgroundColor": "transparent", - "marginHorizontal": 10, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", }, Object { - "marginHorizontal": 8, + "color": "#0d0e12", }, ] } - /> + > + diego.mello + </Text> </View> - <RNCSlider - animateTransitions={true} - animationConfig={ - Object { - "delay": 0, - "duration": 250, - "easing": [Function], - } - } - disabled={false} - enabled={true} - inverted={false} - maximumTrackTintColor="#9ca2a8" - maximumValue={0} - minimumTrackTintColor="#1d74f5" - minimumValue={0} - onChange={[Function]} - onRNCSliderSlidingComplete={null} - onRNCSliderSlidingStart={null} - onRNCSliderValueChange={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - step={0} - style={ - Array [ - Object { - "height": 40, - }, - Object { - "flex": 1, - }, - ] - } - thumbImage={ - Object { - "scale": 2, - "uri": "audio_thumb", - } - } - thumbTintColor={false} - value={0} - /> <Text style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 12, "fontWeight": "400", - "marginHorizontal": 12, + "marginLeft": 8, "textAlign": "left", }, Object { @@ -30930,28 +30550,12 @@ exports[`Storyshots Message list message 1`] = ` ] } > - 00:00 + 10:00 AM </Text> </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > + <View> <Text - accessibilityLabel="This is a description" + numberOfLines={0} style={ Array [ Object { @@ -30961,203 +30565,275 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], + undefined, + Object { + "color": "#2f343d", + }, ] } > - This is a description - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View /> + <Text + accessibilityLabel="How are you?" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + How are you? + </Text> + </Text> + </View> <View style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 56, - "marginBottom": 6, - }, - Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } } > <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 12, - "left": 12, - "right": 12, - "top": 12, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ - Object { - "alignItems": "center", - "backgroundColor": "transparent", - "marginHorizontal": 10, - "opacity": 1, - } + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "flexDirection": "row", + "justifyContent": "center", + "paddingHorizontal": 12, + "paddingVertical": 8, + }, + Object { + "backgroundColor": "#1d74f5", + }, + ] } + testID="message-thread-button-How are you?" > - <ActivityIndicator - animating={true} - color="#9ca2a8" - hidesWhenStopped={true} - size="small" + <Text style={ Array [ Object { - "alignItems": "center", "backgroundColor": "transparent", - "marginHorizontal": 10, + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", }, Object { - "marginHorizontal": 8, + "color": "#ffffff", }, ] } - /> + > + Reply + </Text> </View> - <RNCSlider - animateTransitions={true} - animationConfig={ - Object { - "delay": 0, - "duration": 250, - "easing": [Function], - } - } - disabled={false} - enabled={true} - inverted={false} - maximumTrackTintColor="#9ca2a8" - maximumValue={0} - minimumTrackTintColor="#1d74f5" - minimumValue={0} - onChange={[Function]} - onRNCSliderSlidingComplete={null} - onRNCSliderSlidingStart={null} - onRNCSliderValueChange={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - step={0} + <View style={ Array [ Object { - "height": 40, + "alignItems": "center", + "flex": 1, + "flexDirection": "row", }, Object { "flex": 1, + "marginLeft": 12, }, ] } - thumbImage={ - Object { - "scale": 2, - "uri": "audio_thumb", - } - } - thumbTintColor={false} - value={0} - /> - <Text - style={ - Array [ + > + <View + style={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "marginHorizontal": 12, - "textAlign": "left", - }, + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginRight": 8, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 24, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 10, + "fontWeight": "600", + "marginLeft": 2, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 1 + </Text> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginRight": 8, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 24, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 10, + "fontWeight": "600", + "marginLeft": 2, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 0 + </Text> + </View> + </View> + <View + style={ Object { - "color": "#9ca2a8", - }, - ] - } - > - 00:00 - </Text> + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 8, + "marginRight": 8, + "width": 8, + }, + Object { + "backgroundColor": "#1d74f5", + }, + ] + } + /> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#6C727A", + "fontSize": 24, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> </View> </View> </View> @@ -31197,147 +30873,206 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { + "alignItems": "center", "flexDirection": "row", + "marginBottom": 12, + "marginTop": 6, } } + testID="message-thread-replied-on-How are you?" > - <View + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 20, + }, + Object { + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="How are you?" + numberOfLines={1} style={ Array [ Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", "flex": 1, - "marginLeft": 46, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", }, - false, ] } > - <View /> - <View + How are you? + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, + } + } + > + <Text + allowFontScaling={false} style={ Array [ Object { - "alignItems": "center", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 56, - "marginBottom": 6, + "color": "#9ca2a8", + "fontSize": 20, }, + undefined, Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 12, - "left": 12, - "right": 12, - "top": 12, - } +  + </Text> + </View> + </View> + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "transparent", - "marginHorizontal": 10, - "opacity": 1, - } - } - > - <ActivityIndicator - animating={true} - color="#9ca2a8" - hidesWhenStopped={true} - size="small" - style={ - Array [ - Object { - "alignItems": "center", - "backgroundColor": "transparent", - "marginHorizontal": 10, - }, - Object { - "marginHorizontal": 8, - }, - ] - } - /> - </View> - <RNCSlider - animateTransitions={true} - animationConfig={ - Object { - "delay": 0, - "duration": 250, - "easing": [Function], - } - } - disabled={false} - enabled={true} - inverted={false} - maximumTrackTintColor="#9ca2a8" - maximumValue={0} - minimumTrackTintColor="#1d74f5" - minimumValue={0} - onChange={[Function]} - onRNCSliderSlidingComplete={null} - onRNCSliderSlidingStart={null} - onRNCSliderValueChange={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - step={0} + } + > + <View style={ Array [ Object { - "height": 40, + "overflow": "hidden", }, Object { - "flex": 1, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } - thumbImage={ - Object { - "scale": 2, - "uri": "audio_thumb", + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + } } - } - thumbTintColor={false} - value={0} - /> + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View> <Text + accessibilityLabel="I'm fine!" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 14, + "fontSize": 16, "fontWeight": "400", - "marginHorizontal": 12, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#2f343d", }, ] } > - 00:00 + I'm fine! </Text> </View> </View> @@ -31345,27 +31080,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - With file - </Text> <View accessible={true} focusable={true} @@ -31396,6 +31110,103 @@ exports[`Storyshots Message list message 1`] = ` ] } > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginBottom": 12, + "marginTop": 6, + } + } + testID="message-thread-replied-on-Thread with emoji :) :joy:" + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 20, + }, + Object { + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="Thread with emoji🙂 😂" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + Thread with emoji🙂 😂 + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> <View style={ Object { @@ -31407,12 +31218,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -31440,9 +31251,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -31453,7 +31264,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -31482,240 +31293,28 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> + <View> <Text + accessibilityLabel="I'm fine!" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 12, + "fontSize": 16, "fontWeight": "400", - "marginLeft": 8, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#2f343d", }, ] } > - 10:00 AM + I'm fine! </Text> </View> - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginBottom": 4, - "marginTop": 6, - "opacity": 1, - } - } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="File.pdf" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - File.pdf - </Text> - </Text> - </View> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="This is a description " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - This is a description - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </Text> </View> </View> </View> @@ -31754,171 +31353,158 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { + "alignItems": "center", "flexDirection": "row", + "marginBottom": 12, + "marginTop": 6, } } + testID="message-thread-replied-on-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "color": "#1d74f5", + "fontSize": 20, }, - false, + Object { + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, ] } > - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ +  + </Text> + <Text + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + numberOfLines={1} + style={ + Array [ Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", "flex": 1, - "flexDirection": "row", - "marginBottom": 4, - "marginTop": 6, - "opacity": 1, - } + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="File.pdf" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - File.pdf - </Text> - </Text> - </View> - </View> + } + > <Text + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "color": "#9ca2a8", + "fontSize": 20, }, undefined, Object { - "color": "#2f343d", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <Text - accessibilityLabel="This is a description " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] +  + </Text> + </View> + </View> + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, } - > - This is a description - </Text> + } + > <View style={ Array [ Object { "overflow": "hidden", }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, ] } > <FastImageView - resizeMode="contain" + resizeMode="cover" source={ Object { + "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -31932,33 +31518,48 @@ exports[`Storyshots Message list message 1`] = ` } /> </View> - </Text> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View> + <Text + accessibilityLabel="I'm fine!" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + I'm fine! + </Text> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Message with reply - </Text> <View accessible={true} focusable={true} @@ -31989,6 +31590,103 @@ exports[`Storyshots Message list message 1`] = ` ] } > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginBottom": 12, + "marginTop": 6, + } + } + testID="message-thread-replied-on-How are you?" + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 20, + }, + Object { + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="How are you?" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + How are you? + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> <View style={ Object { @@ -32000,12 +31698,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -32033,9 +31731,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -32046,7 +31744,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -32075,79 +31773,10 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <View> <Text - numberOfLines={0} + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + numberOfLines={1} style={ Array [ Object { @@ -32157,173 +31786,15 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, Object { "color": "#2f343d", }, ] } > - <Text - accessibilityLabel="I'm fine!" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - I'm fine! - </Text> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </Text> </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 6, - "opacity": 1, - } - } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - I'm a very long long title and I'll break - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "300", - "marginLeft": 10, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="How are you?" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - How are you? - </Text> - </Text> - </View> - </View> </View> </View> </View> @@ -32359,6 +31830,103 @@ exports[`Storyshots Message list message 1`] = ` ] } > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginBottom": 12, + "marginTop": 6, + } + } + testID="message-thread-replied-on-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 20, + }, + Object { + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> <View style={ Object { @@ -32370,12 +31938,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -32403,9 +31971,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -32416,7 +31984,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -32445,79 +32013,10 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <View> <Text - numberOfLines={0} + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + numberOfLines={1} style={ Array [ Object { @@ -32527,234 +32026,20 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, Object { "color": "#2f343d", }, ] } > - <Text - accessibilityLabel="I'm fine!" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - I'm fine! - </Text> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </Text> </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 6, - "opacity": 1, - } - } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - rocket.cat - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "300", - "marginLeft": 10, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="How are you? " - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - How are you? - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </Text> - </View> - </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Message with read receipt - </Text> <View accessible={true} focusable={true} @@ -32788,40 +32073,137 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { + "alignItems": "center", "flexDirection": "row", + "marginBottom": 12, + "marginTop": 6, } } + testID="message-thread-replied-on-Thread with attachment" > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "color": "#1d74f5", + "fontSize": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, + "marginRight": 10, + }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ +  + </Text> + <Text + accessibilityLabel="Thread with attachment" + numberOfLines={1} + style={ + Array [ Object { - "opacity": 1, - } - } - > + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + Thread with attachment + </Text> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "marginLeft": 4, + "marginRight": 4, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > <View style={ Array [ @@ -32829,9 +32211,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -32842,7 +32224,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -32870,182 +32252,9 @@ exports[`Storyshots Message list message 1`] = ` }, ] } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="I'm fine!" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - I'm fine! - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } > <View> <Text - numberOfLines={0} style={ Array [ Object { @@ -33055,41 +32264,13 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, Object { "color": "#2f343d", }, ] } > - <Text - accessibilityLabel="I'm fine!" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - I'm fine! - </Text> + Sent an attachment </Text> </View> </View> @@ -33097,6 +32278,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Reactions 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -33303,7 +32497,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="I'm fine!" + accessibilityLabel="Reactions" numberOfLines={0} style={ Array [ @@ -33328,182 +32522,436 @@ exports[`Storyshots Message list message 1`] = ` ] } > - I'm fine! + Reactions </Text> </Text> </View> - </View> - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 15, - }, - Object { - "lineHeight": 20, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ + <View + style={ Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View> - <Text - numberOfLines={0} + "flexDirection": "row", + "flexWrap": "wrap", + "marginTop": 8, + } + } + > + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } } + testID="message-reaction-:joy:" > - <Text - accessibilityLabel="I'm fine!" - numberOfLines={0} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], ] } > - I'm fine! - </Text> - </Text> - </View> - </View> - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 15, - }, - Object { - "lineHeight": 20, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Message with thread - </Text> + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 😂 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:marioparty:" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "height": 19, + "marginLeft": 7, + "width": 19, + }, + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 99 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:thinking:" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 🤔 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 999 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:thinking:" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 🤔 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 9999 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-add-reaction" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 21, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> <View accessible={true} focusable={true} @@ -33710,7 +33158,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="How are you?" + accessibilityLabel="Multiple Reactions" numberOfLines={0} style={ Array [ @@ -33735,488 +33183,813 @@ exports[`Storyshots Message list message 1`] = ` ] } > - How are you? + Multiple Reactions </Text> </Text> </View> <View style={ Object { - "alignItems": "center", "flexDirection": "row", + "flexWrap": "wrap", "marginTop": 8, } } > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "paddingHorizontal": 12, - "paddingVertical": 8, - }, - Object { - "backgroundColor": "#1d74f5", - }, - ] + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } } - testID="message-thread-button-How are you?" + testID="message-reaction-:marioparty:" > - <Text + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, }, Object { - "color": "#ffffff", + "borderColor": "#1d74f5", }, ] } - > - Reply - </Text> - </View> - <View - style={ - Array [ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - }, - Object { - "flex": 1, - "marginLeft": 12, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "flexDirection": "row", - } - } > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginRight": 8, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "height": 19, + "marginLeft": 7, + "width": 19, + }, + ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 24, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/marioparty.gif", + } } - > -  - </Text> - <Text - numberOfLines={1} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 10, - "fontWeight": "600", - "marginLeft": 2, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - 1 - </Text> + /> </View> - <View + <Text style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:react_rocket:" + > + <View + style={ + Array [ Object { "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, "flexDirection": "row", - "marginRight": 8, - } + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "height": 19, + "marginLeft": 7, + "width": 19, + }, + ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 24, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/react_rocket.png", + } } - > -  - </Text> - <Text - numberOfLines={1} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 10, - "fontWeight": "600", - "marginLeft": 2, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - 0 - </Text> + /> </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:nyan_rocket:" + > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] } > <View style={ Array [ Object { - "borderRadius": 4, - "height": 8, - "marginRight": 8, - "width": 8, + "overflow": "hidden", }, Object { - "backgroundColor": "#1d74f5", + "height": 19, + "marginLeft": 7, + "width": 19, }, ] } - /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } > - <Text - allowFontScaling={false} + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } + } style={ - Array [ - Object { - "color": "#6C727A", - "fontSize": 24, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > -  - </Text> + /> </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> </View> </View> - </View> - </View> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, - } - } - testID="message-thread-replied-on-How are you?" - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="How are you?" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - How are you? - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, + <View + accessible={true} + focusable={true} + hitSlop={ Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } } - } - > - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } } + testID="message-reaction-:heart:" > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View> - <Text - accessibilityLabel="I'm fine!" - numberOfLines={1} + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + ❤️ + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } } + testID="message-reaction-:dog:" > - I'm fine! - </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 🐶 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:grinning:" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 😀 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:grimacing:" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 😬 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f1f2f4", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-reaction-:grin:" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#1d74f5", + }, + ] + } + > + <Text + style={ + Object { + "color": "#ffffff", + "fontSize": 13, + "marginLeft": 7, + } + } + > + 😁 + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "600", + "marginLeft": 3, + "marginRight": 8.5, + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + 1 + </Text> + </View> + </View> + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 4, + "left": 4, + "right": 4, + "top": 4, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#ffffff", + "borderRadius": 2, + "marginBottom": 8, + "marginRight": 8, + "opacity": 1, + } + } + testID="message-add-reaction" + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "borderWidth": 1, + "flexDirection": "row", + "height": 28, + "justifyContent": "center", + "minWidth": 46.3, + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#1d74f5", + "fontSize": 21, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Sequential thread messages following thread button 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -34250,100 +34023,476 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { - "alignItems": "center", "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, } } - testID="message-thread-replied-on-Thread with emoji :) :joy:" > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "marginTop": 4, }, - Object {}, ] } > -  - </Text> - <Text - accessibilityLabel="Thread with emoji🙂 😂" - numberOfLines={1} - style={ - Array [ + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ Object { - "backgroundColor": "transparent", "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "marginLeft": 46, }, Object { - "color": "#1d74f5", + "marginLeft": 10, }, ] } > - Thread with emoji🙂 😂 - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="How are you?" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + How are you? + </Text> + </Text> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginTop": 8, + } } > -  - </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 2, + "flexDirection": "row", + "justifyContent": "center", + "paddingHorizontal": 12, + "paddingVertical": 8, + }, + Object { + "backgroundColor": "#1d74f5", + }, + ] + } + testID="message-thread-button-How are you?" + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Reply + </Text> + </View> + <View + style={ + Array [ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + }, + Object { + "flex": 1, + "marginLeft": 12, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginRight": 8, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 24, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 10, + "fontWeight": "600", + "marginLeft": 2, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 1 + </Text> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "marginRight": 8, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 24, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 10, + "fontWeight": "600", + "marginLeft": 2, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 0 + </Text> + </View> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 8, + "marginRight": 8, + "width": 8, + }, + Object { + "backgroundColor": "#1d74f5", + }, + ] + } + /> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#6C727A", + "fontSize": 24, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> </View> </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > <View style={ Object { @@ -34490,100 +34639,146 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { - "alignItems": "center", "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, } } - testID="message-thread-replied-on-Markdown: [link](http://www.google.com/) \`\`\`block code\`\`\`" > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#1d74f5", - "fontSize": 20, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", }, - Object {}, ] } > -  - </Text> - <Text - accessibilityLabel="Markdown: link block code" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, }, Object { - "color": "#1d74f5", + "marginLeft": 10, }, ] } > - Markdown: link block code - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> + <View> + <Text + accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> + </View> </View> </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > <View style={ Object { @@ -34672,8 +34867,6 @@ exports[`Storyshots Message list message 1`] = ` > <View> <Text - accessibilityLabel="I'm fine!" - numberOfLines={1} style={ Array [ Object { @@ -34689,7 +34882,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - I'm fine! + Sent an attachment </Text> </View> </View> @@ -34697,6 +34890,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Sequential thread messages following thread reply 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -34736,7 +34942,7 @@ exports[`Storyshots Message list message 1`] = ` "marginTop": 6, } } - testID="message-thread-replied-on-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + testID="message-thread-replied-on-How are you?" > <Text allowFontScaling={false} @@ -34762,7 +34968,7 @@ exports[`Storyshots Message list message 1`] = `  </Text> <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + accessibilityLabel="How are you?" numberOfLines={1} style={ Array [ @@ -34790,7 +34996,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + How are you? </Text> <View style={ @@ -34967,103 +35173,6 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, - } - } - testID="message-thread-replied-on-How are you?" - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="How are you?" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - How are you? - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> <View style={ Object { @@ -35152,7 +35261,7 @@ exports[`Storyshots Message list message 1`] = ` > <View> <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + accessibilityLabel="Cool!" numberOfLines={1} style={ Array [ @@ -35169,7 +35278,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Cool! </Text> </View> </View> @@ -35207,103 +35316,6 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, - } - } - testID="message-thread-replied-on-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> <View style={ Object { @@ -35447,103 +35459,6 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, - } - } - testID="message-thread-replied-on-Thread with attachment" - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="Thread with attachment" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - Thread with attachment - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> <View style={ Object { @@ -35655,27 +35570,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Sequential thread messages following thread button - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Static avatar 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -35763,7 +35670,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://pbs.twimg.com/profile_images/1016397063649660929/14EIApTi_400x400.jpg", } } style={ @@ -35882,7 +35789,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="How are you?" + accessibilityLabel="Message" numberOfLines={0} style={ Array [ @@ -35907,248 +35814,28 @@ exports[`Storyshots Message list message 1`] = ` ] } > - How are you? + Message </Text> </Text> </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginTop": 8, - } - } - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "paddingHorizontal": 12, - "paddingVertical": 8, - }, - Object { - "backgroundColor": "#1d74f5", - }, - ] - } - testID="message-thread-button-How are you?" - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Reply - </Text> - </View> - <View - style={ - Array [ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - }, - Object { - "flex": 1, - "marginLeft": 12, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "flexDirection": "row", - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginRight": 8, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 24, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 10, - "fontWeight": "600", - "marginLeft": 2, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 1 - </Text> - </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginRight": 8, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 24, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 10, - "fontWeight": "600", - "marginLeft": 2, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 0 - </Text> - </View> - </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 8, - "marginRight": 8, - "width": 8, - }, - Object { - "backgroundColor": "#1d74f5", - }, - ] - } - /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#6C727A", - "fontSize": 24, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - </View> - </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message System messages 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -36265,28 +35952,49 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> + <Text> <Text - accessibilityLabel="I'm fine!" - numberOfLines={1} + disabled={false} + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + + <Text + accessibilityLabel="Message removed" style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, + "fontStyle": "italic", "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - I'm fine! + Message removed </Text> - </View> + </Text> </View> </View> </View> @@ -36408,28 +36116,49 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> + <Text> <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - numberOfLines={1} + disabled={false} + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + + <Text + accessibilityLabel="has joined the channel" style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, + "fontStyle": "italic", "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + has joined the channel </Text> - </View> + </Text> </View> </View> </View> @@ -36551,52 +36280,54 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> + <Text> + <Text + disabled={false} + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + <Text + accessibilityLabel="Message pinned" style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, + "fontStyle": "italic", "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - Sent an attachment + Message pinned </Text> - </View> + </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Sequential thread messages following thread reply - </Text> <View accessible={true} focusable={true} @@ -36627,103 +36358,6 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 12, - "marginTop": 6, - } - } - testID="message-thread-replied-on-How are you?" - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#1d74f5", - "fontSize": 20, - }, - Object { - "marginLeft": 16, - "marginRight": 10, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="How are you?" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - How are you? - </Text> - <View - style={ - Object { - "alignItems": "center", - "justifyContent": "center", - "marginLeft": 4, - "marginRight": 4, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ca2a8", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> <View style={ Object { @@ -36810,28 +36444,49 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> + <Text> <Text - accessibilityLabel="I'm fine!" - numberOfLines={1} + disabled={false} + onPress={[Function]} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + + <Text + accessibilityLabel="has left the channel" style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, + "fontStyle": "italic", "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - I'm fine! + has left the channel </Text> - </View> + </Text> </View> </View> </View> @@ -36953,28 +36608,26 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> - <Text - accessibilityLabel="Cool!" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Cool! - </Text> - </View> + <Text + accessibilityLabel="User rocket.cat removed by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + User rocket.cat removed by diego.mello + </Text> </View> </View> </View> @@ -37096,28 +36749,26 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> - <Text - accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - </Text> - </View> + <Text + accessibilityLabel="User rocket.cat added by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + User rocket.cat added by diego.mello + </Text> </View> </View> </View> @@ -37239,52 +36890,31 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Sent an attachment - </Text> - </View> + <Text + accessibilityLabel="User rocket.cat muted by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + User rocket.cat muted by diego.mello + </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Discussion - </Text> <View accessible={true} focusable={true} @@ -37326,12 +36956,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -37359,9 +36989,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -37372,7 +37002,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -37401,77 +37031,8 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <Text + accessibilityLabel="User rocket.cat unmuted by diego.mello" style={ Array [ Object { @@ -37480,7 +37041,6 @@ exports[`Storyshots Message list message 1`] = ` "fontSize": 16, "fontStyle": "italic", "fontWeight": "400", - "marginBottom": 6, "textAlign": "left", }, Object { @@ -37489,125 +37049,8 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Started a discussion: - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - This is a discussion + User rocket.cat unmuted by diego.mello </Text> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginTop": 8, - } - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1d74f5", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "opacity": 1, - "paddingHorizontal": 12, - "paddingVertical": 8, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 16, - }, - Object { - "marginRight": 8, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - No messages yet - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - /> - </View> </View> </View> </View> @@ -37654,12 +37097,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -37687,9 +37130,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -37700,7 +37143,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -37729,77 +37172,8 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <Text + accessibilityLabel="rocket.cat was set admin by diego.mello" style={ Array [ Object { @@ -37808,7 +37182,6 @@ exports[`Storyshots Message list message 1`] = ` "fontSize": 16, "fontStyle": "italic", "fontWeight": "400", - "marginBottom": 6, "textAlign": "left", }, Object { @@ -37817,127 +37190,8 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Started a discussion: - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - This is a discussion + rocket.cat was set admin by diego.mello </Text> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginTop": 8, - } - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1d74f5", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "opacity": 1, - "paddingHorizontal": 12, - "paddingVertical": 8, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 16, - }, - Object { - "marginRight": 8, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 message - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - November 10, 2017 - </Text> - </View> </View> </View> </View> @@ -37984,12 +37238,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -38017,9 +37271,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -38030,7 +37284,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -38059,215 +37313,26 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View + <Text + accessibilityLabel="rocket.cat is no longer admin by diego.mello" style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "marginBottom": 6, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Started a discussion: - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + rocket.cat is no longer admin by diego.mello </Text> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginTop": 8, - } - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1d74f5", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "opacity": 1, - "paddingHorizontal": 12, - "paddingVertical": 8, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 16, - }, - Object { - "marginRight": 8, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - 10 messages - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - November 10, 2017 - </Text> - </View> </View> </View> </View> @@ -38314,12 +37379,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -38347,9 +37412,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -38360,7 +37425,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -38389,77 +37454,8 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> <Text + accessibilityLabel="Room name changed to: New name by diego.mello" style={ Array [ Object { @@ -38468,7 +37464,6 @@ exports[`Storyshots Message list message 1`] = ` "fontSize": 16, "fontStyle": "italic", "fontWeight": "400", - "marginBottom": 6, "textAlign": "left", }, Object { @@ -38477,153 +37472,13 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Started a discussion: - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - This is a discussion + Room name changed to: New name by diego.mello </Text> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginTop": 8, - } - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1d74f5", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "opacity": 1, - "paddingHorizontal": 12, - "paddingVertical": 8, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 16, - }, - Object { - "marginRight": 8, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - +999 messages - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - November 10, 2017 - </Text> - </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - URL - </Text> <View accessible={true} focusable={true} @@ -38665,12 +37520,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -38698,9 +37553,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -38711,7 +37566,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -38740,77 +37595,82 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View + <Text + accessibilityLabel="Room description changed to: new description by diego.mello" style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View /> + Room description changed to: new description by diego.mello + </Text> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, + }, + ] + } + > <View accessible={true} focusable={true} @@ -38823,13 +37683,6 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "column", - "marginTop": 6, "opacity": 1, } } @@ -38841,10 +37694,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderTopLeftRadius": 4, - "borderTopRightRadius": 4, - "height": 150, - "width": "100%", + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -38853,7 +37705,9 @@ exports[`Storyshots Message list message 1`] = ` resizeMode="cover" source={ Object { - "uri": "https://rocket.chat/images/blog/post.jpg", + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -38867,131 +37721,41 @@ exports[`Storyshots Message list message 1`] = ` } /> </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "column", - "justifyContent": "flex-start", - "padding": 15, - } - } - > - <Text - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - Rocket.Chat - Free, Open Source, Enterprise Team Chat - </Text> - <Text - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. - </Text> - </View> </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + </View> + <View + style={ + Array [ Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, "flex": 1, - "flexDirection": "column", - "marginTop": 4, - "opacity": 1, - } + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <Text + accessibilityLabel="Room announcement changed to: new announcement by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } > - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "column", - "justifyContent": "flex-start", - "padding": 15, - } - } - > - <Text - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - Google - </Text> - <Text - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. - </Text> - </View> - </View> + Room announcement changed to: new announcement by diego.mello + </Text> </View> </View> </View> @@ -39038,12 +37802,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, Object { - "marginTop": 4, + "marginLeft": 16, }, ] } @@ -39071,9 +37835,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "borderRadius": 2, + "height": 20, + "width": 20, }, ] } @@ -39084,7 +37848,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", } } style={ @@ -39113,234 +37877,26 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <View + <Text + accessibilityLabel="Room topic changed to: new topic by diego.mello" style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Message " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message - </Text> - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Array [ - Object { - "height": 20, - "width": 20, - }, - Object {}, - ], - ] - } - > - <FastImageView - resizeMode="contain" - source={ - Object { - "priority": "high", - "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </Text> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "column", - "marginTop": 6, - "opacity": 1, - } + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } > - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "column", - "justifyContent": "flex-start", - "padding": 15, - } - } - > - <Text - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] - } - > - Google - </Text> - <Text - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. - </Text> - </View> - </View> + Room topic changed to: new topic by diego.mello + </Text> </View> </View> </View> @@ -39387,14 +37943,16 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, }, - false, ] } > - <View /> <View accessible={true} focusable={true} @@ -39407,94 +37965,379 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "column", - "marginTop": 6, "opacity": 1, } } > <View style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "column", - "justifyContent": "flex-start", - "padding": 15, - } - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + ] + } > - <Text - numberOfLines={2} + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + } + } style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <Text + accessibilityLabel="Room type changed to: public by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Room type changed to: public by diego.mello + </Text> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + } } - > - Google - </Text> - <Text - numberOfLines={2} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } - > - Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. - </Text> + /> </View> </View> </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <Text + accessibilityLabel="This room's encryption has been disabled by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + This room's encryption has been disabled by diego.mello + </Text> + </View> </View> </View> </View> </View> - <Text + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] + Object { + "opacity": 1, + } } > - Custom fields - </Text> + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + Object { + "marginLeft": 16, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 2, + "height": 20, + "width": 20, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <Text + accessibilityLabel="This room's encryption has been enabled by diego.mello" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontStyle": "italic", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + This room's encryption has been enabled by diego.mello + </Text> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Temp 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -39681,7 +38524,13 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> + <View + style={ + Object { + "opacity": 0.3, + } + } + > <Text numberOfLines={0} style={ @@ -39701,7 +38550,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Message" + accessibilityLabel="Temp message" numberOfLines={0} style={ Array [ @@ -39726,10 +38575,79 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Message + Temp message </Text> </Text> </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Time format 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > <View accessible={true} focusable={true} @@ -39742,75 +38660,493 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 6, "opacity": 1, } } > <View style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] } > - <View - style={ + <FastImageView + resizeMode="cover" + source={ Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } > - <Text - style={ + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10 November 2017 + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Testing" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, + ], + ] + } + > + Testing + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Two short custom fields with markdown 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, Object { - "color": "#2f343d", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - ] + ], + ] + } + > + Message + </Text> + </Text> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 6, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", } - > - rocket.cat - </Text> + } + > <Text style={ Array [ Object { "backgroundColor": "transparent", + "flex": 1, "fontFamily": "System", - "fontSize": 12, - "fontWeight": "300", - "marginLeft": 10, + "fontSize": 16, + "fontWeight": "500", "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#2f343d", }, ] } > - 10:00 AM + rocket.cat </Text> </View> <Text @@ -39875,7 +39211,7 @@ exports[`Storyshots Message list message 1`] = ` "padding": 10, }, Object { - "width": "100%", + "width": "50%", }, ] } @@ -39952,7 +39288,7 @@ exports[`Storyshots Message list message 1`] = ` "padding": 10, }, Object { - "width": "100%", + "width": "50%", }, ] } @@ -39993,111 +39329,177 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Value 2" + onLongPress={[Function]} + onPress={[Function]} style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 2 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "100%", - }, - ] - } - > - <Text - style={ - Array [ Object { "backgroundColor": "transparent", + "color": "#1d74f5", "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 3 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 3" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + } + } + > + <Text + accessibilityLabel="Value 2" + style={ Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, - ], - ] - } - > - Value 3 + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + ], + ] + } + > + Value 2 + </Text> </Text> </Text> </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginTop": 4, + "opacity": 1, + } + } + > + <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + rocket.cat + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Custom fields 2" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Custom fields 2 + </Text> + </Text> + <View + style={ + Object { + "flex": 1, + "flexDirection": "row", + "flexWrap": "wrap", + } + } + > <View style={ Array [ @@ -40106,7 +39508,7 @@ exports[`Storyshots Message list message 1`] = ` "padding": 10, }, Object { - "width": "100%", + "width": "50%", }, ] } @@ -40127,7 +39529,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Field 4 + Field 1 </Text> <Text style={ @@ -40147,7 +39549,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Value 4" + accessibilityLabel="Value 1" style={ Array [ Object { @@ -40171,7 +39573,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Value 4 + Value 1 </Text> </Text> </View> @@ -40183,7 +39585,7 @@ exports[`Storyshots Message list message 1`] = ` "padding": 10, }, Object { - "width": "100%", + "width": "50%", }, ] } @@ -40204,7 +39606,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Field 5 + Field 2 </Text> <Text style={ @@ -40224,7 +39626,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Value 5" + accessibilityLabel="Value 2" style={ Array [ Object { @@ -40244,11 +39646,14 @@ exports[`Storyshots Message list message 1`] = ` "marginBottom": 0, "marginTop": 0, }, + Object { + "fontWeight": "bold", + }, ], ] } > - Value 5 + Value 2 </Text> </Text> </View> @@ -40260,27 +39665,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Two short custom fields with markdown - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message URL 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -40467,28 +39864,95 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View> - <Text - numberOfLines={0} + <View /> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "column", + "marginTop": 6, + "opacity": 1, + } + } + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "overflow": "hidden", }, - undefined, Object { - "color": "#2f343d", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "height": 150, + "width": "100%", }, ] } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "uri": "https://rocket.chat/images/blog/post.jpg", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "column", + "justifyContent": "flex-start", + "padding": 15, + } + } > <Text - accessibilityLabel="Message" - numberOfLines={0} + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] + } + > + Rocket.Chat - Free, Open Source, Enterprise Team Chat + </Text> + <Text + numberOfLines={2} style={ Array [ Object { @@ -40498,23 +39962,15 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], + Object { + "color": "#9ca2a8", + }, ] } > - Message + Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. </Text> - </Text> + </View> </View> <View accessible={true} @@ -40528,15 +39984,13 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "alignSelf": "flex-start", "backgroundColor": "#f3f4f5", "borderColor": "#e1e5e8", "borderRadius": 4, "borderWidth": 1, "flex": 1, - "flexDirection": "row", - "marginTop": 6, + "flexDirection": "column", + "marginTop": 4, "opacity": 1, } } @@ -40544,62 +39998,35 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { - "borderRadius": 4, + "alignItems": "flex-start", "flex": 1, "flexDirection": "column", + "justifyContent": "flex-start", "padding": 15, } } > - <View + <Text + numberOfLines={2} style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] } > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - rocket.cat - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "300", - "marginLeft": 10, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> + Google + </Text> <Text + numberOfLines={2} style={ Array [ Object { @@ -40609,524 +40036,14 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#2f343d", + "color": "#9ca2a8", }, ] } > - <Text - accessibilityLabel="Custom fields" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Custom fields - </Text> + Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. </Text> - <View - style={ - Object { - "flex": 1, - "flexDirection": "row", - "flexWrap": "wrap", - } - } - > - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 1 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 1" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 1 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 2 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - onLongPress={[Function]} - onPress={[Function]} - style={ - Object { - "backgroundColor": "transparent", - "color": "#1d74f5", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - } - } - > - <Text - accessibilityLabel="Value 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - ], - ] - } - > - Value 2 - </Text> - </Text> - </Text> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 4, - "opacity": 1, - } - } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - rocket.cat - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "300", - "marginLeft": 10, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Custom fields 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Custom fields 2 - </Text> - </Text> - <View - style={ - Object { - "flex": 1, - "flexDirection": "row", - "flexWrap": "wrap", - } - } - > - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 1 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 1" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 1 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 2 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontWeight": "bold", - }, - ], - ] - } - > - Value 2 - </Text> - </Text> - </View> - </View> </View> </View> </View> @@ -41134,27 +40051,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Colored attachments - </Text> <View accessible={true} focusable={true} @@ -41341,207 +40237,89 @@ exports[`Storyshots Message list message 1`] = ` 10:00 AM </Text> </View> - <View /> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "rgba(255, 0, 0, 0.2)", - "borderColor": "red", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 6, - "opacity": 1, - } - } - > - <View + <View> + <Text + numberOfLines={0} style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } > - <View + <Text + accessibilityLabel="Message " + numberOfLines={0} style={ - Object { - "flex": 1, - "flexDirection": "row", - "flexWrap": "wrap", - } - } - > - <View - style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Array [ + Object {}, Object { - "flexDirection": "column", - "padding": 10, + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 1 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 1" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 1 - </Text> - </Text> - </View> - <View - style={ + ], + ] + } + > + Message + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, Array [ Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", + "height": 20, + "width": 20, }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", } - > - Field 2 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - <Text - accessibilityLabel="Value 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 2 - </Text> - </Text> - </View> + } + /> </View> - </View> + </Text> </View> <View accessible={true} @@ -41555,15 +40333,13 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "rgba(0, 128, 0, 0.2)", - "borderColor": "green", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", "borderRadius": 4, "borderWidth": 1, "flex": 1, - "flexDirection": "row", - "marginTop": 4, + "flexDirection": "column", + "marginTop": 6, "opacity": 1, } } @@ -41571,179 +40347,108 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { - "borderRadius": 4, + "alignItems": "flex-start", "flex": 1, "flexDirection": "column", + "justifyContent": "flex-start", "padding": 15, } } > - <View + <Text + numberOfLines={2} style={ - Object { - "flex": 1, - "flexDirection": "row", - "flexWrap": "wrap", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] } > - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 1 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 1" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 1 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 2 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 2 - </Text> - </Text> - </View> - </View> + Google + </Text> + <Text + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. + </Text> </View> </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View /> <View accessible={true} focusable={true} @@ -41756,15 +40461,13 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "rgba(0, 0, 255, 0.2)", - "borderColor": "blue", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", "borderRadius": 4, "borderWidth": 1, "flex": 1, - "flexDirection": "row", - "marginTop": 4, + "flexDirection": "column", + "marginTop": 6, "opacity": 1, } } @@ -41772,256 +40475,52 @@ exports[`Storyshots Message list message 1`] = ` <View style={ Object { - "borderRadius": 4, + "alignItems": "flex-start", "flex": 1, "flexDirection": "column", + "justifyContent": "flex-start", "padding": 15, } } > - <View + <Text + numberOfLines={2} style={ - Object { - "flex": 1, - "flexDirection": "row", - "flexWrap": "wrap", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ] } > - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 1 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 1" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 1 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Field 2 - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Value 2" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Value 2 - </Text> - </Text> - </View> - </View> - </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#f3f4f5", - "borderColor": "#e1e5e8", - "borderRadius": 4, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "marginTop": 4, - "opacity": 1, - } - } - > - <View - style={ - Object { - "borderRadius": 4, - "flex": 1, - "flexDirection": "column", - "padding": 15, - } - } - > - <View + Google + </Text> + <Text + numberOfLines={2} style={ - Object { - "flex": 1, - "flexDirection": "row", - "flexWrap": "wrap", - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] } > - <View - style={ - Array [ - Object { - "flexDirection": "column", - "padding": 10, - }, - Object { - "width": "50%", - }, - ] - } - > - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Invalid color - </Text> - </View> - </View> + Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. + </Text> </View> </View> </View> @@ -42029,27 +40528,19 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Broadcast - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message With alias 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -42213,7 +40704,26 @@ exports[`Storyshots Message list message 1`] = ` ] } > - diego.mello + Diego Mello + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + @ + diego.mello + </Text> </Text> </View> <Text @@ -42256,7 +40766,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Broadcasted message" + accessibilityLabel="Message" numberOfLines={0} style={ Array [ @@ -42281,119 +40791,15 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Broadcasted message + Message </Text> </Text> </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "marginTop": 8, - } - } - > - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "backgroundColor": "#1d74f5", - "borderRadius": 2, - "flexDirection": "row", - "justifyContent": "center", - "opacity": 1, - "paddingHorizontal": 12, - "paddingVertical": 8, - } - } - testID="message-broadcast-reply" - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - Object { - "marginRight": 8, - }, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Reply - </Text> - </View> - </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Archived - </Text> <View accessible={true} focusable={true} @@ -42481,7 +40887,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + "uri": "https://open.rocket.chat/avatar/Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.?format=png&size=36", } } style={ @@ -42557,7 +40963,26 @@ exports[`Storyshots Message list message 1`] = ` ] } > - diego.mello + Diego Mello + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + @ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + </Text> </Text> </View> <Text @@ -42600,7 +41025,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="This message is inside an archived room" + accessibilityLabel="Message" numberOfLines={0} style={ Array [ @@ -42625,7 +41050,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - This message is inside an archived room + Message </Text> </Text> </View> @@ -42634,449 +41059,334 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message With audio 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] + Object { + "opacity": 1, + } } > - Error - </Text> - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > + <View> <View style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] + Object { + "flexDirection": "row", + } } > <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ - Object { - "opacity": 1, - } + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] } > <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] + Object { + "opacity": 1, + } } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > <View style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] } > <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { "alignItems": "center", + "flex": 1, "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, + "justifyContent": "space-between", } } > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, "textAlign": "left", }, Object { - "color": "#0d0e12", + "color": "#9ca2a8", }, ] } > - diego.mello + 10:00 AM </Text> </View> - <Text + <View /> + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", + "alignItems": "center", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 56, + "marginBottom": 6, }, Object { - "color": "#9ca2a8", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", }, ] } > - 10:00 AM - </Text> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - "paddingLeft": 10, - "paddingVertical": 5, + <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 12, + "left": 12, + "right": 12, + "top": 12, + } } - } - > - <Text - allowFontScaling={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "color": "#f5455c", - "fontSize": 18, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - </View> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ Object { + "alignItems": "center", "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="This message has error" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, + "marginHorizontal": 10, + "opacity": 1, + } + } + > + <ActivityIndicator + animating={true} + color="#9ca2a8" + hidesWhenStopped={true} + size="small" + style={ Array [ - Object {}, Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, + "alignItems": "center", + "backgroundColor": "transparent", + "marginHorizontal": 10, }, - ], - ] - } - > - This message has error - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - false, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, + Object { + "marginHorizontal": 8, + }, + ] + } + /> + </View> + <RNCSlider + animateTransitions={true} + animationConfig={ + Object { + "delay": 0, + "duration": 250, + "easing": [Function], + } } - } - > - <Text - numberOfLines={1} + disabled={false} + enabled={true} + inverted={false} + maximumTrackTintColor="#9ca2a8" + maximumValue={0} + minimumTrackTintColor="#1d74f5" + minimumValue={0} + onChange={[Function]} + onRNCSliderSlidingComplete={null} + onRNCSliderSlidingStart={null} + onRNCSliderValueChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + step={0} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", + "height": 40, }, Object { - "color": "#0d0e12", + "flex": 1, }, ] } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, + thumbImage={ Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - <View - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 4, - "left": 4, - "right": 4, - "top": 4, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - "paddingLeft": 10, - "paddingVertical": 5, + "scale": 2, + "uri": "audio_thumb", + } } - } - > + thumbTintColor={false} + value={0} + /> <Text - allowFontScaling={false} style={ Array [ Object { - "color": "#f5455c", - "fontSize": 18, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "marginHorizontal": 12, + "textAlign": "left", }, - undefined, Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#9ca2a8", }, - Object {}, ] } > -  + 00:00 </Text> </View> - </View> - <View> <Text - numberOfLines={0} style={ Array [ Object { @@ -43094,8 +41404,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="This message has error too" - numberOfLines={0} + accessibilityLabel="This is a description " style={ Array [ Object { @@ -43119,35 +41428,49 @@ exports[`Storyshots Message list message 1`] = ` ] } > - This message has error too + This is a description </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Temp - </Text> <View accessible={true} focusable={true} @@ -43185,72 +41508,6 @@ exports[`Storyshots Message list message 1`] = ` } } > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> <View style={ Array [ @@ -43258,89 +41515,11 @@ exports[`Storyshots Message list message 1`] = ` "flex": 1, "marginLeft": 46, }, - Object { - "marginLeft": 10, - }, + false, ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View - style={ - Object { - "opacity": 0.3, - } - } - > + <View> <Text numberOfLines={0} style={ @@ -43360,7 +41539,7 @@ exports[`Storyshots Message list message 1`] = ` } > <Text - accessibilityLabel="Temp message" + accessibilityLabel="First message" numberOfLines={0} style={ Array [ @@ -43385,7 +41564,7 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Temp message + First message </Text> </Text> </View> @@ -43394,27 +41573,6 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Editing - </Text> <View accessible={true} focusable={true} @@ -43452,72 +41610,6 @@ exports[`Storyshots Message list message 1`] = ` } } > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> <View style={ Array [ @@ -43525,25 +41617,41 @@ exports[`Storyshots Message list message 1`] = ` "flex": 1, "marginLeft": 46, }, - Object { - "marginLeft": 10, - }, + false, ] } > + <View /> <View style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } + Array [ + Object { + "alignItems": "center", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 56, + "marginBottom": 6, + }, + Object { + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + }, + ] } > <View accessible={true} focusable={true} + hitSlop={ + Object { + "bottom": 12, + "left": 12, + "right": 12, + "top": 12, + } + } onClick={[Function]} onResponderGrant={[Function]} onResponderMove={[Function]} @@ -43554,42 +41662,82 @@ exports[`Storyshots Message list message 1`] = ` style={ Object { "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, + "backgroundColor": "transparent", + "marginHorizontal": 10, "opacity": 1, } } > - <Text - numberOfLines={1} + <ActivityIndicator + animating={true} + color="#9ca2a8" + hidesWhenStopped={true} + size="small" style={ Array [ Object { + "alignItems": "center", "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", + "marginHorizontal": 10, }, Object { - "color": "#0d0e12", + "marginHorizontal": 8, }, ] } - > - diego.mello - </Text> + /> </View> + <RNCSlider + animateTransitions={true} + animationConfig={ + Object { + "delay": 0, + "duration": 250, + "easing": [Function], + } + } + disabled={false} + enabled={true} + inverted={false} + maximumTrackTintColor="#9ca2a8" + maximumValue={0} + minimumTrackTintColor="#1d74f5" + minimumValue={0} + onChange={[Function]} + onRNCSliderSlidingComplete={null} + onRNCSliderSlidingStart={null} + onRNCSliderValueChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + step={0} + style={ + Array [ + Object { + "height": 40, + }, + Object { + "flex": 1, + }, + ] + } + thumbImage={ + Object { + "scale": 2, + "uri": "audio_thumb", + } + } + thumbTintColor={false} + value={0} + /> <Text style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 12, + "fontSize": 14, "fontWeight": "400", - "marginLeft": 8, + "marginHorizontal": 12, "textAlign": "left", }, Object { @@ -43598,12 +41746,28 @@ exports[`Storyshots Message list message 1`] = ` ] } > - 10:00 AM + 00:00 </Text> </View> - <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text - numberOfLines={0} + accessibilityLabel="This is a description" style={ Array [ Object { @@ -43613,69 +41777,28 @@ exports[`Storyshots Message list message 1`] = ` "fontWeight": "400", "textAlign": "left", }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Message being edited" - numberOfLines={0} - style={ Array [ + Object {}, Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message being edited - </Text> + ], + ] + } + > + This is a description </Text> - </View> + </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Removed - </Text> <View accessible={true} focusable={true} @@ -43717,113 +41840,130 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, + "flex": 1, + "marginLeft": 46, }, + false, ] } > + <View /> <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ - Object { - "opacity": 1, - } + Array [ + Object { + "alignItems": "center", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 56, + "marginBottom": 6, + }, + Object { + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + }, + ] } > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 12, + "left": 12, + "right": 12, + "top": 12, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + Object { + "alignItems": "center", + "backgroundColor": "transparent", + "marginHorizontal": 10, + "opacity": 1, + } } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } + <ActivityIndicator + animating={true} + color="#9ca2a8" + hidesWhenStopped={true} + size="small" style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <Text> - <Text + Array [ + Object { + "alignItems": "center", + "backgroundColor": "transparent", + "marginHorizontal": 10, + }, + Object { + "marginHorizontal": 8, + }, + ] + } + /> + </View> + <RNCSlider + animateTransitions={true} + animationConfig={ + Object { + "delay": 0, + "duration": 250, + "easing": [Function], + } + } disabled={false} - onPress={[Function]} + enabled={true} + inverted={false} + maximumTrackTintColor="#9ca2a8" + maximumValue={0} + minimumTrackTintColor="#1d74f5" + minimumValue={0} + onChange={[Function]} + onRNCSliderSlidingComplete={null} + onRNCSliderSlidingStart={null} + onRNCSliderValueChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + step={0} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", + "height": 40, }, Object { - "color": "#0d0e12", + "flex": 1, }, ] } - > - diego.mello - </Text> - + thumbImage={ + Object { + "scale": 2, + "uri": "audio_thumb", + } + } + thumbTintColor={false} + value={0} + /> <Text - accessibilityLabel="Message removed" style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", + "fontSize": 14, "fontWeight": "400", + "marginHorizontal": 12, "textAlign": "left", }, Object { @@ -43832,35 +41972,14 @@ exports[`Storyshots Message list message 1`] = ` ] } > - Message removed + 00:00 </Text> - </Text> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Joined - </Text> <View accessible={true} focusable={true} @@ -43902,113 +42021,130 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, + "flex": 1, + "marginLeft": 46, }, + false, ] } > + <View /> <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ - Object { - "opacity": 1, - } + Array [ + Object { + "alignItems": "center", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 56, + "marginBottom": 6, + }, + Object { + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + }, + ] } > <View + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 12, + "left": 12, + "right": 12, + "top": 12, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + Object { + "alignItems": "center", + "backgroundColor": "transparent", + "marginHorizontal": 10, + "opacity": 1, + } } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } + <ActivityIndicator + animating={true} + color="#9ca2a8" + hidesWhenStopped={true} + size="small" style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "alignItems": "center", + "backgroundColor": "transparent", + "marginHorizontal": 10, + }, + Object { + "marginHorizontal": 8, + }, + ] } /> </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <Text> - <Text + <RNCSlider + animateTransitions={true} + animationConfig={ + Object { + "delay": 0, + "duration": 250, + "easing": [Function], + } + } disabled={false} - onPress={[Function]} + enabled={true} + inverted={false} + maximumTrackTintColor="#9ca2a8" + maximumValue={0} + minimumTrackTintColor="#1d74f5" + minimumValue={0} + onChange={[Function]} + onRNCSliderSlidingComplete={null} + onRNCSliderSlidingStart={null} + onRNCSliderValueChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + step={0} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", + "height": 40, }, Object { - "color": "#0d0e12", + "flex": 1, }, ] } - > - diego.mello - </Text> - + thumbImage={ + Object { + "scale": 2, + "uri": "audio_thumb", + } + } + thumbTintColor={false} + value={0} + /> <Text - accessibilityLabel="has joined the channel" style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", + "fontSize": 14, "fontWeight": "400", + "marginHorizontal": 12, "textAlign": "left", }, Object { @@ -44017,35 +42153,27 @@ exports[`Storyshots Message list message 1`] = ` ] } > - has joined the channel + 00:00 </Text> - </Text> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Room name changed - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message With file 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -44087,12 +42215,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "marginLeft": 16, + "marginTop": 4, }, ] } @@ -44120,9 +42248,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } @@ -44133,7 +42261,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -44161,289 +42289,78 @@ exports[`Storyshots Message list message 1`] = ` }, ] } - > - <Text - accessibilityLabel="Room name changed to: New name by diego.mello" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Room name changed to: New name by diego.mello - </Text> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Message pinned - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, - }, - ] - } > <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "opacity": 1, + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", } } > <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } + <Text + numberOfLines={1} style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] } - /> + > + diego.mello + </Text> </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <Text> <Text - disabled={false} - onPress={[Function]} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, "textAlign": "left", }, Object { - "color": "#0d0e12", + "color": "#9ca2a8", }, ] } > - diego.mello + 10:00 AM </Text> - - <Text - accessibilityLabel="Message pinned" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Message pinned - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Has left the channel - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, - }, - ] - } - > + </View> + <View /> <View accessible={true} focusable={true} @@ -44456,128 +42373,162 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginBottom": 4, + "marginTop": 6, "opacity": 1, } } > <View style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } + <Text style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] } - /> + > + <Text + accessibilityLabel="File.pdf" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + File.pdf + </Text> + </Text> </View> </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > <Text - disabled={false} - onPress={[Function]} + accessibilityLabel="This is a description " style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 16, - "fontWeight": "500", + "fontWeight": "400", "textAlign": "left", }, - Object { - "color": "#0d0e12", - }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], ] } > - diego.mello + This is a description </Text> - - <Text - accessibilityLabel="has left the channel" + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", + "overflow": "hidden", }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], ] } > - has left the channel - </Text> + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - User removed - </Text> <View accessible={true} focusable={true} @@ -44619,16 +42570,14 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, + "flex": 1, + "marginLeft": 46, }, + false, ] } > + <View /> <View accessible={true} focusable={true} @@ -44641,31 +42590,143 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#f3f4f5", + "borderColor": "#e1e5e8", + "borderRadius": 4, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "marginBottom": 4, + "marginTop": 6, "opacity": 1, } } > <View + style={ + Object { + "borderRadius": 4, + "flex": 1, + "flexDirection": "column", + "padding": 15, + } + } + > + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="File.pdf" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + File.pdf + </Text> + </Text> + </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is a description " style={ Array [ Object { - "overflow": "hidden", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is a description + </Text> + <View + style={ + Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "overflow": "hidden", }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], ] } > <FastImageView - resizeMode="cover" + resizeMode="contain" source={ Object { - "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", } } style={ @@ -44679,67 +42740,25 @@ exports[`Storyshots Message list message 1`] = ` } /> </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <Text - accessibilityLabel="User rocket.cat removed by diego.mello" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - User rocket.cat removed by diego.mello </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - User added - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message With image 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -44781,12 +42800,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "marginLeft": 16, + "marginTop": 4, }, ] } @@ -44814,9 +42833,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } @@ -44827,7 +42846,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -44856,52 +42875,207 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <Text - accessibilityLabel="User rocket.cat added by diego.mello" + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } } > - User rocket.cat added by diego.mello - </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View /> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "borderRadius": 4, + "flexDirection": "column", + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "borderRadius": 4, + "borderWidth": 1, + "minHeight": 200, + "overflow": "hidden", + "width": "100%", + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + undefined, + ], + ] + } + > + <FastImageView + onFastImageError={[Function]} + onFastImageLoad={[Function]} + onFastImageLoadEnd={[Function]} + onFastImageLoadStart={[Function]} + onFastImageProgress={[Function]} + resizeMode="cover" + source={ + Object { + "uri": "https://open.rocket.chat/dummypath?rc_uid=y8bd77ptZswPj3EW8&rc_token=79q6lH40W4ZRGLOshDiDiVlQaCc4f_lU9HNdHLAzuHz", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is a description" + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is a description + </Text> + </Text> + </View> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - User muted - </Text> <View accessible={true} focusable={true} @@ -44943,12 +43117,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "marginLeft": 16, + "marginTop": 4, }, ] } @@ -44976,9 +43150,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } @@ -44989,7 +43163,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -45018,52 +43192,255 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <Text - accessibilityLabel="User rocket.cat muted by diego.mello" + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ Object { - "color": "#9ca2a8", - }, - ] + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View /> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "borderRadius": 4, + "flexDirection": "column", + "opacity": 1, + } } > - User rocket.cat muted by diego.mello - </Text> + <View> + <View + style={ + Array [ + Object { + "borderRadius": 4, + "borderWidth": 1, + "minHeight": 200, + "overflow": "hidden", + "width": "100%", + }, + Object { + "borderColor": "#e1e5e8", + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + undefined, + ], + ] + } + > + <FastImageView + onFastImageError={[Function]} + onFastImageLoad={[Function]} + onFastImageLoadEnd={[Function]} + onFastImageLoadStart={[Function]} + onFastImageProgress={[Function]} + resizeMode="cover" + source={ + Object { + "uri": "https://open.rocket.chat/dummypath?rc_uid=y8bd77ptZswPj3EW8&rc_token=79q6lH40W4ZRGLOshDiDiVlQaCc4f_lU9HNdHLAzuHz", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is a description " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is a description + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], + ] + } + > + <FastImageView + resizeMode="contain" + source={ + Object { + "priority": "high", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </Text> + </View> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - User unmuted - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message With video 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -45105,12 +43482,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "marginLeft": 16, + "marginTop": 4, }, ] } @@ -45138,9 +43515,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } @@ -45151,7 +43528,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -45180,103 +43557,77 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <Text - accessibilityLabel="User rocket.cat unmuted by diego.mello" + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } } > - User rocket.cat unmuted by diego.mello - </Text> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Role added - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, - }, - ] - } - > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View /> <View accessible={true} focusable={true} @@ -45289,31 +43640,104 @@ exports[`Storyshots Message list message 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "alignItems": "center", + "backgroundColor": "#1f2329", + "borderRadius": 4, + "flex": 1, + "height": 150, + "justifyContent": "center", + "marginBottom": 6, "opacity": 1, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#ffffff", + "fontSize": 54, }, + undefined, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is a description " + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is a description + </Text> + <View + style={ + Array [ + Object { + "overflow": "hidden", }, + Array [ + Object { + "height": 20, + "width": 20, + }, + Object {}, + ], ] } > <FastImageView - resizeMode="cover" + resizeMode="contain" source={ Object { - "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/emoji-custom/nyan_rocket.png", } } style={ @@ -45327,67 +43751,12 @@ exports[`Storyshots Message list message 1`] = ` } /> </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <Text - accessibilityLabel="rocket.cat was set admin by diego.mello" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - rocket.cat was set admin by diego.mello </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Role removed - </Text> <View accessible={true} focusable={true} @@ -45429,12 +43798,12 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, Object { - "marginLeft": 16, + "marginTop": 4, }, ] } @@ -45462,9 +43831,9 @@ exports[`Storyshots Message list message 1`] = ` "overflow": "hidden", }, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "borderRadius": 4, + "height": 36, + "width": 36, }, ] } @@ -45475,7 +43844,7 @@ exports[`Storyshots Message list message 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", } } style={ @@ -45504,52 +43873,139 @@ exports[`Storyshots Message list message 1`] = ` ] } > - <Text - accessibilityLabel="rocket.cat is no longer admin by diego.mello" + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ Object { - "color": "#9ca2a8", - }, - ] + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View /> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "backgroundColor": "#1f2329", + "borderRadius": 4, + "flex": 1, + "height": 150, + "justifyContent": "center", + "marginBottom": 6, + "opacity": 1, + } } > - rocket.cat is no longer admin by diego.mello - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 54, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Changed description - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Message Without header 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View accessible={true} focusable={true} @@ -45591,1317 +44047,1748 @@ exports[`Storyshots Message list message 1`] = ` style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - Object { - "marginLeft": 16, + "flex": 1, + "marginLeft": 46, }, + false, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View + <View> + <Text + numberOfLines={0} style={ Array [ Object { - "overflow": "hidden", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, + undefined, Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "color": "#2f343d", }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } + <Text + accessibilityLabel="Message" + numberOfLines={0} style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item Alerts 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "color": "white", + "fontSize": 20, }, + undefined, Object { - "marginLeft": 10, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <Text - accessibilityLabel="Room description changed to: new description by diego.mello" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Room description changed to: new description by diego.mello - </Text> - </View> +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> </View> </View> </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, + <View + pointerEvents="box-none" + style={ Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Changed announcement - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } } - } - > - <View> + > <View style={ - Array [ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", + "translateX": 0, }, - undefined, - ] + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > <View style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "overflow": "hidden", }, Object { - "marginLeft": 16, + "borderRadius": 4, + "height": 48, + "width": 48, }, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + <FastImageView + resizeMode="cover" + source={ Object { - "opacity": 1, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> + } + /> </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, Object { - "marginLeft": 10, + "flex": 1, }, ] } > <Text - accessibilityLabel="Room announcement changed to: new announcement by diego.mello" + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flex": 1, "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", }, ] } > - Room announcement changed to: new announcement by diego.mello + rocket.cat </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Changed topic - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } - } - > - <View> + > <View style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ Object { - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "color": "white", + "fontSize": 20, }, + undefined, Object { - "marginLeft": 16, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View +  + </Text> + <Text style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", }, Object { - "marginLeft": 10, + "color": "#ffffff", }, ] } > - <Text - accessibilityLabel="Room topic changed to: new topic by diego.mello" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Room topic changed to: new topic by diego.mello - </Text> - </View> + Read + </Text> </View> </View> </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, + <View + pointerEvents="box-none" + style={ Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Changed type - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } } - } - > - <View> + > <View style={ - Array [ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", + "translateX": 0, }, - undefined, - ] + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > <View style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "overflow": "hidden", }, Object { - "marginLeft": 16, + "borderRadius": 4, + "height": 48, + "width": 48, }, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + <FastImageView + resizeMode="cover" + source={ Object { - "opacity": 1, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> + } + /> </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, Object { - "marginLeft": 10, + "flex": 1, }, ] } > <Text - accessibilityLabel="Room type changed to: public by diego.mello" + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flex": 1, "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", }, ] } > - Room type changed to: public by diego.mello + unread </Text> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Toggle e2e encryption - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } - } - > - <View> + > <View style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ Object { - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "color": "white", + "fontSize": 20, }, + undefined, Object { - "marginLeft": 16, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View +  + </Text> + <Text style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", }, Object { - "marginLeft": 10, + "color": "#ffffff", }, ] } > - <Text - accessibilityLabel="This room's encryption has been disabled by diego.mello" - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - This room's encryption has been disabled by diego.mello - </Text> - </View> + Read + </Text> </View> </View> </View> - </View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } } - } - > - <View> + > <View style={ - Array [ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", + "translateX": 0, }, - undefined, - ] + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ - Object { - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > <View style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "overflow": "hidden", }, Object { - "marginLeft": 16, + "borderRadius": 4, + "height": 48, + "width": 48, }, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + <FastImageView + resizeMode="cover" + source={ Object { - "opacity": 1, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> + } + /> </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, Object { - "marginLeft": 10, + "flex": 1, }, ] } > <Text - accessibilityLabel="This room's encryption has been enabled by diego.mello" + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", + "color": "#cbced1", "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", }, - ] - } - > - This room's encryption has been enabled by diego.mello - </Text> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Ignored - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + unread + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + +999 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } - } - > - <View> + > <View style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ Object { - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "borderRadius": 2, - "height": 20, - "width": 20, + "color": "white", + "fontSize": 20, }, + undefined, Object { - "marginLeft": 16, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 2, - "height": 20, - "width": 20, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=20", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View +  + </Text> + <Text style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", }, Object { - "marginLeft": 10, + "color": "#ffffff", }, ] } > - <View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Message ignored. Tap to display it. - </Text> - </View> - </View> + Read + </Text> </View> </View> </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, + <View + pointerEvents="box-none" + style={ Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Custom style - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } } - } - > - <View> + > <View style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, undefined, Object { - "backgroundColor": "#ddd", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, }, ], - ] + "width": 750, + } } > - <View + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "flexDirection": "row", - } + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > <View style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "overflow": "hidden", }, Object { - "marginTop": 4, + "borderRadius": 4, + "height": 48, + "width": 48, }, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } style={ Object { - "opacity": 1, + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, } } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> + /> </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, Object { - "marginLeft": 10, + "flex": 1, }, ] } > - <View + <Text + allowFontScaling={false} style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ + Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ + "color": "#cbced1", + "fontSize": 16, + }, Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", + "height": 16, + "textAlignVertical": "center", + "width": 16, }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + user mentions + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F5455C", + "minWidth": 21, + }, + undefined, + ] + } + > <Text - numberOfLines={0} + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", + "fontSize": 13, + "fontWeight": "600", "textAlign": "left", }, undefined, Object { - "color": "#2f343d", + "color": "#ffffff", }, ] } > - <Text - accessibilityLabel="Message" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Message - </Text> + 1 </Text> </View> </View> @@ -46909,5688 +45796,476 @@ exports[`Storyshots Message list message 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown emphasis - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } - } - > - <View> + > <View style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ Object { - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "borderRadius": 4, - "height": 36, - "width": 36, + "color": "white", + "fontSize": 20, }, + undefined, Object { - "marginTop": 4, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View +  + </Text> + <Text style={ Array [ Object { - "flex": 1, - "marginLeft": 46, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", }, Object { - "marginLeft": 10, + "color": "#ffffff", }, ] } > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Italic with single " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Italic with single - </Text> - <Text - accessibilityLabel="underscore" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontStyle": "italic", - }, - ], - ] - } - > - underscore - </Text> - <Text - accessibilityLabel=" or double " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - or double - </Text> - <Text - accessibilityLabel="underscores" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontStyle": "italic", - }, - ], - ] - } - > - underscores - </Text> - <Text - accessibilityLabel=". Bold with single " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - . Bold with single - </Text> - <Text - accessibilityLabel="asterisk" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontWeight": "bold", - }, - ], - ] - } - > - asterisk - </Text> - <Text - accessibilityLabel=" or double " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - or double - </Text> - <Text - accessibilityLabel="asterisks" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "fontWeight": "bold", - }, - ], - ] - } - > - asterisks - </Text> - <Text - accessibilityLabel=". Strikethrough with single " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - . Strikethrough with single - </Text> - <Text - accessibilityLabel="Strikethrough" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "textDecorationLine": "line-through", - }, - ], - ] - } - > - Strikethrough - </Text> - <Text - accessibilityLabel=" or double " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - or double - </Text> - <Text - accessibilityLabel="Strikethrough" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "textDecorationLine": "line-through", - }, - Object { - "textDecorationLine": "line-through", - }, - ], - ] - } - > - Strikethrough - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown headers - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="H1" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 24, - "fontWeight": "700", - "textAlign": "left", - }, - ], - ] - } - > - H1 - </Text> - </Text> - <Text - numberOfLines={0} - style={ - Array [ - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="H2" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 22, - "fontWeight": "700", - "textAlign": "left", - }, - ], - ] - } - > - H2 - </Text> - </Text> - <Text - numberOfLines={0} - style={ - Array [ - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="H3" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 20, - "fontWeight": "600", - "textAlign": "left", - }, - ], - ] - } - > - H3 - </Text> - </Text> - <Text - numberOfLines={0} - style={ - Array [ - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="H4" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 18, - "fontWeight": "600", - "textAlign": "left", - }, - ], - ] - } - > - H4 - </Text> - </Text> - <Text - numberOfLines={0} - style={ - Array [ - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="H5" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "textAlign": "left", - }, - ], - ] - } - > - H5 - </Text> - </Text> - <Text - numberOfLines={0} - style={ - Array [ - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="H6" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "500", - "textAlign": "left", - }, - ], - ] - } - > - H6 - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown links - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Support " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Support - </Text> - <Text - onLongPress={[Function]} - onPress={[Function]} - style={ - Object { - "backgroundColor": "transparent", - "color": "#1d74f5", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - } - } - > - <Text - accessibilityLabel="Google" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - ], - ] - } - > - Google - </Text> - </Text> - <Text - accessibilityLabel=" " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - onLongPress={[Function]} - onPress={[Function]} - style={ - Object { - "backgroundColor": "transparent", - "color": "#1d74f5", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - } - } - > - <Text - accessibilityLabel="I\`m an inline-style link" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - ], - ] - } - > - I\`m an inline-style link - </Text> - </Text> - <Text - accessibilityLabel=" " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - - </Text> - <Text - onLongPress={[Function]} - onPress={[Function]} - style={ - Object { - "backgroundColor": "transparent", - "color": "#1d74f5", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - } - } - > - <Text - accessibilityLabel="https://google.com" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - ], - ] - } - > - https://google.com - </Text> - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Starting with empty link - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="<- No link should render" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - <- No link should render - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown image - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Image - source={ - Object { - "uri": "https://play.google.com/intl/en_us/badges/images/badge_new.png", - } - } - style={ - Object { - "height": 300, - "resizeMode": "contain", - "width": 300, - } - } - /> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown code - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Inline " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Inline - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", - }, - ] - } - > - code - </Text> - <Text - accessibilityLabel=" has " - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - has - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "textAlign": "left", - }, - ] - } - > - back-ticks around - </Text> - <Text - accessibilityLabel=" it." - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - it. - </Text> - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "#f1f2f4", - "borderColor": "#f1f2f4", - "borderRadius": 4, - "borderWidth": 1, - "color": "#2f343d", - "fontFamily": "Courier New", - "fontWeight": "400", - "padding": 4, - "textAlign": "left", - }, - ] - } - > - Code block - - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown quote - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <View - style={ - Object { - "alignItems": "flex-start", - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "height": "100%", - "marginRight": 5, - "width": 2, - }, - Object { - "backgroundColor": "#e1e5e8", - }, - ] - } - /> - <View - style={ - Object { - "flex": 1, - } - } - > - <Text - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - undefined, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Quote" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - undefined, - Object { - "alignItems": "flex-start", - "flexDirection": "row", - "flexWrap": "wrap", - "justifyContent": "flex-start", - "marginBottom": 0, - "marginTop": 0, - }, - ], - ] - } - > - Quote - </Text> - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - Object { - "marginBottom": 0, - "marginTop": 30, - }, - ] - } - > - Markdown table - </Text> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View> - <View - style={ - Array [ - Object { - "flexDirection": "column", - "paddingHorizontal": 14, - "paddingVertical": 4, - "width": "100%", - }, - undefined, - ] - } - > - <View - style={ - Object { - "flexDirection": "row", - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - Object { - "marginTop": 4, - }, - ] - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 36, - "width": 36, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - </View> - <View - style={ - Array [ - Object { - "flex": 1, - "marginLeft": 46, - }, - Object { - "marginLeft": 10, - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "space-between", - } - } - > - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "flexShrink": 1, - "opacity": 1, - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "500", - "lineHeight": 22, - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - diego.mello - </Text> - </View> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 12, - "fontWeight": "400", - "marginLeft": 8, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 10:00 AM - </Text> - </View> - <View> - <View - accessible={true} - focusable={true} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "opacity": 1, - } - } - > - <RCTScrollView - contentContainerStyle={ - Object { - "width": 200, - } - } - scrollEnabled={false} - showsVerticalScrollIndicator={false} - style={ - Array [ - Object { - "borderBottomWidth": 1, - "borderRightWidth": 1, - }, - Object { - "borderColor": "#e1e5e8", - "maxHeight": 300, - "maxWidth": 200, - }, - ] - } - > - <View> - <View - style={ - Array [ - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "flexDirection": "row", - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderBottomWidth": 1, - }, - ] - } - > - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderRightWidth": 1, - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="First Header" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - First Header - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Second Header" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Second Header - </Text> - </Text> - </View> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "row", - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderBottomWidth": 1, - }, - ] - } - > - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderRightWidth": 1, - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content from cell 1" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content from cell 1 - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content from cell 2" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content from cell 2 - </Text> - </Text> - </View> - </View> - <View - style={ - Array [ - Object { - "flexDirection": "row", - }, - Object { - "borderColor": "#e1e5e8", - }, - ] - } - > - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "borderRightWidth": 1, - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content in the first column" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content in the first column - </Text> - </Text> - </View> - <View - style={ - Array [ - Object { - "justifyContent": "flex-start", - "paddingHorizontal": 13, - "paddingVertical": 6, - }, - Object { - "borderColor": "#e1e5e8", - }, - Object { - "width": 100, - }, - ] - } - > - <Text - style={ - Array [ - null, - Object { - "color": "#2f343d", - }, - ] - } - > - <Text - accessibilityLabel="Content in the second column" - numberOfLines={0} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Array [ - Object {}, - Object { - "borderLeftWidth": 1, - "borderTopWidth": 1, - }, - undefined, - undefined, - ], - ] - } - > - Content in the second column - </Text> - </Text> - </View> - </View> - </View> - </View> - </RCTScrollView> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontStyle": "italic", - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Click to see full table - </Text> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </View> -</RCTScrollView> -`; - -exports[`Storyshots RoomHeader icons 1`] = ` -Array [ - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="private channel" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="private channel" - > - private channel - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="public channel" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="public channel" - > - public channel - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="discussion" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - accessibilityLabel="discussion" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="discussion" - > - discussion - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="omnichannel" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="omnichannel" - > - omnichannel - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="private team" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="private team" - > - private team - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="public team" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="public team" - > - public team - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="group dm" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="group dm" - > - group dm - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="online dm" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#2de0a5", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#2de0a5", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="online dm" - > - online dm - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="away dm" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffd21f", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#ffd21f", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="away dm" - > - away dm - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="busy dm" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#f5455c", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#f5455c", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="busy dm" - > - busy dm - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="loading dm" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#9ea2a8", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#9ea2a8", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="loading dm" - > - loading dm - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="offline dm" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="offline dm" - > - offline dm + Read </Text> </View> </View> </View> - </View> - </RNCSafeAreaView>, -] -`; - -exports[`Storyshots RoomHeader landscape 1`] = ` -Array [ - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, - } - } - testID="room-header" - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - > - title - </Text> - </View> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, + "backgroundColor": "#54585e", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - testID="room-header" > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 12.8, - }, - ] - } - > - title - </Text> - </View> <Text - accessibilityLabel="subtitle" - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "400", - "textAlign": "left", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "color": "#9ca2a8", - "fontSize": 9.600000000000001, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - subtitle +  </Text> - </View> - </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > - <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + Favorite + </Text> + </View> + <View style={ Object { - "flex": 1, + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - testID="room-header" > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 12.8, - }, - ] - } - testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> - </View> <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "color": "#2f343d", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", - "fontSize": 9.600000000000001, + "color": "#ffffff", }, ] } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + Hide </Text> </View> </View> - </View> - </RNCSafeAreaView>, -] -`; - -exports[`Storyshots RoomHeader themes 1`] = ` -Array [ - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, } } - testID="room-header" > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - > - title - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - <Text - accessibilityLabel="subtitle" - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "400", - "textAlign": "left", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "borderColor": "#cbcbcc", }, ] } > - subtitle - </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + group mentions + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F38C39", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> </View> </View> </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#0b182c", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#0b182c", - "borderBottomColor": "#2F3A4B", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, + "backgroundColor": "#1d74f5", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } - testID="room-header" > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -52599,18 +46274,10 @@ Array [ style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#f9f9f9", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -52620,342 +46287,414 @@ Array [ ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#f9f9f9", - "fontSize": 16, + "color": "#ffffff", }, ] } > - title + Read </Text> </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text - accessibilityLabel="subtitle" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#e8ebed", + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9297a2", - "fontSize": 12, + "color": "#ffffff", }, ] } > - subtitle + Hide </Text> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#0d0d0d", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#0d0d0d", - "borderBottomColor": "#323232", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, } } - testID="room-header" > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#f9f9f9", - }, - undefined, - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#f9f9f9", - "fontSize": 16, - }, - ] - } - > - title - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - <Text - accessibilityLabel="subtitle" - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#e8ebed", - }, - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "400", - "textAlign": "left", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "color": "#b2b8c6", - "fontSize": 12, + "borderColor": "#cbcbcc", }, ] } > - subtitle - </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + thread unread + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#1d74f5", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> </View> </View> </View> - </RNCSafeAreaView>, -] -`; - -exports[`Storyshots RoomHeader thread 1`] = ` -Array [ - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > + <View> <View - style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } - } - > - <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View style={ Object { - "flex": 1, + "backgroundColor": "#1d74f5", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } - testID="room-header" > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="title" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - > - title - </Text> - </View> - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -52964,18 +46703,10 @@ Array [ style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -52985,154 +46716,414 @@ Array [ ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#ffffff", }, ] } > - parent title + Read </Text> </View> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View - accessibilityLabel="markdown -preview -#3 -4 -5" - accessible={true} - focusable={true} - hitSlop={ + style={ Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View style={ Object { - "flex": 1, + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - testID="room-header" > - <View + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "alignItems": "center", - "flexDirection": "row", - } + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > - <Text - accessibilityLabel="markdown preview #3 4 5" - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", + "overflow": "hidden", }, Object { - "color": "#2f343d", + "borderRadius": 4, + "height": 48, + "width": 48, }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, Object { - "color": "#0C0D0F", - "fontSize": 16, + "flex": 1, }, ] } - testID="markdown -preview -#3 -4 -5" > - markdown preview #3 4 5 - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + thread unread user + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F5455C", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> </View> + </View> + </View> + </View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -53141,18 +47132,10 @@ preview style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -53162,240 +47145,414 @@ preview ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#ffffff", }, ] } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + Read </Text> </View> </View> </View> - </View> - </RNCSafeAreaView>, -] -`; - -exports[`Storyshots RoomHeader title and subtitle 1`] = ` -Array [ - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ + style={ Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View style={ Object { - "flex": 1, + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - testID="room-header" > - <View + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "alignItems": "center", - "flexDirection": "row", - } + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - numberOfLines={1} + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, Object { - "color": "#0C0D0F", - "fontSize": 16, + "flex": 1, }, ] } - testID="title" > - title - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + thread unread group + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F38C39", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> </View> </View> </View> </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, + "backgroundColor": "#1d74f5", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } - testID="room-header" > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -53404,18 +47561,10 @@ Array [ style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -53425,267 +47574,414 @@ Array [ ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#0C0D0F", - "fontSize": 16, + "color": "#ffffff", }, ] } - testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + Read </Text> </View> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, + "backgroundColor": "#54585e", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } - testID="room-header" > - <View + <Text + allowFontScaling={false} style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - > - title - </Text> - </View> +  + </Text> <Text - accessibilityLabel="subtitle" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "color": "#ffffff", }, ] } > - subtitle + Hide </Text> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ + style={ Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, } } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + user mentions priority 1 + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F5455C", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View style={ Object { - "flex": 1, + "backgroundColor": "#1d74f5", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } - testID="room-header" > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -53694,18 +47990,10 @@ Array [ style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -53715,303 +48003,414 @@ Array [ ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#0C0D0F", - "fontSize": 16, + "color": "#ffffff", }, ] } > - title + Read </Text> </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#2f343d", + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "color": "#ffffff", }, ] } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + Hide </Text> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, } } - testID="room-header" > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "400", - "textAlign": "left", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "borderColor": "#cbcbcc", }, ] } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> - </View> - </View> - </View> - </RNCSafeAreaView>, -] -`; - -exports[`Storyshots RoomHeader typing 1`] = ` -Array [ - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + group mentions priority 2 + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F38C39", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> <View + pointerEvents="box-none" style={ - Object { - "flex": 1, - "paddingHorizontal": 12, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, + "backgroundColor": "#1d74f5", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } - testID="room-header" > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -54020,18 +48419,10 @@ Array [ style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -54041,140 +48432,427 @@ Array [ ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#0C0D0F", - "fontSize": 16, + "color": "#ffffff", }, ] } > - title + Read </Text> </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "color": "#ffffff", }, ] } > - <Text - style={ + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", - } - } - > - user 1 - - </Text> - is typing - ... + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide </Text> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ + style={ Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, } } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + thread unread priority 3 + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#1d74f5", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item Basic 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View style={ Object { - "flex": 1, + "backgroundColor": "#1d74f5", + "height": 150, "justifyContent": "center", - "opacity": 1, + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } - testID="room-header" > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -54183,18 +48861,10 @@ Array [ style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -54204,260 +48874,340 @@ Array [ ] } > -  +  </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#0C0D0F", - "fontSize": 16, + "color": "#ffffff", }, ] } > - title + Read </Text> </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flexShrink": 1, "fontFamily": "System", - "fontWeight": "400", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "color": "#ffffff", }, ] } > - <Text - style={ + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", - } - } - > - user 1 and user 2 - - </Text> - are typing - ... + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide </Text> </View> </View> - </View> - </RNCSafeAreaView>, - <RNCSafeAreaView - edges={ - Array [ - "top", - "left", - "right", - ] - } - style={ - Object { - "backgroundColor": "#EEEFF1", - } - } - > - <View - style={ - Array [ - Object { - "elevation": 4, - "flexDirection": "row", - "height": 44, - "justifyContent": "center", - }, - Object { - "backgroundColor": "#EEEFF1", - "borderBottomColor": "#B2B2B2", - "borderBottomWidth": 0.5, - "elevation": 0, - }, - ] - } - > <View style={ Object { - "flex": 1, - "paddingHorizontal": 12, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View - accessibilityLabel="title" - accessible={true} - focusable={true} - hitSlop={ - Object { - "bottom": 5, - "left": 5, - "right": 5, - "top": 5, - } - } - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} style={ Object { - "flex": 1, - "justifyContent": "center", - "opacity": 1, + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, } } - testID="room-header" > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - } + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - numberOfLines={1} - style={ - Array [ + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0C0D0F", - "fontSize": 16, - }, - ] - } - > - title - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - <Text - numberOfLines={1} + <View style={ Array [ Object { - "backgroundColor": "transparent", - "flexShrink": 1, - "fontFamily": "System", - "fontWeight": "400", - "textAlign": "left", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "color": "#9ca2a8", - "fontSize": 12, + "borderColor": "#cbcbcc", }, ] } > - <Text + <View style={ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - } + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] } > - user 1, user 2, user 3, user 4, user 5 - - </Text> - are typing - ... - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> </View> </View> </View> - </RNCSafeAreaView>, -] + </View> +</RCTScrollView> `; -exports[`Storyshots RoomItem list roomitem 1`] = ` +exports[`Storyshots Room Item Last Message 1`] = ` <RCTScrollView style={ Object { - "backgroundColor": "#efeff4", + "backgroundColor": "#ffffff", } } > <View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Basic - </Text> <View> <View pointerEvents="box-none" @@ -54760,17 +49510,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -54836,29 +49581,75 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > rocket.cat </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="No Message" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + No Message + </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - User - </Text> <View> <View pointerEvents="box-none" @@ -55129,7 +49920,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } style={ @@ -55161,17 +49952,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -55235,7 +50021,71 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > - diego.mello + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="2" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 2 </Text> </View> </View> @@ -55544,17 +50394,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -55618,31 +50463,77 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="You: 1" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + You: 1 </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Type - </Text> <View> <View pointerEvents="box-none" @@ -55945,17 +50836,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -56021,6 +50907,70 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > rocket.cat </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> </View> </View> </View> @@ -56296,7 +51246,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/room/abc?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } style={ @@ -56328,17 +51278,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -56346,17 +51291,29 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": undefined, + "color": "#cbced1", "fontSize": 16, }, Array [ Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "height": 16, + "textAlignVertical": "center", + "width": 16, }, - undefined, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], ], Object { "fontFamily": "custom", @@ -56367,7 +51324,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -56383,7 +51340,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - undefined, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { "color": "#0d0e12", }, @@ -56392,6 +51354,121 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > rocket.cat </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ], + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -56667,7 +51744,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/room/abc?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } style={ @@ -56699,17 +51776,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -56717,17 +51789,29 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": undefined, + "color": "#cbced1", "fontSize": 16, }, Array [ Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "height": 16, + "textAlignVertical": "center", + "width": 16, }, - undefined, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], ], Object { "fontFamily": "custom", @@ -56738,7 +51822,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -56754,7 +51838,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - undefined, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { "color": "#0d0e12", }, @@ -56763,6 +51852,121 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > rocket.cat </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ], + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + +999 + </Text> + </View> </View> </View> </View> @@ -57038,7 +52242,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/room/abc?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } style={ @@ -57070,17 +52274,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > <Text @@ -57088,17 +52287,29 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": undefined, + "color": "#cbced1", "fontSize": 16, }, Array [ Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "height": 16, + "textAlignVertical": "center", + "width": 16, }, - undefined, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], ], Object { "fontFamily": "custom", @@ -57109,7 +52320,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -57125,7 +52336,12 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - undefined, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { "color": "#0d0e12", }, @@ -57134,11 +52350,139 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` > rocket.cat </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ], + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#1d74f5", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item Type 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View> <View pointerEvents="box-none" @@ -57409,7 +52753,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/room/abc?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", } } style={ @@ -57459,17 +52803,29 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": undefined, + "color": "#cbced1", "fontSize": 16, }, Array [ Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "height": 16, + "textAlignVertical": "center", + "width": 16, }, - undefined, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], ], Object { "fontFamily": "custom", @@ -57480,7 +52836,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -57780,7 +53136,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", } } style={ @@ -57851,7 +53207,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -58151,7 +53507,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/room/abc?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", } } style={ @@ -58252,24 +53608,6 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - User status - </Text> <View> <View pointerEvents="box-none" @@ -58540,7 +53878,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", } } style={ @@ -58590,29 +53928,17 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#2de0a5", + "color": undefined, "fontSize": 16, }, Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "marginRight": 4, }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#2de0a5", - }, - ], + Object { + "color": "#0d0e12", + }, + undefined, ], Object { "fontFamily": "custom", @@ -58623,7 +53949,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -58923,7 +54249,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", } } style={ @@ -58973,29 +54299,17 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#ffd21f", + "color": undefined, "fontSize": 16, }, Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "marginRight": 4, }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#ffd21f", - }, - ], + Object { + "color": "#0d0e12", + }, + undefined, ], Object { "fontFamily": "custom", @@ -59006,7 +54320,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -59356,29 +54670,17 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#f5455c", + "color": undefined, "fontSize": 16, }, Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "marginRight": 4, }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#f5455c", - }, - ], + Object { + "color": "#0d0e12", + }, + undefined, ], Object { "fontFamily": "custom", @@ -59389,7 +54691,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -59689,7 +54991,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", } } style={ @@ -59739,29 +55041,17 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#cbced1", + "color": undefined, "fontSize": 16, }, Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "marginRight": 4, }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], + Object { + "color": "#0d0e12", + }, + undefined, ], Object { "fontFamily": "custom", @@ -59772,7 +55062,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -59802,6 +55092,19 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` </View> </View> </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item User 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View> <View pointerEvents="box-none" @@ -60072,7 +55375,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` Object { "headers": undefined, "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=48", } } style={ @@ -60122,7 +55425,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#9ea2a8", + "color": "#cbced1", "fontSize": 16, }, Array [ @@ -60142,7 +55445,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` undefined, ], Object { - "color": "#9ea2a8", + "color": "#cbced1", }, ], ], @@ -60155,7 +55458,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -60178,7 +55481,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > - rocket.cat + diego.mello </Text> </View> </View> @@ -60561,31 +55864,26 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > - rocket.cat + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> </View> </View> </View> </View> </View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Alerts - </Text> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item User status 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> <View> <View pointerEvents="box-none" @@ -60906,7 +56204,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#cbced1", + "color": "#2de0a5", "fontSize": 16, }, Array [ @@ -60926,7 +56224,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` undefined, ], Object { - "color": "#cbced1", + "color": "#2de0a5", }, ], ], @@ -60939,7 +56237,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -60955,12 +56253,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + undefined, Object { "color": "#0d0e12", }, @@ -61294,7 +56587,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#cbced1", + "color": "#ffd21f", "fontSize": 16, }, Array [ @@ -61314,7 +56607,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` undefined, ], Object { - "color": "#cbced1", + "color": "#ffd21f", }, ], ], @@ -61327,7 +56620,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -61343,61 +56636,15 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + undefined, Object { "color": "#0d0e12", }, ] } > - unread + rocket.cat </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#6C727A", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> </View> </View> </View> @@ -61723,7 +56970,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#cbced1", + "color": "#f5455c", "fontSize": 16, }, Array [ @@ -61743,7 +56990,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` undefined, ], Object { - "color": "#cbced1", + "color": "#f5455c", }, ], ], @@ -61756,7 +57003,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -61772,61 +57019,15 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + undefined, Object { "color": "#0d0e12", }, ] } > - unread + rocket.cat </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#6C727A", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - +999 - </Text> - </View> </View> </View> </View> @@ -62201,61 +57402,15 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + undefined, Object { "color": "#0d0e12", }, ] } > - user mentions + rocket.cat </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F5455C", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> </View> </View> </View> @@ -62581,7 +57736,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "#cbced1", + "color": "#9ea2a8", "fontSize": 16, }, Array [ @@ -62601,7 +57756,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` undefined, ], Object { - "color": "#cbced1", + "color": "#9ea2a8", }, ], ], @@ -62614,7 +57769,7 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text ellipsizeMode="tail" @@ -62630,61 +57785,15 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + undefined, Object { "color": "#0d0e12", }, ] } > - group mentions - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F38C39", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> + rocket.cat + </Text> </View> </View> </View> @@ -63059,107 +58168,500 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` "lineHeight": 20, "textAlign": "left", }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + undefined, Object { "color": "#0d0e12", }, ] } > - thread unread + rocket.cat </Text> - <View - style={ + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots RoomHeader icons 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="private channel" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, Array [ Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, + "marginRight": 4, }, Object { - "backgroundColor": "#1d74f5", - "minWidth": 21, + "color": "#0d0e12", }, undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="private channel" + > + private channel + </Text> </View> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="public channel" + accessible={true} + focusable={true} + hitSlop={ Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="public channel" + > + public channel + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } + } + > + <View + accessibilityLabel="discussion" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "opacity": 1, + } + } + testID="room-header" + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + accessibilityLabel="discussion" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="discussion" + > + discussion + </Text> + </View> + </View> + </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="omnichannel" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -63168,10 +58670,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -63181,414 +58691,237 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="omnichannel" > - Read + omnichannel </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="private team" + accessible={true} + focusable={true} + hitSlop={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View +  + </Text> + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", }, Object { - "flex": 1, + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="private team" > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread user - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F5455C", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> + private team + </Text> </View> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="public team" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -63597,10 +58930,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -63610,414 +58951,237 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="public team" > - Read + public team </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="group dm" + accessible={true} + focusable={true} + hitSlop={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View +  + </Text> + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", }, Object { - "flex": 1, + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="group dm" > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread group - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F38C39", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> + group dm + </Text> </View> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="online dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -64026,10 +59190,30 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": "#2de0a5", + "fontSize": 16, }, - undefined, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#2de0a5", + }, + ], + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -64039,414 +59223,249 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="online dm" > - Read + online dm </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="away dm" + accessible={true} + focusable={true} + hitSlop={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#ffd21f", + "fontSize": 16, }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#ffd21f", + }, + ], + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View +  + </Text> + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", }, Object { - "flex": 1, + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="away dm" > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - user mentions priority 1 - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F5455C", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> + away dm + </Text> </View> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="busy dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -64455,10 +59474,30 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": "#f5455c", + "fontSize": 16, }, - undefined, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#f5455c", + }, + ], + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -64468,414 +59507,249 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="busy dm" > - Read + busy dm </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="loading dm" + accessible={true} + focusable={true} + hitSlop={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#9ea2a8", + "fontSize": 16, }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#9ea2a8", + }, + ], + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View +  + </Text> + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", }, Object { - "flex": 1, + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="loading dm" > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - group mentions priority 2 - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F38C39", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> + loading dm + </Text> </View> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="offline dm" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -64884,10 +59758,30 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": "#cbced1", + "fontSize": 16, }, - undefined, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -64897,432 +59791,241 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="offline dm" > - Read + offline dm </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader landscape 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View +  + </Text> + <Text + numberOfLines={1} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", }, Object { - "flex": 1, + "color": "#0C0D0F", + "fontSize": 16, }, ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread priority 3 - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#1d74f5", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> + title + </Text> </View> </View> </View> </View> - <Text + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View style={ Array [ Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", }, Object { - "color": "#0d0e12", + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, }, - undefined, ] } > - Last Message - </Text> - <View> <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -65331,10 +60034,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -65344,427 +60055,137 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 12.8, }, ] } > - Read + title </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> <Text + accessibilityLabel="subtitle" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#2f343d", }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#9ca2a8", + "fontSize": 9.600000000000001, }, ] } > - Hide + subtitle </Text> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + accessible={true} + focusable={true} + hitSlop={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - undefined, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - undefined, - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="No Message" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - No Message - </Text> - </View> - </View> - </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -65773,10 +60194,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -65786,427 +60215,303 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 12.8, }, ] } + testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" > - Read + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#2f343d", }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#9ca2a8", + "fontSize": 9.600000000000001, }, ] } > - Hide + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> </View> </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader themes 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "flex": 1, + "justifyContent": "center", + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> </View> - <View + <Text + accessibilityLabel="subtitle" + numberOfLines={1} style={ Array [ Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, Object { - "borderColor": "#cbcbcc", + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, }, ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - undefined, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - undefined, - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="2" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 2 - </Text> - </View> - </View> + subtitle + </Text> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#0b182c", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#0b182c", + "borderBottomColor": "#2F3A4B", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -66215,10 +60520,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#f9f9f9", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -66228,427 +60541,342 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#f9f9f9", + "fontSize": 16, }, ] } > - Read + title </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> <Text + accessibilityLabel="subtitle" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#e8ebed", }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#9297a2", + "fontSize": 12, }, ] } > - Hide + subtitle </Text> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#0d0d0d", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#0d0d0d", + "borderBottomColor": "#323232", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "flex": 1, + "justifyContent": "center", + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#f9f9f9", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#f9f9f9", + "fontSize": 16, + }, + ] + } + > + title + </Text> </View> - <View + <Text + accessibilityLabel="subtitle" + numberOfLines={1} style={ Array [ Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, Object { - "borderColor": "#cbcbcc", + "color": "#e8ebed", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#b2b8c6", + "fontSize": 12, }, ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - undefined, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - undefined, - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="You: 1" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - You: 1 - </Text> - </View> - </View> + subtitle + </Text> </View> </View> </View> - <View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader thread 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="title" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", } } > @@ -66657,10 +60885,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -66670,427 +60906,417 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#9ca2a8", }, ] } > - Read + parent title </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View - style={ + accessibilityLabel="markdown +preview +#3 +4 +5" + accessible={true} + focusable={true} + hitSlop={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, } } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > -  - </Text> - <Text + <Text + accessibilityLabel="markdown preview #3 4 5" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + testID="markdown +preview +#3 +4 +5" + > + markdown preview #3 4 5 + </Text> + </View> + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Hide - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> </View> </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader title and subtitle 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "flex": 1, + "justifyContent": "center", + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", + "marginRight": 4, }, - undefined, Object { "color": "#0d0e12", }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, undefined, - ] - } - > - 10:00 - </Text> - </View> - <View + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] } + testID="title" > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> - </View> + title + </Text> </View> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -67099,10 +61325,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -67112,483 +61346,427 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" > - Read + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> </View> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#54585e", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > -  - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> + </View> <Text + accessibilityLabel="subtitle" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#2f343d", }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#9ca2a8", + "fontSize": 12, }, ] } > - Hide + subtitle </Text> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "flex": 1, + "justifyContent": "center", + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> </View> - <View + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={1} style={ Array [ Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", }, Object { - "borderColor": "#cbcbcc", + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + "fontSize": 12, }, ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ], - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#6C727A", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> - </View> + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -67597,10 +61775,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -67610,483 +61796,306 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } + testID="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" > - Read + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#2f343d", }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#9ca2a8", + "fontSize": 12, }, ] } > - Hide + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> </View> </View> + </View> + </RNCSafeAreaView>, +] +`; + +exports[`Storyshots RoomHeader typing 1`] = ` +Array [ + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "flex": 1, + "justifyContent": "center", + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> </View> - <View + <Text + numberOfLines={1} style={ Array [ Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", }, Object { - "borderColor": "#cbcbcc", + "color": "#9ca2a8", + "fontSize": 12, }, ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ], - ] - } - > - 10:00 - </Text> - </View> - <View + <Text style={ Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", } } > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#6C727A", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - +999 - </Text> - </View> - </View> - </View> + user 1 + + </Text> + is typing + ... + </Text> </View> </View> </View> - <View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View - pointerEvents="box-none" style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] + Object { + "flex": 1, + "paddingHorizontal": 12, + } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, + "flex": 1, "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "opacity": 1, } } + testID="room-header" > <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flexDirection": "row", } } > @@ -68095,10 +62104,18 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` style={ Array [ Object { - "color": "white", - "fontSize": 20, + "color": undefined, + "fontSize": 16, }, - undefined, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { "fontFamily": "custom", "fontStyle": "normal", @@ -68108,444 +62125,231 @@ exports[`Storyshots RoomItem list roomitem 1`] = ` ] } > -  +  </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", }, Object { - "color": "#ffffff", + "color": "#0C0D0F", + "fontSize": 16, }, ] } > - Read + title </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> <Text + numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", + "flexShrink": 1, "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, + "fontWeight": "400", "textAlign": "left", }, Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#9ca2a8", + "fontSize": 12, }, - Object {}, ] } > -  - </Text> - <Text - style={ - Array [ + <Text + style={ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 15, "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide + } + } + > + user 1 and user 2 + + </Text> + are typing + ... </Text> </View> </View> + </View> + </RNCSafeAreaView>, + <RNCSafeAreaView + edges={ + Array [ + "top", + "left", + "right", + ] + } + style={ + Object { + "backgroundColor": "#EEEFF1", + } + } + > + <View + style={ + Array [ + Object { + "elevation": 4, + "flexDirection": "row", + "height": 44, + "justifyContent": "center", + }, + Object { + "backgroundColor": "#EEEFF1", + "borderBottomColor": "#B2B2B2", + "borderBottomWidth": 0.5, + "elevation": 0, + }, + ] + } + > <View style={ Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], + "flex": 1, + "paddingHorizontal": 12, } } > <View + accessibilityLabel="title" + accessible={true} + focusable={true} + hitSlop={ + Object { + "bottom": 5, + "left": 5, + "right": 5, + "top": 5, + } + } + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "flex": 1, + "justifyContent": "center", + "opacity": 1, } } + testID="room-header" > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + numberOfLines={1} + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#0C0D0F", + "fontSize": 16, + }, + ] + } + > + title + </Text> </View> - <View + <Text + numberOfLines={1} style={ Array [ Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontWeight": "400", + "textAlign": "left", }, Object { - "borderColor": "#cbcbcc", + "color": "#9ca2a8", + "fontSize": 12, }, ] } > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#1d74f5", - }, - ], - ] - } - > - 10:00 - </Text> - </View> - <View + <Text style={ Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", } } > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#1d74f5", - "minWidth": 21, - }, - undefined, - ] - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> - </View> - </View> + user 1, user 2, user 3, user 4, user 5 + + </Text> + are typing + ... + </Text> </View> </View> </View> - </View> -</RCTScrollView> + </RNCSafeAreaView>, +] `; exports[`Storyshots ServerItem content 1`] = ` @@ -74005,493 +67809,686 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` </View> <View style={ - Array [ - Object { - "height": 0.5, - }, - undefined, - Object { - "backgroundColor": "#cbcbcc", - }, - ] + Array [ + Object { + "height": 0.5, + }, + undefined, + Object { + "backgroundColor": "#cbcbcc", + }, + ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Action - Buttons 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Action - Select 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Context 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Fields 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Image 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + DatePicker 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + Markdown List 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + Multi Select 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + Overflow 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + Select 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + button 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section + image 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitMessage Section 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Actions 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Contexts and Dividers 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, + } } /> </View> </RCTScrollView> `; -exports[`Storyshots UiKitMessage list uikitmessage 1`] = ` -<RCTSafeAreaView - emulateUnlessSupported={true} +exports[`Storyshots UiKitModal Modal - DatePicker with error 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" style={ - Object { - "backgroundColor": "#fff", - "flex": 1, - } + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] } > - <RCTScrollView - keyboardShouldPersistTaps="always" - style={ - Array [ + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ Object { "backgroundColor": "#fff", "flex": 1, - }, - Object { - "paddingHorizontal": 16, - }, - ] - } - > - <View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + Markdown List - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + Overflow - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + image - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + button - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + Select - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + DatePicker - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Section + Multi Select - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Image - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Context - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Action - Buttons - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Fields - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] } - > - Action - Select - </Text> - </View> - </RCTScrollView> -</RCTSafeAreaView> + } + /> + </View> +</RCTScrollView> `; -exports[`Storyshots UiKitModal list UiKitModal 1`] = ` -<RCTSafeAreaView - emulateUnlessSupported={true} +exports[`Storyshots UiKitModal Modal - Form Input 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" style={ - Object { - "backgroundColor": "#fff", - "flex": 1, - } + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] } > - <RCTScrollView - keyboardShouldPersistTaps="always" - style={ - Array [ + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ Object { "backgroundColor": "#fff", "flex": 1, - }, - Object { - "paddingHorizontal": 16, - }, - ] - } - > - <View> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Modal - Section and Selects - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Modal - Section Accessories - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] - } - > - Modal - Form Input - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] } - > - Modal - Form TextArea - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Form TextArea 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, } - > - Modal - Images - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Images 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, } - > - Modal - Actions - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Input with error 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, } - > - Modal - Contexts and Dividers - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Multilne with error 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, } - > - Modal - Input with error - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Section Accessories 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, } - > - Modal - Multilne with error - </Text> - <Text - style={ - Array [ - Object { - "fontSize": 20, - "fontWeight": "300", - "marginLeft": 10, - "marginVertical": 30, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ] + } + /> + </View> +</RCTScrollView> +`; + +exports[`Storyshots UiKitModal Modal - Section and Selects 1`] = ` +<RCTScrollView + keyboardShouldPersistTaps="always" + style={ + Array [ + Object { + "backgroundColor": "#fff", + "flex": 1, + }, + Object { + "paddingHorizontal": 16, + }, + ] + } +> + <View> + <RCTSafeAreaView + emulateUnlessSupported={true} + style={ + Object { + "backgroundColor": "#fff", + "flex": 1, } - > - Modal - DatePicker with error - </Text> - </View> - </RCTScrollView> -</RCTSafeAreaView> + } + /> + </View> +</RCTScrollView> `; exports[`Storyshots Unread Badge all 1`] = ` diff --git a/storybook/stories/Avatar.js b/storybook/stories/Avatar.js index fb642728baa..9943f832e33 100644 --- a/storybook/stories/Avatar.js +++ b/storybook/stories/Avatar.js @@ -1,11 +1,10 @@ +/* eslint-disable import/no-extraneous-dependencies */ import React from 'react'; -import { ScrollView, StyleSheet, View } from 'react-native'; -import PropTypes from 'prop-types'; +import { StyleSheet } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; -import { themes } from '../../app/constants/colors'; import Avatar from '../../app/containers/Avatar/Avatar'; import Status from '../../app/containers/Status/Status'; -import StoriesSeparator from './StoriesSeparator'; import sharedStyles from '../../app/views/Styles'; const styles = StyleSheet.create({ @@ -16,125 +15,152 @@ const styles = StyleSheet.create({ const server = 'https://open.rocket.chat'; -const Separator = ({ title, theme }) => <StoriesSeparator title={title} theme={theme} />; -Separator.propTypes = { - title: PropTypes.string, - theme: PropTypes.string -}; - -const AvatarStories = ({ theme }) => ( - <ScrollView style={{ backgroundColor: themes[theme].backgroundColor }}> - <Separator title='Avatar by text' theme={theme} /> - <Avatar - text='Avatar' - server={server} - size={56} - /> - <Separator title='Avatar by roomId' theme={theme} /> - <Avatar - type='p' - rid='devWBbYr7inwupPqK' - server={server} - size={56} - /> - <Separator title='Avatar by url' theme={theme} /> - <Avatar - avatar='https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg' - server={server} - size={56} - /> - <Separator title='Avatar by path' theme={theme} /> - <Avatar - avatar='/avatar/diego.mello' - server={server} - size={56} - /> - <Separator title='With ETag' theme={theme} /> - <Avatar - type='d' - text='djorkaeff.alexandre' - avatarETag='5ag8KffJcZj9m5rCv' - server={server} - size={56} - /> - <Separator title='Without ETag' theme={theme} /> - <Avatar - type='d' - text='djorkaeff.alexandre' - server={server} - size={56} - /> - <Separator title='Emoji' theme={theme} /> - <Avatar - emoji='troll' - getCustomEmoji={() => ({ name: 'troll', extension: 'jpg' })} - server={server} - size={56} - /> - <Separator title='Direct' theme={theme} /> - <Avatar - text='diego.mello' - server={server} - type='d' - size={56} - /> - <Separator title='Channel' theme={theme} /> - <Avatar - text='general' - server={server} - type='c' - size={56} - /> - <Separator title='Touchable' theme={theme} /> - <Avatar - text='Avatar' - server={server} - onPress={() => console.log('Pressed!')} - size={56} - /> - <Separator title='Static' theme={theme} /> - <Avatar - avatar='https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg' - server={server} - isStatic - size={56} - /> - <Separator title='Custom borderRadius' theme={theme} /> - <Avatar - text='Avatar' - server={server} - borderRadius={28} - size={56} - /> - <Separator title='Children' theme={theme} /> - <Avatar - text='Avatar' - server={server} - size={56} - > - <View style={[sharedStyles.status, { backgroundColor: themes[theme].backgroundColor }]}> - <Status - size={20} - status='online' - /> - </View> - </Avatar> - <Separator title='Wrong server' theme={theme} /> - <Avatar - text='Avatar' - server='https://google.com' - size={56} - /> - <Separator title='Custom style' theme={theme} /> - <Avatar - text='Avatar' - server={server} - size={56} - style={styles.custom} +const _theme = 'light'; + +const stories = storiesOf('Avatar', module); + +stories.add('Avatar by text', () => ( + <Avatar + text='Avatar' + server={server} + size={56} + /> +)); + +stories.add('Avatar by roomId', () => ( + <Avatar + type='p' + rid='devWBbYr7inwupPqK' + server={server} + size={56} + /> +)); + +stories.add('Avatar by url', () => ( + <Avatar + avatar='https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg' + server={server} + size={56} + /> +)); + +stories.add('Avatar by path', () => ( + <Avatar + avatar='/avatar/diego.mello' + server={server} + size={56} + /> +)); + +stories.add('With ETag', () => ( + <Avatar + type='d' + text='djorkaeff.alexandre' + avatarETag='5ag8KffJcZj9m5rCv' + server={server} + size={56} + /> +)); + +stories.add('Without ETag', () => ( + <Avatar + type='d' + text='djorkaeff.alexandre' + server={server} + size={56} + /> +)); + +stories.add('Emoji', () => ( + <Avatar + emoji='troll' + getCustomEmoji={() => ({ name: 'troll', extension: 'jpg' })} + server={server} + size={56} + /> +)); + +stories.add('Direct', () => ( + <Avatar + text='diego.mello' + server={server} + type='d' + size={56} + /> +)); + +stories.add('Channel', () => ( + <Avatar + text='general' + server={server} + type='c' + size={56} + /> +)); + +stories.add('Touchable', () => ( + <Avatar + text='Avatar' + server={server} + onPress={() => console.log('Pressed!')} + size={56} + /> +)); + +stories.add('Static', () => ( + <Avatar + avatar='https://user-images.githubusercontent.com/29778115/89444446-14738480-d728-11ea-9412-75fd978d95fb.jpg' + server={server} + isStatic + size={56} + /> +)); + +stories.add('Avatar by roomId', () => ( + <Avatar + type='p' + rid='devWBbYr7inwupPqK' + server={server} + size={56} + /> +)); + +stories.add('Custom borderRadius', () => ( + <Avatar + text='Avatar' + server={server} + borderRadius={28} + size={56} + /> +)); + +stories.add('Children', () => ( + <Avatar + text='Avatar' + server={server} + size={56} + > + <Status + size={24} + style={[sharedStyles.status, styles.status]} + theme={_theme} /> - </ScrollView> -); -AvatarStories.propTypes = { - theme: PropTypes.string -}; -export default AvatarStories; + </Avatar> +)); + +stories.add('Wrong server', () => ( + <Avatar + text='Avatar' + server='https://google.com' + size={56} + /> +)); + +stories.add('Custom style', () => ( + <Avatar + text='Avatar' + server={server} + size={56} + style={styles.custom} + /> +)); diff --git a/storybook/stories/Markdown.js b/storybook/stories/Markdown.js index 92c969501b1..bffd5a2aa9c 100644 --- a/storybook/stories/Markdown.js +++ b/storybook/stories/Markdown.js @@ -1,14 +1,19 @@ -/* eslint-disable react/prop-types */ +/* eslint-disable import/no-extraneous-dependencies */ import React from 'react'; import { ScrollView, StyleSheet, View } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; import Markdown from '../../app/containers/markdown'; -import StoriesSeparator from './StoriesSeparator'; import { themes } from '../../app/constants/colors'; + +const theme = 'light'; + const styles = StyleSheet.create({ container: { - marginHorizontal: 15 + marginHorizontal: 15, + backgroundColor: themes[theme].backgroundColor, + marginVertical: 50 }, separator: { marginHorizontal: 10, @@ -37,258 +42,231 @@ const getCustomEmoji = (content) => { return customEmoji; }; -// eslint-disable-next-line arrow-body-style -export default ({ theme }) => { - return ( - <ScrollView - style={{ - backgroundColor: themes[theme].backgroundColor, - marginVertical: 50 - }} - contentContainerStyle={{ - paddingBottom: 50 - }} - > - <StoriesSeparator style={styles.separator} title='Short Text' theme={theme} /> - <View style={styles.container}> - <Markdown msg='This is Rocket.Chat' theme={theme} /> - </View> - - <StoriesSeparator style={styles.separator} title='Long Text' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={longText} - theme={theme} - /> - </View> - - <StoriesSeparator style={styles.separator} title='Line Break Text' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={lineBreakText} - theme={theme} - /> - </View> +const stories = storiesOf('Markdown', module); - <StoriesSeparator style={styles.separator} title='Sequential empty spaces' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={sequentialEmptySpacesText} - theme={theme} - /> - </View> +stories.add('Text', () => ( + <View style={styles.container}> + <Markdown msg='This is Rocket.Chat' theme={theme} /> + <Markdown + msg={longText} + theme={theme} + /> + <Markdown + msg={lineBreakText} + theme={theme} + /> + <Markdown + msg={sequentialEmptySpacesText} + theme={theme} + /> + <Markdown + msg='Strong emphasis, aka bold, with **asterisks** or __underscores__' + theme={theme} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Edited' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='This is edited' - theme={theme} - isEdited - /> - </View> +stories.add('Edited', () => ( + <View style={styles.container}> + <Markdown + msg='This is edited' + theme={theme} + isEdited + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Preview' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={longText} - theme={theme} - numberOfLines={1} - preview - /> - <Markdown - msg={lineBreakText} - theme={theme} - numberOfLines={1} - preview - /> - <Markdown - msg={sequentialEmptySpacesText} - theme={theme} - numberOfLines={1} - preview - /> - <Markdown - msg='@rocket.cat @name1 @all @here @unknown #general #unknown' - theme={theme} - numberOfLines={1} - preview - mentions={[ - { _id: 'random', name: 'Rocket Cat', username: 'rocket.cat' }, - { _id: 'random2', name: 'Name', username: 'name1' }, - { _id: 'here', username: 'here' }, - { _id: 'all', username: 'all' } - ]} - channels={[{ _id: '123', name: 'test-channel' }]} - username='rocket.cat' - /> - <Markdown - msg='Testing: 😃 :+1: :marioparty:' - getCustomEmoji={getCustomEmoji} - theme={theme} - numberOfLines={1} - preview - /> - </View> +stories.add('Preview', () => ( + <View style={styles.container}> + <Markdown + msg={longText} + theme={theme} + numberOfLines={1} + preview + /> + <Markdown + msg={lineBreakText} + theme={theme} + numberOfLines={1} + preview + /> + <Markdown + msg={sequentialEmptySpacesText} + theme={theme} + numberOfLines={1} + preview + /> + <Markdown + msg='@rocket.cat @name1 @all @here @unknown #general #unknown' + theme={theme} + numberOfLines={1} + preview + mentions={[ + { _id: 'random', name: 'Rocket Cat', username: 'rocket.cat' }, + { _id: 'random2', name: 'Name', username: 'name1' }, + { _id: 'here', username: 'here' }, + { _id: 'all', username: 'all' } + ]} + channels={[{ _id: '123', name: 'test-channel' }]} + username='rocket.cat' + /> + <Markdown + msg='Testing: 😃 :+1: :marioparty:' + getCustomEmoji={getCustomEmoji} + theme={theme} + numberOfLines={1} + preview + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Mentions' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='@rocket.cat @name1 @all @here @unknown' - theme={theme} - mentions={[ - { _id: 'random', name: 'Rocket Cat', username: 'rocket.cat' }, - { _id: 'random2', name: 'Name', username: 'name1' }, - { _id: 'here', username: 'here' }, - { _id: 'all', username: 'all' } - ]} - username='rocket.cat' - /> - </View> +stories.add('Mentions', () => ( + <ScrollView style={styles.container}> + <Markdown + msg='@rocket.cat @name1 @all @here @unknown' + theme={theme} + mentions={[ + { _id: 'random', name: 'Rocket Cat', username: 'rocket.cat' }, + { _id: 'random2', name: 'Name', username: 'name1' }, + { _id: 'here', username: 'here' }, + { _id: 'all', username: 'all' } + ]} + username='rocket.cat' + /> + <Markdown + msg='@rocket.cat @name1 @all @here @unknown' + theme={theme} + mentions={[ + { _id: 'random', name: 'Rocket Cat', username: 'rocket.cat' }, + { _id: 'random2', name: 'Name', username: 'name1' }, + { _id: 'here', username: 'here' }, + { _id: 'all', username: 'all' } + ]} + username='rocket.cat' + useRealName + /> + </ScrollView> +)); - <StoriesSeparator style={styles.separator} title='Mentions with Real Name' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='@rocket.cat @name1 @all @here @unknown' - theme={theme} - mentions={[ - { _id: 'random', name: 'Rocket Cat', username: 'rocket.cat' }, - { _id: 'random2', name: 'Name', username: 'name1' }, - { _id: 'here', username: 'here' }, - { _id: 'all', username: 'all' } - ]} - username='rocket.cat' - useRealName - /> - </View> +stories.add('Hashtag', () => ( + <View style={styles.container}> + <Markdown + msg='#test-channel #unknown' + theme={theme} + channels={[{ _id: '123', name: 'test-channel' }]} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Hashtag' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='#test-channel #unknown' - theme={theme} - channels={[{ _id: '123', name: 'test-channel' }]} - /> - </View> +stories.add('Emoji', () => ( + <View style={styles.container}> + <Markdown msg='Unicode: 😃😇👍' theme={theme} /> + <Markdown msg='Shortnames: :joy::+1:' theme={theme} /> + <Markdown + msg='Custom emojis: :react_rocket: :nyan_rocket: :marioparty:' + theme={theme} + getCustomEmoji={getCustomEmoji} + baseUrl={baseUrl} + /> + <Markdown + msg='😃 :+1: :marioparty:' + theme={theme} + getCustomEmoji={getCustomEmoji} + baseUrl={baseUrl} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Emoji' theme={theme} /> - <View style={styles.container}> - <Markdown msg='Unicode: 😃😇👍' theme={theme} /> - <Markdown msg='Shortnames: :joy::+1:' theme={theme} /> - <Markdown - msg='Custom emojis: :react_rocket: :nyan_rocket: :marioparty:' - theme={theme} - getCustomEmoji={getCustomEmoji} - baseUrl={baseUrl} - /> - <Markdown - msg='😃 :+1: :marioparty:' - theme={theme} - getCustomEmoji={getCustomEmoji} - baseUrl={baseUrl} - /> - </View> - - <StoriesSeparator style={styles.separator} title='Block Quote' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={`> This is block quote +stories.add('Block quote', () => ( + <View style={styles.container}> + <Markdown + msg={`> This is block quote this is a normal line`} - theme={theme} - /> - </View> + theme={theme} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Links' theme={theme} /> - <View style={styles.container}> - <Markdown msg='[Markdown link](https://rocket.chat): `[description](url)`' theme={theme} /> - <Markdown msg='<https://rocket.chat|Formatted Link>: `<url|description>`' theme={theme} /> - </View> +stories.add('Links', () => ( + <View style={styles.container}> + <Markdown msg='[Markdown link](https://rocket.chat): `[description](url)`' theme={theme} /> + <Markdown msg='<https://rocket.chat|Formatted Link>: `<url|description>`' theme={theme} /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Image' theme={theme} /> - <View style={styles.container}> - <Markdown msg='![alt text](https://play.google.com/intl/en_us/badges/images/badge_new.png)' theme={theme} /> - </View> - <StoriesSeparator style={styles.separator} title='Headers' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='# Header 1' - theme={theme} - /> - <Markdown - msg='## Header 2' - theme={theme} - /> - <Markdown - msg='### Header 3' - theme={theme} - /> - <Markdown - msg='#### Header 4' - theme={theme} - /> - <Markdown - msg='##### Header 5' - theme={theme} - /> - <Markdown - msg='###### Header 6' - theme={theme} - /> - </View> +stories.add('Image', () => ( + <View style={styles.container}> + <Markdown msg='![alt text](https://play.google.com/intl/en_us/badges/images/badge_new.png)' theme={theme} /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Inline Code' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='This is `inline code`' - theme={theme} - /> - </View> +stories.add('Headers', () => ( + <View style={styles.container}> + <Markdown + msg='# Header 1' + theme={theme} + /> + <Markdown + msg='## Header 2' + theme={theme} + /> + <Markdown + msg='### Header 3' + theme={theme} + /> + <Markdown + msg='#### Header 4' + theme={theme} + /> + <Markdown + msg='##### Header 5' + theme={theme} + /> + <Markdown + msg='###### Header 6' + theme={theme} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Code Block' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='Inline `code` has `back-ticks around` it. +stories.add('Code', () => ( + <View style={styles.container}> + <Markdown + msg='This is `inline code`' + theme={theme} + /> + <Markdown + msg='Inline `code` has `back-ticks around` it. ``` Code block ```' - theme={theme} - /> - </View> - - <StoriesSeparator style={styles.separator} title='Lists' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={'* Open Source\n* Rocket.Chat\n - nodejs\n - ReactNative'} - theme={theme} - /> - </View> + theme={theme} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Numbered Lists' theme={theme} /> - <View style={styles.container}> - <Markdown - msg={'1. Open Source\n2. Rocket.Chat'} - theme={theme} - /> - </View> +stories.add('Lists', () => ( + <View style={styles.container}> + <Markdown + msg={'* Open Source\n* Rocket.Chat\n - nodejs\n - ReactNative'} + theme={theme} + /> + <Markdown + msg={'1. Open Source\n2. Rocket.Chat'} + theme={theme} + /> + </View> +)); - <StoriesSeparator style={styles.separator} title='Emphasis' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='Strong emphasis, aka bold, with **asterisks** or __underscores__' - theme={theme} - /> - </View> - - <StoriesSeparator style={styles.separator} title='Table' theme={theme} /> - <View style={styles.container}> - <Markdown - msg='First Header | Second Header +stories.add('Table', () => ( + <View style={styles.container}> + <Markdown + msg='First Header | Second Header ------------ | ------------- Content from cell 1 | Content from cell 2 Content in the first column | Content in the second column' - theme={theme} - /> - </View> - </ScrollView> - ); -}; + theme={theme} + /> + </View> +)); diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index 7be131dbc26..82cfa1b0300 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -1,21 +1,21 @@ +/* eslint-disable import/no-extraneous-dependencies */ import React from 'react'; -import { ScrollView, StyleSheet } from 'react-native'; +import { StyleSheet, ScrollView } from 'react-native'; +import { Provider } from 'react-redux'; +import { storiesOf } from '@storybook/react-native'; // import moment from 'moment'; import MessageComponent from '../../app/containers/message/Message'; -import StoriesSeparator from './StoriesSeparator'; import messagesStatus from '../../app/constants/messagesStatus'; import MessageSeparator from '../../app/views/RoomView/Separator'; +import MessageContext from '../../app/containers/message/Context'; import { themes } from '../../app/constants/colors'; +import { store } from './index'; -let _theme = 'light'; +const _theme = 'light'; const styles = StyleSheet.create({ - separator: { - marginTop: 30, - marginBottom: 0 - } }); const user = { @@ -40,6 +40,26 @@ const getCustomEmoji = (content) => { return customEmoji; }; +const messageDecorator = story => ( + <MessageContext.Provider + value={{ + user, + baseUrl, + onPress: () => {}, + onLongPress: () => {}, + reactionInit: () => {}, + onErrorPress: () => {}, + replyBroadcast: () => {}, + onReactionPress: () => {}, + onDiscussionPress: () => {}, + onReactionLongPress: () => {}, + threadBadgeColor: themes.light.tunreadColor + }} + > + {story()} + </MessageContext.Provider> +); + const Message = props => ( <MessageComponent baseUrl={baseUrl} @@ -54,873 +74,781 @@ const Message = props => ( /> ); -// eslint-disable-next-line react/prop-types -const Separator = ({ title, theme }) => <StoriesSeparator title={title} theme={theme} style={styles.separator} />; - -// eslint-disable-next-line react/prop-types -export default ({ theme }) => { - _theme = theme; - return ( - <ScrollView style={{ backgroundColor: themes[theme].backgroundColor }}> - - <Separator title='Simple' theme={theme} /> - <Message msg='Message' /> - - <Separator title='Long message' theme={theme} /> - <Message msg={longText} /> - - <Separator title='Grouped messages' theme={theme} /> - <Message msg='...' /> - <Message - msg='Different user' - author={{ - ...author, - username: longText - }} - /> - <Message msg='This is the third message' isHeader={false} /> - <Message msg='This is the second message' isHeader={false} /> - <Message msg='This is the first message' /> - - <Separator title='Without header' theme={theme} /> - <Message msg='Message' isHeader={false} /> - - <Separator title='With alias' theme={theme} /> - <Message msg='Message' alias='Diego Mello' /> - <Message - msg='Message' - author={{ - ...author, - username: longText - }} - alias='Diego Mello' - /> - - <Separator title='Edited' theme={theme} /> - <Message msg='Message' edited /> - - <Separator title='Encrypted' theme={theme} /> - <Message - msg='Message' - type='e2e' - /> - <Message - msg='Message Encrypted without Header' - isHeader={false} - type='e2e' - /> - <Message - msg='Message Encrypted with Reactions' - reactions={[{ - emoji: ':joy:', - usernames: [{ value: 'username' }] - }, { - emoji: ':marioparty:', - usernames: [{ value: 'username' }] - }, { - emoji: ':thinking:', - usernames: [{ value: 'username' }] - }]} - onReactionPress={() => {}} - type='e2e' - /> - <Message - msg='Thread reply encrypted' - tmid='1' - tmsg='Thread with emoji :) :joy:' - isThreadReply - type='e2e' - /> - <Message - msg='Temp message encrypted' - status={messagesStatus.TEMP} - isTemp - type='e2e' - /> - <Message - msg='Message Edited encrypted' - edited - type='e2e' - /> - <Message - hasError - msg='This message has error and is encrypted' - status={messagesStatus.ERROR} - onErrorPress={() => alert('Error pressed')} - type='e2e' - /> - <Message - msg='Read Receipt encrypted with Header' - isReadReceiptEnabled - read - type='e2e' - /> - <Message - msg='Read Receipt encrypted without Header' - isReadReceiptEnabled - read - isHeader={false} - type='e2e' - /> - - <Separator title='Block Quote' theme={theme} /> - <Message msg='> Testing block quote' /> - <Message msg={'> Testing block quote\nTesting block quote'} /> - - <Separator title='Lists' theme={theme} /> - <Message msg={'* Dogs\n * cats\n - cats'} /> - - <Separator title='Numerated lists' theme={theme} /> - <Message msg={'1. Dogs \n 2. Cats'} /> - - <Separator title='Numerated lists in separated messages' theme={theme} /> - <Message msg='1. Dogs' /> - <Message msg='2. Cats' isHeader={false} /> - - <Separator title='Static avatar' theme={theme} /> - <Message - msg='Message' - avatar='https://pbs.twimg.com/profile_images/1016397063649660929/14EIApTi_400x400.jpg' - /> - - <Separator title='Full name' theme={theme} /> - <Message - msg='Message' - author={{ - ...author, - username: 'diego.mello', - name: 'Diego Mello' - }} - useRealName - /> - - <Separator title='Mentions' theme={theme} /> - <Message - msg='@rocket.cat @diego.mello @all @here #general' - mentions={[{ - username: 'rocket.cat' - }, { - username: 'diego.mello' - }, { - username: 'all' - }, { - username: 'here' - }]} - channels={[{ - name: 'general' - }]} - /> - <Message - msg='@rocket.cat Lorem ipsum dolor @diego.mello sit amet, @all consectetur adipiscing @here elit, sed do eiusmod tempor #general incididunt ut labore et dolore magna aliqua.' - mentions={[{ - username: 'rocket.cat' - }, { - username: 'diego.mello' - }, { - username: 'all' - }, { - username: 'here' - }]} - channels={[{ - name: 'general' - }]} - /> - - <Separator title='Emojis' theme={theme} /> - <Message msg='👊🤙👏' /> - - <Separator title='Single Emoji' theme={theme} /> - <Message msg='👏' /> - - <Separator title='Custom Emojis' theme={theme} /> - <Message msg=':react_rocket: :nyan_rocket: :marioparty:' /> - - <Separator title='Single Custom Emojis' theme={theme} /> - <Message msg=':react_rocket:' /> - - <Separator title='Normal Emoji + Custom Emojis' theme={theme} /> - <Message msg='🤙:react_rocket:' /> - - <Separator title='Four emoji' theme={theme} /> - <Message msg='🤙:react_rocket:🤙🤙' /> - <Separator title='Time format' theme={theme} /> - <Message msg='Testing' timeFormat='DD MMMM YYYY' /> - <Separator title='Reactions' theme={theme} /> - <Message - msg='Reactions' - reactions={[{ - emoji: ':joy:', - usernames: [{ value: 'username' }, { value: 'rocket.cat' }, { value: 'diego.mello' }] - }, { - emoji: ':marioparty:', - usernames: [{ value: 'username' }, { value: 'rocket.cat' }, { value: 'diego.mello' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }, { value: 'user1' }] - }, { - emoji: ':thinking:', - usernames: [{ value: 'username' }] - }]} - onReactionPress={() => {}} - /> - - <Separator title='Multiple reactions' theme={theme} /> - <Message - msg='Multiple Reactions' - reactions={[{ - emoji: ':marioparty:', - usernames: [{ value: 'username' }] - }, { - emoji: ':react_rocket:', - usernames: [{ value: 'username' }] - }, { - emoji: ':nyan_rocket:', - usernames: [{ value: 'username' }] - }, { - emoji: ':heart:', - usernames: [{ value: 'username' }] - }, { - emoji: ':dog:', - usernames: [{ value: 'username' }] - }, { - emoji: ':grinning:', - usernames: [{ value: 'username' }] - }, { - emoji: ':grimacing:', - usernames: [{ value: 'username' }] - }, { - emoji: ':grin:', - usernames: [{ value: 'username' }] - }]} - onReactionPress={() => {}} - /> - - <Separator title='Intercalated users' theme={theme} /> - <Message - msg='Fourth message' - author={{ - ...author, - username: 'rocket.cat' - }} - /> - <Message msg='Third message' /> - <Message - msg='Second message' - author={{ - ...author, - username: 'rocket.cat' - }} - /> - <Message msg='First message' /> - - <Separator title='Date and Unread separators' theme={theme} /> - <Message - msg='Fourth message' - author={{ - ...author, - username: 'rocket.cat' - }} - /> - <MessageSeparator ts={date} unread theme={theme} /> - <Message msg='Third message' /> - <MessageSeparator unread theme={theme} /> - <Message - msg='Second message' - author={{ - ...author, - username: 'rocket.cat' - }} - isHeader={false} - /> - <Message - msg='Second message' - author={{ - ...author, - username: 'rocket.cat' - }} - /> - <MessageSeparator ts={date} theme={theme} /> - <Message msg='First message' /> - - <Separator title='With image' theme={theme} /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description', - image_url: '/dummypath' - }]} - /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description :nyan_rocket:', - image_url: '/dummypath' - }]} - /> - - <Separator title='With video' theme={theme} /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description :nyan_rocket:', - video_url: '/dummypath' - }]} - /> - <Message - attachments={[{ - title: 'This is a title', - video_url: '/dummypath' - }]} - /> - - <Separator title='With audio' theme={theme} /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description :nyan_rocket:', - audio_url: '/dummypath' - }]} - /> - <Message msg='First message' isHeader={false} /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description', - audio_url: '/dummypath' - }]} - isHeader={false} - /> - <Message - attachments={[{ - title: 'This is a title', - audio_url: '/dummypath' - }]} - isHeader={false} - /> - <Message - attachments={[{ - title: 'This is a title', - audio_url: '/dummypath' - }]} - isHeader={false} - /> - - <Separator title='With file' theme={theme} /> - <Message - attachments={[{ - text: 'File.pdf', - description: 'This is a description :nyan_rocket:' - }]} - /> - <Message - attachments={[{ - text: 'File.pdf', - description: 'This is a description :nyan_rocket:' - }]} - isHeader={false} - /> - - <Separator title='Message with reply' theme={theme} /> - <Message - msg="I'm fine!" - attachments={[{ - author_name: 'I\'m a very long long title and I\'ll break', - ts: date, - timeFormat: 'LT', - text: 'How are you?', - message_link: 'http:///example.com' - }]} - /> - <Message - msg="I'm fine!" - attachments={[{ - author_name: 'rocket.cat', - ts: date, - timeFormat: 'LT', - text: 'How are you? :nyan_rocket:', - message_link: 'http:///example.com' - }]} - /> - - <Separator title='Message with read receipt' theme={theme} /> - <Message - msg="I'm fine!" - isReadReceiptEnabled - unread - /> - <Message - msg="I'm fine!" - isReadReceiptEnabled - unread - isHeader={false} - /> - <Message - msg="I'm fine!" - isReadReceiptEnabled - read - /> - <Message - msg="I'm fine!" - isReadReceiptEnabled - read - isHeader={false} - /> - - <Separator title='Message with thread' theme={theme} /> - <Message - msg='How are you?' - tcount={1} - tlm={date} - /> - <Message - msg="I'm fine!" - tmid='1' - tmsg='How are you?' - isThreadReply - /> - <Message - msg="I'm fine!" - tmid='1' - tmsg='Thread with emoji :) :joy:' - isThreadReply - /> - <Message - msg="I'm fine!" - tmid='1' - tmsg='Markdown: [link](http://www.google.com/) ```block code```' - isThreadReply - /> - <Message - msg="I'm fine!" - tmid='1' - tmsg={longText} - isThreadReply - /> - <Message - msg={longText} - tmid='1' - tmsg='How are you?' - isThreadReply - /> - <Message - msg={longText} - tmid='1' - tmsg={longText} - isThreadReply - /> - <Message - tmid='1' - tmsg='Thread with attachment' - attachments={[{ - title: 'This is a title', - description: 'This is a description :nyan_rocket:', - audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' - }]} - isThreadReply - /> - - <Separator title='Sequential thread messages following thread button' theme={theme} /> - <Message - msg='How are you?' - tcount={1} - tlm={date} - /> - <Message - msg="I'm fine!" - tmid='1' - isThreadSequential - /> - <Message - msg={longText} - tmid='1' - isThreadSequential - /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description', - audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' - }]} - tmid='1' - isThreadSequential - /> - - <Separator title='Sequential thread messages following thread reply' theme={theme} /> - <Message - msg="I'm fine!" - tmid='1' - tmsg='How are you?' - isThreadReply - /> - <Message - msg='Cool!' - tmid='1' - isThreadSequential - /> - <Message - msg={longText} - tmid='1' - isThreadSequential - /> - <Message - attachments={[{ - title: 'This is a title', - description: 'This is a description', - audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' - }]} - tmid='1' - isThreadSequential - /> - - {/* <Message - msg='How are you?' - tcount={9999} - tlm={moment().subtract(1, 'hour')} - /> - <Message - msg='How are you?' - tcount={9999} - tlm={moment().subtract(1, 'day')} - /> - <Message - msg='How are you?' - tcount={9999} - tlm={moment().subtract(5, 'day')} - /> - <Message - msg='How are you?' - tcount={9999} - tlm={moment().subtract(30, 'day')} - /> */} - - <Separator title='Discussion' theme={theme} /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={null} - dlm={null} - msg='This is a discussion' - /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={1} - dlm={date} - msg='This is a discussion' - /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={10} - dlm={date} - msg={longText} - /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={1000} - dlm={date} - msg='This is a discussion' - /> - {/* <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={1000} - dlm={moment().subtract(1, 'hour')} - msg='This is a discussion' - /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={1000} - dlm={moment().subtract(1, 'day')} - msg='This is a discussion' - /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={1000} - dlm={moment().subtract(5, 'day')} - msg='This is a discussion' - /> - <Message - type='discussion-created' - drid='aisduhasidhs' - dcount={1000} - dlm={moment().subtract(30, 'day')} - msg='This is a discussion' - /> */} - - - <Separator title='URL' theme={theme} /> - <Message - urls={[{ - url: 'https://rocket.chat', - image: 'https://rocket.chat/images/blog/post.jpg', - title: 'Rocket.Chat - Free, Open Source, Enterprise Team Chat', - description: 'Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting.' - }, { - url: 'https://google.com', - title: 'Google', - description: 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.' - }]} - /> - <Message - urls={[{ - url: 'https://google.com', - title: 'Google', - description: 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.' - }]} - msg='Message :nyan_rocket:' - /> - <Message - urls={[{ - url: 'https://google.com', - title: 'Google', - description: 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.' - }]} - isHeader={false} - /> - - <Separator title='Custom fields' theme={theme} /> - <Message - msg='Message' - attachments={[{ - author_name: 'rocket.cat', - ts: date, - timeFormat: 'LT', - text: 'Custom fields', - message_link: 'http:///example.com', - fields: [{ - title: 'Field 1', - value: 'Value 1' - }, { - title: 'Field 2', - value: 'Value 2' - }, { - title: 'Field 3', - value: 'Value 3' - }, { - title: 'Field 4', - value: 'Value 4' - }, { - title: 'Field 5', - value: 'Value 5' - }] - }]} - /> - - <Separator title='Two short custom fields with markdown' theme={theme} /> - <Message - msg='Message' - attachments={[{ - author_name: 'rocket.cat', - ts: date, - timeFormat: 'LT', - text: 'Custom fields', - message_link: 'http:///example.com', - fields: [{ - title: 'Field 1', - value: 'Value 1', - short: true - }, { - title: 'Field 2', - value: '[Value 2](https://google.com/)', - short: true - }] +const stories = storiesOf('Message', module) + .addDecorator(story => <Provider store={store}>{story()}</Provider>) + .addDecorator(story => <ScrollView style={{ backgroundColor: themes[_theme].backgroundColor }}>{story()}</ScrollView>) + .addDecorator(messageDecorator); + +stories.add('Basic', () => ( + <> + <Message msg='Message' /> + <Message msg={longText} /> + </> +)); + +stories.add('Grouped messages', () => ( + <> + <Message msg='...' /> + <Message + msg='Different user' + author={{ + ...author, + username: longText + }} + /> + <Message msg='This is the third message' isHeader={false} /> + <Message msg='This is the second message' isHeader={false} /> + <Message msg='This is the first message' /> + </> +)); + +stories.add('Without header', () => ( + <Message msg='Message' isHeader={false} /> +)); + +stories.add('With alias', () => ( + <> + <Message msg='Message' alias='Diego Mello' /> + <Message + msg='Message' + author={{ + ...author, + username: longText + }} + alias='Diego Mello' + /> + </> +)); + +stories.add('Edited', () => ( + <Message msg='Message' edited /> +)); + +stories.add('Encrypted', () => ( + <> + <Message + msg='Message' + type='e2e' + /> + <Message + msg='Message Encrypted without Header' + isHeader={false} + type='e2e' + /> + <Message + msg='Message Encrypted with Reactions' + reactions={[{ + emoji: ':joy:', + usernames: [user.username] + }, { + emoji: ':marioparty:', + usernames: [user.username] + }, { + emoji: ':thinking:', + usernames: [user.username] + }]} + onReactionPress={() => {}} + type='e2e' + /> + <Message + msg='Thread reply encrypted' + tmid='1' + tmsg='Thread with emoji :) :joy:' + isThreadReply + type='e2e' + /> + <Message + msg='Temp message encrypted' + status={messagesStatus.TEMP} + isTemp + type='e2e' + /> + <Message + msg='Message Edited encrypted' + edited + type='e2e' + /> + <Message + hasError + msg='This message has error and is encrypted' + status={messagesStatus.ERROR} + onErrorPress={() => alert('Error pressed')} + type='e2e' + /> + <Message + msg='Read Receipt encrypted with Header' + isReadReceiptEnabled + read + type='e2e' + /> + <Message + msg='Read Receipt encrypted without Header' + isReadReceiptEnabled + read + isHeader={false} + type='e2e' + /> + </> +)); + +stories.add('Block Quote', () => ( + <> + <Message msg='> Testing block quote' /> + <Message msg={'> Testing block quote\nTesting block quote'} /> + </> +)); + +stories.add('Lists', () => ( + <> + <Message msg={'* Dogs\n * cats\n - cats'} /> + <Message msg={'1. Dogs \n 2. Cats'} /> + <Message msg='1. Dogs' /> + <Message msg='2. Cats' isHeader={false} /> + </> +)); + +stories.add('Static avatar', () => ( + <Message + msg='Message' + avatar='https://pbs.twimg.com/profile_images/1016397063649660929/14EIApTi_400x400.jpg' + /> +)); + +stories.add('Full name', () => ( + <Message + msg='Message' + author={{ + ...author, + username: 'diego.mello', + name: 'Diego Mello' + }} + useRealName + /> +)); + +stories.add('Mentions', () => ( + <> + <Message + msg='@rocket.cat @diego.mello @all @here #general' + mentions={[{ + username: 'rocket.cat' + }, { + username: 'diego.mello' + }, { + username: 'all' + }, { + username: 'here' + }]} + channels={[{ + name: 'general' + }]} + /> + <Message + msg='@rocket.cat Lorem ipsum dolor @diego.mello sit amet, @all consectetur adipiscing @here elit, sed do eiusmod tempor #general incididunt ut labore et dolore magna aliqua.' + mentions={[{ + username: 'rocket.cat' + }, { + username: 'diego.mello' + }, { + username: 'all' + }, { + username: 'here' + }]} + channels={[{ + name: 'general' + }]} + /> + </> +)); + +stories.add('Emojis', () => ( + <> + <Message msg='👊🤙👏' /> + <Message msg='👏' /> + <Message msg=':react_rocket: :nyan_rocket: :marioparty:' /> + <Message msg=':react_rocket:' /> + <Message msg='🤙:react_rocket:' /> + <Message msg='🤙:react_rocket:🤙🤙' /> + </> +)); + +stories.add('Time format', () => ( + <Message msg='Testing' timeFormat='DD MMMM YYYY' /> +)); + +stories.add('Reactions', () => ( + <> + <Message + msg='Reactions' + reactions={[{ + emoji: ':joy:', + usernames: [user.username] + }, { + emoji: ':marioparty:', + usernames: new Array(99) + }, { + emoji: ':thinking:', + usernames: new Array(999) + }, { + emoji: ':thinking:', + usernames: new Array(9999) + }]} + onReactionPress={() => {}} + /> + <Message + msg='Multiple Reactions' + reactions={[{ + emoji: ':marioparty:', + usernames: [user.username] + }, { + emoji: ':react_rocket:', + usernames: [user.username] + }, { + emoji: ':nyan_rocket:', + usernames: [user.username] + }, { + emoji: ':heart:', + usernames: [user.username] + }, { + emoji: ':dog:', + usernames: [user.username] + }, { + emoji: ':grinning:', + usernames: [user.username] + }, { + emoji: ':grimacing:', + usernames: [user.username] + }, { + emoji: ':grin:', + usernames: [user.username] + }]} + onReactionPress={() => {}} + /> + </> +)); + +stories.add('Date and Unread separators', () => ( + <> + <Message + msg='Fourth message' + author={{ + ...author, + username: 'rocket.cat' + }} + /> + <MessageSeparator ts={date} unread theme={_theme} /> + <Message msg='Third message' /> + <MessageSeparator unread theme={_theme} /> + <Message + msg='Second message' + author={{ + ...author, + username: 'rocket.cat' + }} + isHeader={false} + /> + <Message + msg='Second message' + author={{ + ...author, + username: 'rocket.cat' + }} + /> + <MessageSeparator ts={date} theme={_theme} /> + <Message msg='First message' /> + </> +)); + +stories.add('With image', () => ( + <> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description', + image_url: '/dummypath' + }]} + /> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description :nyan_rocket:', + image_url: '/dummypath' + }]} + /> + </> +)); + +stories.add('With video', () => ( + <> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description :nyan_rocket:', + video_url: '/dummypath' + }]} + /> + <Message + attachments={[{ + title: 'This is a title', + video_url: '/dummypath' + }]} + /> + </> +)); + +stories.add('With audio', () => ( + <> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description :nyan_rocket:', + audio_url: '/dummypath' + }]} + /> + <Message msg='First message' isHeader={false} /> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description', + audio_url: '/dummypath' + }]} + isHeader={false} + /> + <Message + attachments={[{ + title: 'This is a title', + audio_url: '/dummypath' + }]} + isHeader={false} + /> + <Message + attachments={[{ + title: 'This is a title', + audio_url: '/dummypath' + }]} + isHeader={false} + /> + </> +)); + +stories.add('With file', () => ( + <> + <Message + attachments={[{ + text: 'File.pdf', + description: 'This is a description :nyan_rocket:' + }]} + /> + <Message + attachments={[{ + text: 'File.pdf', + description: 'This is a description :nyan_rocket:' + }]} + isHeader={false} + /> + </> +)); + +stories.add('Message with reply', () => ( + <> + <Message + msg="I'm fine!" + attachments={[{ + author_name: 'I\'m a very long long title and I\'ll break', + ts: date, + timeFormat: 'LT', + text: 'How are you?' + }]} + /> + <Message + msg="I'm fine!" + attachments={[{ + author_name: 'rocket.cat', + ts: date, + timeFormat: 'LT', + text: 'How are you? :nyan_rocket:' + }]} + /> + </> +)); + +stories.add('Message with read receipt', () => ( + <> + <Message + msg="I'm fine!" + isReadReceiptEnabled + unread + /> + <Message + msg="I'm fine!" + isReadReceiptEnabled + unread + isHeader={false} + /> + <Message + msg="I'm fine!" + isReadReceiptEnabled + read + /> + <Message + msg="I'm fine!" + isReadReceiptEnabled + read + isHeader={false} + /> + </> +)); + +stories.add('Message with thread', () => ( + <> + <Message + msg='How are you?' + tcount={1} + tlm={date} + /> + <Message + msg="I'm fine!" + tmid='1' + tmsg='How are you?' + isThreadReply + /> + <Message + msg="I'm fine!" + tmid='1' + tmsg='Thread with emoji :) :joy:' + isThreadReply + /> + <Message + msg="I'm fine!" + tmid='1' + tmsg={longText} + isThreadReply + /> + <Message + msg={longText} + tmid='1' + tmsg='How are you?' + isThreadReply + /> + <Message + msg={longText} + tmid='1' + tmsg={longText} + isThreadReply + /> + <Message + tmid='1' + tmsg='Thread with attachment' + attachments={[{ + title: 'This is a title', + description: 'This is a description :nyan_rocket:', + audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' + }]} + isThreadReply + /> + </> +)); + +stories.add('Sequential thread messages following thread button', () => ( + <> + <Message + msg='How are you?' + tcount={1} + tlm={date} + /> + <Message + msg="I'm fine!" + tmid='1' + isThreadSequential + /> + <Message + msg={longText} + tmid='1' + isThreadSequential + /> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description', + audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' + }]} + tmid='1' + isThreadSequential + /> + </> +)); + +stories.add('Sequential thread messages following thread reply', () => ( + <> + <Message + msg="I'm fine!" + tmid='1' + tmsg='How are you?' + isThreadReply + /> + <Message + msg='Cool!' + tmid='1' + isThreadSequential + /> + <Message + msg={longText} + tmid='1' + isThreadSequential + /> + <Message + attachments={[{ + title: 'This is a title', + description: 'This is a description', + audio_url: '/file-upload/c4wcNhrbXJLBvAJtN/1535569819516.aac' + }]} + tmid='1' + isThreadSequential + /> + </> +)); + +stories.add('Discussion', () => ( + <> + <Message + type='discussion-created' + drid='aisduhasidhs' + dcount={null} + dlm={null} + msg='This is a discussion' + /> + <Message + type='discussion-created' + drid='aisduhasidhs' + dcount={1} + dlm={date} + msg='This is a discussion' + /> + <Message + type='discussion-created' + drid='aisduhasidhs' + dcount={10} + dlm={date} + msg={longText} + /> + <Message + type='discussion-created' + drid='aisduhasidhs' + dcount={1000} + dlm={date} + msg='This is a discussion' + /> + </> +)); + +stories.add('URL', () => ( + <> + <Message + urls={[{ + url: 'https://rocket.chat', + image: 'https://rocket.chat/images/blog/post.jpg', + title: 'Rocket.Chat - Free, Open Source, Enterprise Team Chat', + description: 'Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting.' + }, { + url: 'https://google.com', + title: 'Google', + description: 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.' + }]} + /> + <Message + urls={[{ + url: 'https://google.com', + title: 'Google', + description: 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.' + }]} + msg='Message :nyan_rocket:' + /> + <Message + urls={[{ + url: 'https://google.com', + title: 'Google', + description: 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.' + }]} + isHeader={false} + /> + </> +)); + +stories.add('Custom fields', () => ( + <> + <Message + msg='Message' + attachments={[{ + author_name: 'rocket.cat', + ts: date, + timeFormat: 'LT', + text: 'Custom fields', + fields: [{ + title: 'Field 1', + value: 'Value 1' }, { - author_name: 'rocket.cat', - ts: date, - timeFormat: 'LT', - text: 'Custom fields 2', - message_link: 'http:///example.com', - fields: [{ - title: 'Field 1', - value: 'Value 1', - short: true - }, { - title: 'Field 2', - value: '**Value 2**', - short: true - }] - }]} - /> - - <Separator title='Colored attachments' theme={theme} /> - <Message - attachments={[{ - color: 'red', - fields: [{ - title: 'Field 1', - value: 'Value 1', - short: true - }, { - title: 'Field 2', - value: 'Value 2', - short: true - }] + title: 'Field 2', + value: 'Value 2' }, { - color: 'green', - fields: [{ - title: 'Field 1', - value: 'Value 1', - short: true - }, { - title: 'Field 2', - value: 'Value 2', - short: true - }] + title: 'Field 3', + value: 'Value 3' }, { - color: 'blue', - fields: [{ - title: 'Field 1', - value: 'Value 1', - short: true - }, { - title: 'Field 2', - value: 'Value 2', - short: true - }] + title: 'Field 4', + value: 'Value 4' }, { - color: 'ASDASD', - fields: [{ - title: 'Invalid color', - short: true - }] - }]} - /> - - <Separator title='Broadcast' theme={theme} /> - <Message msg='Broadcasted message' broadcast replyBroadcast={() => alert('broadcast!')} /> - - <Separator title='Archived' theme={theme} /> - <Message msg='This message is inside an archived room' archived /> - - <Separator title='Error' theme={theme} /> - <Message hasError msg='This message has error' status={messagesStatus.ERROR} onErrorPress={() => alert('Error pressed')} /> - <Message hasError msg='This message has error too' status={messagesStatus.ERROR} onErrorPress={() => alert('Error pressed')} isHeader={false} /> - - <Separator title='Temp' theme={theme} /> - <Message msg='Temp message' status={messagesStatus.TEMP} isTemp /> - - <Separator title='Editing' theme={theme} /> - <Message msg='Message being edited' editing /> - - <Separator title='Removed' theme={theme} /> - <Message type='rm' isInfo /> - - <Separator title='Joined' theme={theme} /> - <Message type='uj' isInfo /> - - <Separator title='Room name changed' theme={theme} /> - <Message msg='New name' type='r' isInfo /> - - <Separator title='Message pinned' theme={theme} /> - <Message - msg='New name' - type='message_pinned' - isInfo - attachments={[{ - author_name: 'rocket.cat', - ts: date, - timeFormat: 'LT', - message_link: 'http:///example.com', - text: 'First message' - }]} - /> - - <Separator title='Has left the channel' theme={theme} /> - <Message type='ul' isInfo /> - - <Separator title='User removed' theme={theme} /> - <Message msg='rocket.cat' type='ru' isInfo /> - - <Separator title='User added' theme={theme} /> - <Message msg='rocket.cat' type='au' isInfo /> - - <Separator title='User muted' theme={theme} /> - <Message msg='rocket.cat' type='user-muted' isInfo /> - - <Separator title='User unmuted' theme={theme} /> - <Message msg='rocket.cat' type='user-unmuted' isInfo /> - - <Separator title='Role added' theme={theme} /> - <Message - msg='rocket.cat' - role='admin' // eslint-disable-line - type='subscription-role-added' - isInfo - /> - - <Separator title='Role removed' theme={theme} /> - <Message - msg='rocket.cat' - role='admin' // eslint-disable-line - type='subscription-role-removed' - isInfo - /> - - <Separator title='Changed description' theme={theme} /> - <Message msg='new description' type='room_changed_description' isInfo /> - - <Separator title='Changed announcement' theme={theme} /> - <Message msg='new announcement' type='room_changed_announcement' isInfo /> - - <Separator title='Changed topic' theme={theme} /> - <Message msg='new topic' type='room_changed_topic' isInfo /> - - <Separator title='Changed type' theme={theme} /> - <Message msg='public' type='room_changed_privacy' isInfo /> - - <Separator title='Toggle e2e encryption' theme={theme} /> - <Message type='room_e2e_disabled' isInfo /> - <Message type='room_e2e_enabled' isInfo /> - - <Separator title='Ignored' theme={theme} /> - <Message isIgnored /> - - <Separator title='Custom style' theme={theme} /> - <Message msg='Message' style={[styles.normalize, { backgroundColor: '#ddd' }]} /> - - <Separator title='Markdown emphasis' theme={theme} /> - <Message msg='Italic with single _underscore_ or double __underscores__. Bold with single *asterisk* or double **asterisks**. Strikethrough with single ~Strikethrough~ or double ~~Strikethrough~~' /> - - <Separator title='Markdown headers' theme={theme} /> - <Message - msg='# H1 -## H2 -### H3 -#### H4 -##### H5 -###### H6' - /> - - <Separator title='Markdown links' theme={theme} /> - <Message msg='Support <http://google.com|Google> [I`m an inline-style link](https://www.google.com) https://google.com' /> - - <Separator title='Starting with empty link' theme={theme} /> - <Message msg='[ ](https://www.google.com) <- No link should render' /> - - <Separator title='Markdown image' theme={theme} /> - <Message msg='![alt text](https://play.google.com/intl/en_us/badges/images/badge_new.png)' /> - - <Separator title='Markdown code' theme={theme} /> - <Message - msg='Inline `code` has `back-ticks around` it. -``` -Code block -```' - /> - - <Separator title='Markdown quote' theme={theme} /> - <Message msg='> Quote' /> - - <Separator title='Markdown table' theme={theme} /> - <Message - msg='First Header | Second Header ------------- | ------------- -Content from cell 1 | Content from cell 2 -Content in the first column | Content in the second column' - /> - </ScrollView> - ); -}; + title: 'Field 5', + value: 'Value 5' + }] + }]} + /> + </> +)); + +stories.add('Two short custom fields with markdown', () => ( + <Message + msg='Message' + attachments={[{ + author_name: 'rocket.cat', + ts: date, + timeFormat: 'LT', + text: 'Custom fields', + fields: [{ + title: 'Field 1', + value: 'Value 1', + short: true + }, { + title: 'Field 2', + value: '[Value 2](https://google.com/)', + short: true + }] + }, { + author_name: 'rocket.cat', + ts: date, + timeFormat: 'LT', + text: 'Custom fields 2', + fields: [{ + title: 'Field 1', + value: 'Value 1', + short: true + }, { + title: 'Field 2', + value: '**Value 2**', + short: true + }] + }]} + /> +)); + +stories.add('Colored attachments', () => ( + <Message + attachments={[{ + color: 'red', + fields: [{ + title: 'Field 1', + value: 'Value 1', + short: true + }, { + title: 'Field 2', + value: 'Value 2', + short: true + }] + }, { + color: 'green', + fields: [{ + title: 'Field 1', + value: 'Value 1', + short: true + }, { + title: 'Field 2', + value: 'Value 2', + short: true + }] + }, { + color: 'blue', + fields: [{ + title: 'Field 1', + value: 'Value 1', + short: true + }, { + title: 'Field 2', + value: 'Value 2', + short: true + }] + }]} + /> +)); + +stories.add('Broadcast', () => ( + <Message msg='Broadcasted message' broadcast replyBroadcast={() => alert('broadcast!')} /> +)); + +stories.add('Archived', () => ( + <Message msg='This message is inside an archived room' archived /> +)); + +stories.add('Error', () => ( + <> + <Message hasError msg='This message has error' status={messagesStatus.ERROR} onErrorPress={() => alert('Error pressed')} /> + <Message hasError msg='This message has error too' status={messagesStatus.ERROR} onErrorPress={() => alert('Error pressed')} isHeader={false} /> + </> +)); + +stories.add('Temp', () => ( + <Message msg='Temp message' status={messagesStatus.TEMP} isTemp /> +)); + +stories.add('Editing', () => ( + <Message msg='Message being edited' editing /> +)); + +stories.add('System messages', () => ( + <> + <Message type='rm' isInfo /> + <Message type='uj' isInfo /> + <Message + msg='New name' + type='message_pinned' + isInfo + attachments={[{ + author_name: 'rocket.cat', + ts: date, + timeFormat: 'LT', + text: 'First message' + }]} + /> + <Message type='ul' isInfo /> + <Message msg='rocket.cat' type='ru' isInfo /> + <Message msg='rocket.cat' type='au' isInfo /> + <Message msg='rocket.cat' type='user-muted' isInfo /> + <Message msg='rocket.cat' type='user-unmuted' isInfo /> + <Message + msg='rocket.cat' + role='admin' + type='subscription-role-added' + isInfo + /> + <Message + msg='rocket.cat' + role='admin' + type='subscription-role-removed' + isInfo + /> + <Message msg='New name' type='r' isInfo /> + <Message msg='new description' type='room_changed_description' isInfo /> + <Message msg='new announcement' type='room_changed_announcement' isInfo /> + <Message msg='new topic' type='room_changed_topic' isInfo /> + <Message msg='public' type='room_changed_privacy' isInfo /> + <Message type='room_e2e_disabled' isInfo /> + <Message type='room_e2e_enabled' isInfo /> + </> +)); + +stories.add('Ignored', () => ( + <Message isIgnored /> +)); + +stories.add('Custom style', () => ( + <Message msg='Message' style={[styles.normalize, { backgroundColor: '#ddd' }]} /> +)); diff --git a/storybook/stories/RoomItem.js b/storybook/stories/RoomItem.js index 819a149b2fb..d39e92082f6 100644 --- a/storybook/stories/RoomItem.js +++ b/storybook/stories/RoomItem.js @@ -1,15 +1,18 @@ +/* eslint-disable import/no-extraneous-dependencies */ import React from 'react'; import { ScrollView, Dimensions } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; +import { Provider } from 'react-redux'; // import moment from 'moment'; import { themes } from '../../app/constants/colors'; import RoomItemComponent from '../../app/presentation/RoomItem/RoomItem'; import { longText } from '../utils'; -import StoriesSeparator from './StoriesSeparator'; +import { store } from './index'; const baseUrl = 'https://open.rocket.chat'; const { width } = Dimensions.get('window'); -let _theme = 'light'; +const _theme = 'light'; const lastMessage = { u: { username: 'diego.mello' @@ -22,7 +25,6 @@ const updatedAt = { const RoomItem = props => ( <RoomItemComponent - rid='abc' type='d' name='rocket.cat' avatar='rocket.cat' @@ -34,98 +36,109 @@ const RoomItem = props => ( /> ); -// eslint-disable-next-line react/prop-types -const Separator = ({ title }) => <StoriesSeparator title={title} theme={_theme} />; +const stories = storiesOf('Room Item', module) + .addDecorator(story => <Provider store={store}>{story()}</Provider>) + .addDecorator(story => <ScrollView style={{ backgroundColor: themes[_theme].backgroundColor }}>{story()}</ScrollView>); -// eslint-disable-next-line react/prop-types -export default ({ theme }) => { - _theme = theme; - return ( - <ScrollView style={{ backgroundColor: themes[theme].auxiliaryBackground }}> - <Separator title='Basic' /> - <RoomItem /> - <Separator title='User' /> - <RoomItem name='diego.mello' avatar='diego.mello' /> - <RoomItem - name={longText} - /> +stories.add('Basic', () => ( + <RoomItem /> +)); - <Separator title='Type' /> - <RoomItem type='d' /> - <RoomItem type='c' /> - <RoomItem type='p' /> - <RoomItem type='l' /> - <RoomItem type='discussion' /> - <RoomItem type='d' isGroupChat /> - <RoomItem type='&' /> - <Separator title='User status' /> - <RoomItem status='online' /> - <RoomItem status='away' /> - <RoomItem status='busy' /> - <RoomItem status='offline' /> - <RoomItem status='loading' /> - <RoomItem status='wrong' /> +stories.add('User', () => ( + <> + <RoomItem name='diego.mello' avatar='diego.mello' /> + <RoomItem + name={longText} + /> + </> +)); - <Separator title='Alerts' /> - <RoomItem alert /> - <RoomItem alert name='unread' unread={1} /> - <RoomItem alert name='unread' unread={1000} /> - <RoomItem alert name='user mentions' unread={1} userMentions={1} /> - <RoomItem alert name='group mentions' unread={1} groupMentions={1} /> - <RoomItem alert name='thread unread' tunread={[1]} /> - <RoomItem alert name='thread unread user' tunread={[1]} tunreadUser={[1]} /> - <RoomItem alert name='thread unread group' tunread={[1]} tunreadGroup={[1]} /> - <RoomItem name='user mentions priority 1' alert unread={1} userMentions={1} groupMentions={1} tunread={[1]} /> - <RoomItem name='group mentions priority 2' alert unread={1} groupMentions={1} tunread={[1]} /> - <RoomItem name='thread unread priority 3' alert unread={1} tunread={[1]} /> +stories.add('Type', () => ( + <> + <RoomItem type='d' /> + <RoomItem type='c' /> + <RoomItem type='p' /> + <RoomItem type='l' /> + <RoomItem type='discussion' /> + <RoomItem type='d' isGroupChat /> + <RoomItem type='&' /> + </> +)); - <Separator title='Last Message' /> - <RoomItem - showLastMessage - /> - <RoomItem - showLastMessage - lastMessage={{ - u: { - username: 'rocket.chat' - }, - msg: '2' - }} - /> - <RoomItem - showLastMessage - lastMessage={{ - u: { - username: 'diego.mello' - }, - msg: '1' - }} - username='diego.mello' - /> - <RoomItem - showLastMessage - lastMessage={lastMessage} - /> - <RoomItem - showLastMessage - alert - unread={1} - lastMessage={lastMessage} - /> - <RoomItem - showLastMessage - alert - unread={1000} - lastMessage={lastMessage} - /> - <RoomItem - showLastMessage - alert - tunread={[1]} - lastMessage={lastMessage} - /> - </ScrollView> - ); -}; +stories.add('User status', () => ( + <> + <RoomItem status='online' /> + <RoomItem status='away' /> + <RoomItem status='busy' /> + <RoomItem status='offline' /> + <RoomItem status='loading' /> + <RoomItem status='wrong' /> + </> +)); + +stories.add('Alerts', () => ( + <> + <RoomItem alert /> + <RoomItem alert name='unread' unread={1} /> + <RoomItem alert name='unread' unread={1000} /> + <RoomItem alert name='user mentions' unread={1} userMentions={1} /> + <RoomItem alert name='group mentions' unread={1} groupMentions={1} /> + <RoomItem alert name='thread unread' tunread={[1]} /> + <RoomItem alert name='thread unread user' tunread={[1]} tunreadUser={[1]} /> + <RoomItem alert name='thread unread group' tunread={[1]} tunreadGroup={[1]} /> + <RoomItem name='user mentions priority 1' alert unread={1} userMentions={1} groupMentions={1} tunread={[1]} /> + <RoomItem name='group mentions priority 2' alert unread={1} groupMentions={1} tunread={[1]} /> + <RoomItem name='thread unread priority 3' alert unread={1} tunread={[1]} /> + </> +)); + +stories.add('Last Message', () => ( + <> + <RoomItem + showLastMessage + /> + <RoomItem + showLastMessage + lastMessage={{ + u: { + username: 'rocket.chat' + }, + msg: '2' + }} + /> + <RoomItem + showLastMessage + lastMessage={{ + u: { + username: 'diego.mello' + }, + msg: '1' + }} + username='diego.mello' + /> + <RoomItem + showLastMessage + lastMessage={lastMessage} + /> + <RoomItem + showLastMessage + alert + unread={1} + lastMessage={lastMessage} + /> + <RoomItem + showLastMessage + alert + unread={1000} + lastMessage={lastMessage} + /> + <RoomItem + showLastMessage + alert + tunread={[1]} + lastMessage={lastMessage} + /> + </> +)); diff --git a/storybook/stories/StoriesSeparator.js b/storybook/stories/StoriesSeparator.js deleted file mode 100644 index a24fa1d04f3..00000000000 --- a/storybook/stories/StoriesSeparator.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import { Text, StyleSheet } from 'react-native'; -import PropTypes from 'prop-types'; - -import { themes } from '../../app/constants/colors'; - -const styles = StyleSheet.create({ - separator: { - marginVertical: 30, - marginLeft: 10, - fontSize: 20, - fontWeight: '300' - } -}); - -const Separator = ({ title, style, theme }) => ( - <Text - style={[ - styles.separator, - { - color: themes[theme].titleText - }, - style - ]} - > - {title} - </Text> -); - -Separator.propTypes = { - title: PropTypes.string.isRequired, - theme: PropTypes.string, - style: PropTypes.object -}; - -export default Separator; diff --git a/storybook/stories/UiKitMessage.js b/storybook/stories/UiKitMessage.js index 68d81adc675..4fa2865f897 100644 --- a/storybook/stories/UiKitMessage.js +++ b/storybook/stories/UiKitMessage.js @@ -1,11 +1,11 @@ +/* eslint-disable import/no-extraneous-dependencies */ import React from 'react'; import { ScrollView, StyleSheet, SafeAreaView } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; +import MessageContext from '../../app/containers/message/Context'; import { UiKitMessage } from '../../app/containers/UIKit'; -import StoriesSeparator from './StoriesSeparator'; - -// eslint-disable-next-line react/prop-types -const Separator = ({ title }) => <StoriesSeparator title={title} theme='light' />; +import { themes } from '../../app/constants/colors'; const styles = StyleSheet.create({ container: { @@ -17,426 +17,435 @@ const styles = StyleSheet.create({ } }); -export default () => ( - <SafeAreaView style={styles.container}> - <ScrollView style={[styles.container, styles.padding]} keyboardShouldPersistTaps='always'> - <Separator title='Section' /> - { - UiKitMessage([{ - type: 'section', - text: { - type: 'mrkdwn', - text: 'Section' - } - }]) - } +const user = { + id: 'y8bd77ptZswPj3EW8', + username: 'diego.mello', + token: '79q6lH40W4ZRGLOshDiDiVlQaCc4f_lU9HNdHLAzuHz' +}; - <Separator title='Section + Markdown List' /> - { - UiKitMessage([{ - type: 'section', - text: { - type: 'mrkdwn', - text: '*List*:\n1. Item' - } - }]) - } +const baseUrl = 'https://open.rocket.chat'; - <Separator title='Section + Overflow' /> - { - UiKitMessage([ - { - type: 'section', - text: { - type: 'mrkdwn', - text: 'Section + Overflow' - }, - accessory: { - type: 'overflow', - options: [ - { - text: { - type: 'plain_text', - text: 'Option 1', - emoji: true - }, - value: 'value-0' - }, - { - text: { - type: 'plain_text', - text: 'Option 2', - emoji: true - }, - value: 'value-1' - }, - { - text: { - type: 'plain_text', - text: 'Option 3', - emoji: true - }, - value: 'value-2' - }, - { - text: { - type: 'plain_text', - text: 'Option 4', - emoji: true - }, - value: 'value-3' - } - ] - } - } - ]) - } +const messageDecorator = story => ( + <MessageContext.Provider + value={{ + user, + baseUrl, + onPress: () => {}, + onLongPress: () => {}, + reactionInit: () => {}, + onErrorPress: () => {}, + replyBroadcast: () => {}, + onReactionPress: () => {}, + onDiscussionPress: () => {}, + onReactionLongPress: () => {}, + threadBadgeColor: themes.light.tunreadColor + }} + > + {story()} + </MessageContext.Provider> +); - <Separator title='Section + image' /> - { - UiKitMessage([{ - type: 'section', - text: { - type: 'mrkdwn', - text: 'Section + Image' - }, - accessory: { - type: 'image', - imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', - altText: 'plants' - } - }]) - } +const stories = storiesOf('UiKitMessage', module) + .addDecorator(story => <SafeAreaView style={styles.container}>{story()}</SafeAreaView>) + .addDecorator(story => <ScrollView style={[styles.container, styles.padding]} keyboardShouldPersistTaps='always'>{story()}</ScrollView>) + .addDecorator(messageDecorator); - <Separator title='Section + button' /> - { - UiKitMessage([{ - type: 'section', - text: { - type: 'mrkdwn', - text: 'Section + button' - }, - accessory: { - type: 'button', - text: { - type: 'plain_text', - text: 'button' - } - } - }]) - } +const Section = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section' + } +}]); +stories.add('Section', () => <Section />); - <Separator title='Section + Select' /> - { - UiKitMessage([{ - type: 'section', +const SectionMarkdownList = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: '*List*:\n1. Item' + } +}]); +stories.add('Section + Markdown List', () => <SectionMarkdownList />); + +const SectionOverflow = () => UiKitMessage([ + { + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section + Overflow' + }, + accessory: { + type: 'overflow', + options: [ + { text: { - type: 'mrkdwn', - text: 'Section + select' + type: 'plain_text', + text: 'Option 1', + emoji: true }, - accessory: { - type: 'static_select', - options: [ - { - value: 1, - text: { - type: 'plain_text', - text: 'button' - } - }, { - value: 2, - text: { - type: 'plain_text', - text: 'second button' - } - }] - } - }]) - } - - <Separator title='Section + DatePicker' /> - { - UiKitMessage([{ - type: 'section', + value: 'value-0' + }, + { text: { - type: 'mrkdwn', - text: 'Section + DatePicker' + type: 'plain_text', + text: 'Option 2', + emoji: true }, - accessory: { - type: 'datepicker', - initial_date: '1990-04-28', - placeholder: { - type: 'plain_text', - text: 'Select a date', - emoji: true - } - } - }]) - } - - <Separator title='Section + Multi Select' /> - { - UiKitMessage([{ - type: 'section', + value: 'value-1' + }, + { text: { - type: 'mrkdwn', - text: 'Section + select' + type: 'plain_text', + text: 'Option 3', + emoji: true }, - accessory: { - type: 'multi_static_select', - options: [{ - text: { - type: 'plain_text', - text: 'button' - }, - value: 1 - }, { - text: { - type: 'plain_text', - text: 'opt 1' - }, - value: 2 - }, { - text: { - type: 'plain_text', - text: 'opt 2' - }, - value: 3 - }, { - text: { - type: 'plain_text', - text: 'opt 3' - }, - value: 4 - }] - } - }]) - } - - <Separator title='Image' /> - { - UiKitMessage([{ - type: 'image', - title: { + value: 'value-2' + }, + { + text: { type: 'plain_text', - text: 'Example Image', + text: 'Option 4', emoji: true }, - imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', - altText: 'Example Image' - }]) - } + value: 'value-3' + } + ] + } + } +]); +stories.add('Section + Overflow', () => <SectionOverflow />); - <Separator title='Context' /> - { - UiKitMessage([{ - type: 'context', - elements: [{ - type: 'image', - title: { - type: 'plain_text', - text: 'Example Image', - emoji: true - }, - imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', - altText: 'Example Image' - }, - { - type: 'mrkdwn', - text: 'context' - } - ] - }]) - } +const SectionImage = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section + Image' + }, + accessory: { + type: 'image', + imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', + altText: 'plants' + } +}]); +stories.add('Section + image', () => <SectionImage />); + +const SectionButton = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section + button' + }, + accessory: { + type: 'button', + text: { + type: 'plain_text', + text: 'button' + } + } +}]); +stories.add('Section + button', () => <SectionButton />); - <Separator title='Action - Buttons' /> +const SectionSelect = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section + select' + }, + accessory: { + type: 'static_select', + options: [ { - UiKitMessage([{ - type: 'actions', - elements: [ - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Approve' - }, - style: 'primary', - value: 'click_me_123' - }, - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Deny' - }, - style: 'danger', - value: 'click_me_123' - }, - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Deny' - }, - style: 'danger', - value: 'click_me_123' - }, - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Deny' - }, - style: 'danger', - value: 'click_me_123' - }, - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Deny' - }, - style: 'danger', - value: 'click_me_123' - }, - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Deny' - }, - style: 'danger', - value: 'click_me_123' - }, - { - type: 'button', - text: { - type: 'plain_text', - emoji: true, - text: 'Deny' - }, - style: 'danger', - value: 'click_me_123' - } - ] - }]) - } + value: 1, + text: { + type: 'plain_text', + text: 'button' + } + }, { + value: 2, + text: { + type: 'plain_text', + text: 'second button' + } + }] + } +}]); +stories.add('Section + Select', () => <SectionSelect />); + +const SectionDatePicker = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section + DatePicker' + }, + accessory: { + type: 'datepicker', + initial_date: '1990-04-28', + placeholder: { + type: 'plain_text', + text: 'Select a date', + emoji: true + } + } +}]); +stories.add('Section + DatePicker', () => <SectionDatePicker />); + +const SectionMultiSelect = () => UiKitMessage([{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Section + select' + }, + accessory: { + type: 'multi_static_select', + options: [{ + text: { + type: 'plain_text', + text: 'button' + }, + value: 1 + }, { + text: { + type: 'plain_text', + text: 'opt 1' + }, + value: 2 + }, { + text: { + type: 'plain_text', + text: 'opt 2' + }, + value: 3 + }, { + text: { + type: 'plain_text', + text: 'opt 3' + }, + value: 4 + }] + } +}]); +stories.add('Section + Multi Select', () => <SectionMultiSelect />); + +const Image = () => UiKitMessage([{ + type: 'image', + title: { + type: 'plain_text', + text: 'Example Image', + emoji: true + }, + imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', + altText: 'Example Image' +}]); +stories.add('Image', () => <Image />); - <Separator title='Fields' /> +const Context = () => UiKitMessage([{ + type: 'context', + elements: [{ + type: 'image', + title: { + type: 'plain_text', + text: 'Example Image', + emoji: true + }, + imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', + altText: 'Example Image' + }, + { + type: 'mrkdwn', + text: 'context' + } + ] +}]); +stories.add('Context', () => <Context />); + +const ActionButton = () => UiKitMessage([{ + type: 'actions', + elements: [ + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Approve' + }, + style: 'primary', + value: 'click_me_123' + }, + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Deny' + }, + style: 'danger', + value: 'click_me_123' + }, + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Deny' + }, + style: 'danger', + value: 'click_me_123' + }, + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Deny' + }, + style: 'danger', + value: 'click_me_123' + }, + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Deny' + }, + style: 'danger', + value: 'click_me_123' + }, + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Deny' + }, + style: 'danger', + value: 'click_me_123' + }, + { + type: 'button', + text: { + type: 'plain_text', + emoji: true, + text: 'Deny' + }, + style: 'danger', + value: 'click_me_123' + } + ] +}]); +stories.add('Action - Buttons', () => <ActionButton />); + +const Fields = () => UiKitMessage([ + { + type: 'section', + fields: [ + { + type: 'plain_text', + text: '*this is plain_text text*', + emoji: true + }, + { + type: 'plain_text', + text: '*this is plain_text text*', + emoji: true + }, + { + type: 'plain_text', + text: '*this is plain_text text*', + emoji: true + }, { - UiKitMessage([ - { - type: 'section', - fields: [ - { - type: 'plain_text', - text: '*this is plain_text text*', - emoji: true - }, - { - type: 'plain_text', - text: '*this is plain_text text*', - emoji: true - }, - { - type: 'plain_text', - text: '*this is plain_text text*', - emoji: true - }, - { - type: 'plain_text', - text: '*this is plain_text text*', - emoji: true - }, - { - type: 'plain_text', - text: '*this is plain_text text*', - emoji: true - } - ] - }]) + type: 'plain_text', + text: '*this is plain_text text*', + emoji: true + }, + { + type: 'plain_text', + text: '*this is plain_text text*', + emoji: true } + ] + }]); +stories.add('Fields', () => <Fields />); - <Separator title='Action - Select' /> - { - UiKitMessage([{ - type: 'actions', - elements: [ - { - type: 'conversations_select', - placeholder: { - type: 'plain_text', - text: 'Select a conversation', - emoji: true - } - }, - { - type: 'channels_select', - placeholder: { - type: 'plain_text', - text: 'Select a channel', - emoji: true - } - }, - { - type: 'users_select', - placeholder: { - type: 'plain_text', - text: 'Select a user', - emoji: true - } - }, - { - type: 'static_select', - placeholder: { - type: 'plain_text', - text: 'Select an item', - emoji: true - }, - options: [ - { - text: { - type: 'plain_text', - text: 'Excellent item 1', - emoji: true - }, - value: 'value-0' - }, - { - text: { - type: 'plain_text', - text: 'Fantastic item 2', - emoji: true - }, - value: 'value-1' - }, - { - text: { - type: 'plain_text', - text: 'Nifty item 3', - emoji: true - }, - value: 'value-2' - }, - { - text: { - type: 'plain_text', - text: 'Pretty good item 4', - emoji: true - }, - value: 'value-3' - } - ] - } - ] - }]) +const ActionSelect = () => UiKitMessage([{ + type: 'actions', + elements: [ + { + type: 'conversations_select', + placeholder: { + type: 'plain_text', + text: 'Select a conversation', + emoji: true } - </ScrollView> - </SafeAreaView> -); + }, + { + type: 'channels_select', + placeholder: { + type: 'plain_text', + text: 'Select a channel', + emoji: true + } + }, + { + type: 'users_select', + placeholder: { + type: 'plain_text', + text: 'Select a user', + emoji: true + } + }, + { + type: 'static_select', + placeholder: { + type: 'plain_text', + text: 'Select an item', + emoji: true + }, + options: [ + { + text: { + type: 'plain_text', + text: 'Excellent item 1', + emoji: true + }, + value: 'value-0' + }, + { + text: { + type: 'plain_text', + text: 'Fantastic item 2', + emoji: true + }, + value: 'value-1' + }, + { + text: { + type: 'plain_text', + text: 'Nifty item 3', + emoji: true + }, + value: 'value-2' + }, + { + text: { + type: 'plain_text', + text: 'Pretty good item 4', + emoji: true + }, + value: 'value-3' + } + ] + } + ] +}]); +stories.add('Action - Select', () => <ActionSelect />); + +// stories.add('Section', () => UiKitMessage([{ +// type: 'section', +// text: { +// type: 'mrkdwn', +// text: 'Section' +// } +// }])); diff --git a/storybook/stories/UiKitModal.js b/storybook/stories/UiKitModal.js index ddbfab6a631..2ec9e1da6b0 100644 --- a/storybook/stories/UiKitModal.js +++ b/storybook/stories/UiKitModal.js @@ -1,12 +1,12 @@ +/* eslint-disable import/no-extraneous-dependencies */ import React from 'react'; import { ScrollView, StyleSheet, SafeAreaView } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; import { UiKitModal, UiKitComponent } from '../../app/containers/UIKit'; import { KitContext, defaultContext } from '../../app/containers/UIKit/utils'; -import StoriesSeparator from './StoriesSeparator'; - -// eslint-disable-next-line react/prop-types -const Separator = ({ title }) => <StoriesSeparator title={title} theme='light' />; +import MessageContext from '../../app/containers/message/Context'; +import { themes } from '../../app/constants/colors'; const styles = StyleSheet.create({ container: { @@ -18,547 +18,566 @@ const styles = StyleSheet.create({ } }); -export default () => ( - <SafeAreaView style={styles.container}> - <ScrollView style={[styles.container, styles.padding]} keyboardShouldPersistTaps='always'> - <Separator title='Modal - Section and Selects' /> +const user = { + id: 'y8bd77ptZswPj3EW8', + username: 'diego.mello', + token: '79q6lH40W4ZRGLOshDiDiVlQaCc4f_lU9HNdHLAzuHz' +}; + +const baseUrl = 'https://open.rocket.chat'; + +const messageDecorator = story => ( + <MessageContext.Provider + value={{ + user, + baseUrl, + onPress: () => {}, + onLongPress: () => {}, + reactionInit: () => {}, + onErrorPress: () => {}, + replyBroadcast: () => {}, + onReactionPress: () => {}, + onDiscussionPress: () => {}, + onReactionLongPress: () => {}, + threadBadgeColor: themes.light.tunreadColor + }} + > + {story()} + </MessageContext.Provider> +); + +const stories = storiesOf('UiKitModal', module) + .addDecorator(story => <SafeAreaView style={styles.container}>{story()}</SafeAreaView>) + .addDecorator(story => <ScrollView style={[styles.container, styles.padding]} keyboardShouldPersistTaps='always'>{story()}</ScrollView>) + .addDecorator(messageDecorator); + +const ModalSectionSelects = () => UiKitModal([ + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Rocket.Chat is free, unlimited and open source* 🚀\nIf you have any doubt ask to @rocketcat' + } + }, + { + type: 'divider' + }, + { + type: 'section', + fields: [ { - UiKitModal([ - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Rocket.Chat is free, unlimited and open source* 🚀\nIf you have any doubt ask to @rocketcat' - } - }, - { - type: 'divider' - }, - { - type: 'section', - fields: [ - { - type: 'mrkdwn', - text: '*Text 1*\nDescription, Mussum Ipsum, cacilds vidis litro' - }, - { - type: 'mrkdwn', - text: '*Text 2*\nDescription, Mussum Ipsum, cacilds vidis litro' - } - ] - }, - { - type: 'section', - fields: [ - { - type: 'mrkdwn', - text: '*Text 3*\nDescription, Mussum Ipsum, cacilds vidis litro' - }, - { - type: 'mrkdwn', - text: '*Text 4*\nDescription, Mussum Ipsum, cacilds vidis litro' - } - ] - } - ]) + type: 'mrkdwn', + text: '*Text 1*\nDescription, Mussum Ipsum, cacilds vidis litro' + }, + { + type: 'mrkdwn', + text: '*Text 2*\nDescription, Mussum Ipsum, cacilds vidis litro' } - - <Separator title='Modal - Section Accessories' /> + ] + }, + { + type: 'section', + fields: [ { - UiKitModal([ - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Bruno Quadros*,\nPlease review your details for your *travel expense*.\nExpense no. *DA921*.' - }, - accessory: { - type: 'image', - imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png' - } - }, - { - type: 'divider' - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Date:*\n11/02/2020' - } - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Category:*\nTravel' - } - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Cost:*\n$150.00 USD' - } - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Notes:*\nWebSummit Conference' - } - } - ]) + type: 'mrkdwn', + text: '*Text 3*\nDescription, Mussum Ipsum, cacilds vidis litro' + }, + { + type: 'mrkdwn', + text: '*Text 4*\nDescription, Mussum Ipsum, cacilds vidis litro' } + ] + } +]); +stories.add('Modal - Section and Selects', () => <ModalSectionSelects />); - <Separator title='Modal - Form Input' /> - { - UiKitModal([ - { - type: 'input', - element: { - type: 'plain_text_input' - }, - label: { - type: 'plain_text', - text: 'Outgoing Title', - emoji: true - }, - hint: { - type: 'plain_text', - text: 'Pick something unique!', - emoji: true - } - }, - { - type: 'input', - element: { - type: 'datepicker', - initial_date: '1990-04-28', - placeholder: { - type: 'plain_text', - text: 'Select a date', - emoji: true - } - }, - label: { - type: 'plain_text', - text: 'Set a date', - emoji: true - } - }, - { - type: 'input', - element: { - type: 'multi_static_select', - options: [{ - text: { - type: 'plain_text', - text: 'John' - }, - value: 1 - }, { - text: { - type: 'plain_text', - text: 'Dog' - }, - value: 2 - }] - }, - label: { - type: 'plain_text', - text: 'Share with...', - emoji: true - } - } - ]) +const ModalSectionAccessories = () => UiKitModal([ + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Bruno Quadros*,\nPlease review your details for your *travel expense*.\nExpense no. *DA921*.' + }, + accessory: { + type: 'image', + imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png' + } + }, + { + type: 'divider' + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Date:*\n11/02/2020' + } + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Category:*\nTravel' + } + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Cost:*\n$150.00 USD' + } + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Notes:*\nWebSummit Conference' + } + } +]); +stories.add('Modal - Section Accessories', () => <ModalSectionAccessories />); + +const ModalFormInput = () => UiKitModal([ + { + type: 'input', + element: { + type: 'plain_text_input' + }, + label: { + type: 'plain_text', + text: 'Outgoing Title', + emoji: true + }, + hint: { + type: 'plain_text', + text: 'Pick something unique!', + emoji: true + } + }, + { + type: 'input', + element: { + type: 'datepicker', + initial_date: '1990-04-28', + placeholder: { + type: 'plain_text', + text: 'Select a date', + emoji: true } + }, + label: { + type: 'plain_text', + text: 'Set a date', + emoji: true + } + }, + { + type: 'input', + element: { + type: 'multi_static_select', + options: [{ + text: { + type: 'plain_text', + text: 'John' + }, + value: 1 + }, { + text: { + type: 'plain_text', + text: 'Dog' + }, + value: 2 + }] + }, + label: { + type: 'plain_text', + text: 'Share with...', + emoji: true + } + } +]); +stories.add('Modal - Form Input', () => <ModalFormInput />); - <Separator title='Modal - Form TextArea' /> - { - UiKitModal([ - { - type: 'context', - elements: [{ - type: 'mrkdwn', - text: 'Task: ZOL-994' - }] - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: 'Update Spec final assets' - }, - accessory: { - type: 'button', - text: { - type: 'plain_text', - text: 'Change' - } - } - }, - { - type: 'divider' - }, - { - type: 'input', - element: { - type: 'plain_text_input', - multiline: true - }, - placeholder: { - type: 'plain_text', - text: 'Write Something', - emoji: true - }, - label: { - type: 'plain_text', - text: 'Notes', - emoji: true - }, - hint: { - type: 'plain_text', - text: 'Please take the time to compose something short', - emoji: true - }, - description: { - type: 'plain_text', - text: 'Describe your update', - emoji: true - } - } - ]) +const ModalFormTextArea = () => UiKitModal([ + { + type: 'context', + elements: [{ + type: 'mrkdwn', + text: 'Task: ZOL-994' + }] + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: 'Update Spec final assets' + }, + accessory: { + type: 'button', + text: { + type: 'plain_text', + text: 'Change' } + } + }, + { + type: 'divider' + }, + { + type: 'input', + element: { + type: 'plain_text_input', + multiline: true + }, + placeholder: { + type: 'plain_text', + text: 'Write Something', + emoji: true + }, + label: { + type: 'plain_text', + text: 'Notes', + emoji: true + }, + hint: { + type: 'plain_text', + text: 'Please take the time to compose something short', + emoji: true + }, + description: { + type: 'plain_text', + text: 'Describe your update', + emoji: true + } + } +]); +stories.add('Modal - Form TextArea', () => <ModalFormTextArea />); - <Separator title='Modal - Images' /> +const ModalImages = () => UiKitModal([ + { + type: 'image', + title: { + type: 'plain_text', + text: 'Example Image', + emoji: true + }, + imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', + alt_text: 'Example Image' + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: 'How could be the life in Mars?' + } + }, + { + type: 'context', + elements: [ { - UiKitModal([ - { - type: 'image', - title: { - type: 'plain_text', - text: 'Example Image', - emoji: true - }, - imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png', - alt_text: 'Example Image' - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: 'How could be the life in Mars?' - } - }, - { - type: 'context', - elements: [ - { - type: 'image', - imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png' - }, - { - type: 'mrkdwn', - text: 'November 25, 2019' - } - ] - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: '*Next stop, Mars!*\nMussum Ipsum, cacilds vidis litro abertis. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Diuretics paradis num copo é motivis de denguis. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis. Aenean aliquam molestie leo, vitae iaculis nisl.' - } - } - ]) + type: 'image', + imageUrl: 'https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/icon-circle-256.png' + }, + { + type: 'mrkdwn', + text: 'November 25, 2019' } + ] + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: '*Next stop, Mars!*\nMussum Ipsum, cacilds vidis litro abertis. Admodum accumsan disputationi eu sit. Vide electram sadipscing et per. Diuretics paradis num copo é motivis de denguis. Mais vale um bebadis conhecidiss, que um alcoolatra anonimis. Aenean aliquam molestie leo, vitae iaculis nisl.' + } + } +]); +stories.add('Modal - Images', () => <ModalImages />); - <Separator title='Modal - Actions' /> +const ModalActions = () => UiKitModal([{ + type: 'input', + element: { + type: 'plain_text_input' + }, + label: { + type: 'plain_text', + text: 'Title', + emoji: true + } +}, +{ + type: 'section', + text: { + type: 'mrkdwn', + text: 'Details' + } +}, +{ + type: 'section', + accessory: { + type: 'static_select', + options: [ { - UiKitModal([{ - type: 'input', - element: { - type: 'plain_text_input' - }, - label: { + value: 1, + text: { + type: 'plain_text', + text: 'TypeL Task' + } + }, { + value: 2, + text: { + type: 'plain_text', + text: 'second button' + } + }] + } +}, +{ + type: 'section', + accessory: { + type: 'static_select', + options: [ + { + value: 1, + text: { + type: 'plain_text', + text: 'Project: Space (winter)' + } + }, { + value: 2, + text: { + type: 'plain_text', + text: 'second button' + } + }] + } +}, +{ + type: 'section', + accessory: { + type: 'static_select', + options: [ + { + value: 1, + text: { + type: 'plain_text', + text: 'Priority (optional)' + } + }, { + value: 2, + text: { + type: 'plain_text', + text: 'second button' + } + }] + } +}, +{ + type: 'section', + accessory: { + type: 'static_select', + options: [ + { + value: 1, + text: { + type: 'plain_text', + text: 'Assinee (optional)' + } + }, { + value: 2, + text: { + type: 'plain_text', + text: 'second button' + } + }] + } +}, +{ + type: 'input', + element: { + type: 'plain_text_input', + multiline: true + }, + placeholder: { + type: 'plain_text', + text: 'Write Something', + emoji: true + }, + label: { + type: 'plain_text', + text: 'Description', + emoji: true + } +}]); +stories.add('Modal - Actions', () => <ModalActions />); + +const ModalContextsDividers = () => UiKitModal([ + { + type: 'context', + elements: [{ + type: 'mrkdwn', + text: 'Due today' + }] + }, + { + type: 'divider' + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: 'Finish interface componests (3 hours)' + }, + accessory: { + blockId: 'overflow-1', + type: 'overflow', + options: [ + { + text: { type: 'plain_text', - text: 'Title', + text: 'Details', emoji: true - } + }, + value: 'value-0' }, { - type: 'section', text: { - type: 'mrkdwn', - text: 'Details' - } - }, - { - type: 'section', - accessory: { - type: 'static_select', - options: [ - { - value: 1, - text: { - type: 'plain_text', - text: 'TypeL Task' - } - }, { - value: 2, - text: { - type: 'plain_text', - text: 'second button' - } - }] - } - }, - { - type: 'section', - accessory: { - type: 'static_select', - options: [ - { - value: 1, - text: { - type: 'plain_text', - text: 'Project: Space (winter)' - } - }, { - value: 2, - text: { - type: 'plain_text', - text: 'second button' - } - }] - } - }, - { - type: 'section', - accessory: { - type: 'static_select', - options: [ - { - value: 1, - text: { - type: 'plain_text', - text: 'Priority (optional)' - } - }, { - value: 2, - text: { - type: 'plain_text', - text: 'second button' - } - }] - } - }, + type: 'plain_text', + text: 'Remove', + emoji: true + }, + value: 'value-1' + } + ] + } + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: 'English Class (1 hour)' + }, + accessory: { + blockId: 'overflow-2', + type: 'overflow', + options: [ { - type: 'section', - accessory: { - type: 'static_select', - options: [ - { - value: 1, - text: { - type: 'plain_text', - text: 'Assinee (optional)' - } - }, { - value: 2, - text: { - type: 'plain_text', - text: 'second button' - } - }] - } + text: { + type: 'plain_text', + text: 'Details', + emoji: true + }, + value: 'value-0' }, { - type: 'input', - element: { - type: 'plain_text_input', - multiline: true - }, - placeholder: { + text: { type: 'plain_text', - text: 'Write Something', + text: 'Remove', emoji: true }, - label: { + value: 'value-1' + } + ] + } + }, + { + type: 'section', + text: { + type: 'mrkdwn', + text: 'Send an email to John (15min)' + }, + accessory: { + blockId: 'overflow-3', + type: 'overflow', + options: [ + { + text: { type: 'plain_text', - text: 'Description', + text: 'Details', emoji: true - } - }]) - } - - <Separator title='Modal - Contexts and Dividers' /> - { - UiKitModal([ - { - type: 'context', - elements: [{ - type: 'mrkdwn', - text: 'Due today' - }] }, - { - type: 'divider' - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: 'Finish interface componests (3 hours)' - }, - accessory: { - blockId: 'overflow-1', - type: 'overflow', - options: [ - { - text: { - type: 'plain_text', - text: 'Details', - emoji: true - }, - value: 'value-0' - }, - { - text: { - type: 'plain_text', - text: 'Remove', - emoji: true - }, - value: 'value-1' - } - ] - } - }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: 'English Class (1 hour)' - }, - accessory: { - blockId: 'overflow-2', - type: 'overflow', - options: [ - { - text: { - type: 'plain_text', - text: 'Details', - emoji: true - }, - value: 'value-0' - }, - { - text: { - type: 'plain_text', - text: 'Remove', - emoji: true - }, - value: 'value-1' - } - ] - } + value: 'value-0' + }, + { + text: { + type: 'plain_text', + text: 'Remove', + emoji: true }, - { - type: 'section', - text: { - type: 'mrkdwn', - text: 'Send an email to John (15min)' - }, - accessory: { - blockId: 'overflow-3', - type: 'overflow', - options: [ - { - text: { - type: 'plain_text', - text: 'Details', - emoji: true - }, - value: 'value-0' - }, - { - text: { - type: 'plain_text', - text: 'Remove', - emoji: true - }, - value: 'value-1' - } - ] - } - } - ]) - } + value: 'value-1' + } + ] + } + } +]); +stories.add('Modal - Contexts and Dividers', () => <ModalContextsDividers />); - <Separator title='Modal - Input with error' /> - <KitContext.Provider value={{ ...defaultContext, errors: { 'input-test': 'error test' } }}> - <UiKitComponent - render={UiKitModal} - blocks={[{ - type: 'input', - element: { - type: 'plain_text_input', - actionId: 'input-test' - }, - label: { - type: 'plain_text', - text: 'Label', - emoji: true - } - }]} - /> - </KitContext.Provider> +const ModalInputWithError = () => ( + <KitContext.Provider value={{ ...defaultContext, errors: { 'input-test': 'error test' } }}> + <UiKitComponent + render={UiKitModal} + blocks={[{ + type: 'input', + element: { + type: 'plain_text_input', + actionId: 'input-test' + }, + label: { + type: 'plain_text', + text: 'Label', + emoji: true + } + }]} + /> + </KitContext.Provider> +); +stories.add('Modal - Input with error', () => <ModalInputWithError />); - <Separator title='Modal - Multilne with error' /> - <KitContext.Provider value={{ ...defaultContext, errors: { 'input-test': 'error test' } }}> - <UiKitComponent - render={UiKitModal} - blocks={[{ - type: 'input', - element: { - type: 'plain_text_input', - multiline: true, - actionId: 'input-test' - }, - label: { - type: 'plain_text', - text: 'Label', - emoji: true - } - }]} - /> - </KitContext.Provider> +const ModalMultilneWithError = () => ( + <KitContext.Provider value={{ ...defaultContext, errors: { 'input-test': 'error test' } }}> + <UiKitComponent + render={UiKitModal} + blocks={[{ + type: 'input', + element: { + type: 'plain_text_input', + multiline: true, + actionId: 'input-test' + }, + label: { + type: 'plain_text', + text: 'Label', + emoji: true + } + }]} + /> + </KitContext.Provider> +); +stories.add('Modal - Multilne with error', () => <ModalMultilneWithError />); - <Separator title='Modal - DatePicker with error' /> - <KitContext.Provider value={{ ...defaultContext, errors: { 'input-test': 'error test' } }}> - <UiKitComponent - render={UiKitModal} - blocks={[{ - type: 'input', - element: { - type: 'datepicker', - initial_date: '1990-04-28', - actionId: 'input-test', - placeholder: { - type: 'plain_text', - text: 'Select a date', - emoji: true - } - }, - label: { - type: 'plain_text', - text: 'Label', - emoji: true - } - }]} - /> - </KitContext.Provider> - </ScrollView> - </SafeAreaView> +const ModalDatePickerWithError = () => ( + <KitContext.Provider value={{ ...defaultContext, errors: { 'input-test': 'error test' } }}> + <UiKitComponent + render={UiKitModal} + blocks={[{ + type: 'input', + element: { + type: 'datepicker', + initial_date: '1990-04-28', + actionId: 'input-test', + placeholder: { + type: 'plain_text', + text: 'Select a date', + emoji: true + } + }, + label: { + type: 'plain_text', + text: 'Label', + emoji: true + } + }]} + /> + </KitContext.Provider> ); +stories.add('Modal - DatePicker with error', () => <ModalDatePickerWithError />); diff --git a/storybook/stories/index.js b/storybook/stories/index.js index cd84085c197..20bfc4f2598 100644 --- a/storybook/stories/index.js +++ b/storybook/stories/index.js @@ -1,37 +1,22 @@ /* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions */ -import React from 'react'; -import { Provider } from 'react-redux'; import { createStore, combineReducers } from 'redux'; -import { storiesOf } from '@storybook/react-native'; -import RoomItem from './RoomItem'; +import './RoomItem'; import './List'; import './ServerItem'; -import Message from './Message'; -import UiKitMessage from './UiKitMessage'; -import UiKitModal from './UiKitModal'; -import Markdown from './Markdown'; +import './Message'; +import './UiKitMessage'; +import './UiKitModal'; +import './Markdown'; import './HeaderButtons'; import './UnreadBadge'; import '../../app/views/ThreadMessagesView/Item.stories.js'; +import './Avatar'; import '../../app/containers/BackgroundContainer/index.stories.js'; import '../../app/containers/RoomHeader/RoomHeader.stories.js'; -import Avatar from './Avatar'; -// import RoomViewHeader from './RoomViewHeader'; - -import MessageContext from '../../app/containers/message/Context'; -import { themes } from '../../app/constants/colors'; - -// MessageProvider -const baseUrl = 'https://open.rocket.chat'; -const user = { - id: '', - username: 'diego.mello', - token: '' -}; // Change here to see themed storybook -const theme = 'light'; +export const theme = 'light'; const reducers = combineReducers({ settings: () => ({}), @@ -52,47 +37,4 @@ const reducers = combineReducers({ meteor: () => ({ connected: true }), activeUsers: () => ({ abc: { status: 'online', statusText: 'dog' } }) }); -const store = createStore(reducers); - -const messageDecorator = story => ( - <MessageContext.Provider - value={{ - user, - baseUrl, - onPress: () => {}, - onLongPress: () => {}, - reactionInit: () => {}, - onErrorPress: () => {}, - replyBroadcast: () => {}, - onReactionPress: () => {}, - onDiscussionPress: () => {}, - onReactionLongPress: () => {}, - threadBadgeColor: themes.light.tunreadColor - }} - > - {story()} - </MessageContext.Provider> -); - -storiesOf('RoomItem', module) - .addDecorator(story => <Provider store={store}>{story()}</Provider>) - .add('list roomitem', () => <RoomItem theme={theme} />); -storiesOf('Message', module) - .addDecorator(story => <Provider store={store}>{story()}</Provider>) - .addDecorator(messageDecorator) - .add('list message', () => <Message theme={theme} />); - -storiesOf('UiKitMessage', module) - .addDecorator(messageDecorator) - .add('list uikitmessage', () => <UiKitMessage theme={theme} />); -storiesOf('UiKitModal', module) - .addDecorator(messageDecorator) - .add('list UiKitModal', () => <UiKitModal theme={theme} />); -storiesOf('Markdown', module) - .add('list Markdown', () => <Markdown theme={theme} />); -storiesOf('Avatar', module) - .add('list Avatar', () => <Avatar theme={theme} />); - -// FIXME: I couldn't make these pass on jest :( -// storiesOf('RoomViewHeader', module) -// .add('list', () => <RoomViewHeader theme='black' />); +export const store = createStore(reducers); From a329738bc84cbccbb465934ff3da23ca6e198911 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 19 Apr 2021 17:44:31 -0300 Subject: [PATCH 111/177] Bump version to 4.17.0 (#3083) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 8e55d11da24..e3da57bb90f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.16.1" + versionName "4.17.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index e1ea97e83ef..bbebd2ee7b6 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1694,7 +1694,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.16.1; + MARKETING_VERSION = 4.17.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1731,7 +1731,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.16.1; + MARKETING_VERSION = 4.17.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index dd599d645db..4357a8abb7a 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.16.1</string> + <string>4.17.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 2f523baaa49..e38798d7361 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.16.1</string> + <string>4.17.0</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 5b9589de24f..7e0e5d6da5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.16.1", + "version": "4.17.0", "private": true, "scripts": { "start": "react-native start", From eb38313075eef8f73315a7a88dfa20a1ffc5224b Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Tue, 27 Apr 2021 13:18:15 -0300 Subject: [PATCH 112/177] [REGRESSION] Fallback not working when device's language is available (#3091) * Always add 'en' i18n * Add tests --- app/i18n/index.js | 1 + app/i18n/locales/nl.json | 1 - e2e/tests/assorted/04-setting.spec.js | 13 --- e2e/tests/assorted/12-i18n.spec.js | 114 ++++++++++++++++++++++++++ 4 files changed, 115 insertions(+), 14 deletions(-) create mode 100644 e2e/tests/assorted/12-i18n.spec.js diff --git a/app/i18n/index.js b/app/i18n/index.js index c82e9e17ece..ebe43076936 100644 --- a/app/i18n/index.js +++ b/app/i18n/index.js @@ -95,6 +95,7 @@ export const setLanguage = (l) => { moment.locale(toMomentLocale(locale)); }; +i18n.translations = { en: translations.en?.() }; const defaultLanguage = { languageTag: 'en', isRTL: false }; const availableLanguages = Object.keys(translations); const { languageTag } = RNLocalize.findBestAvailableLanguage(availableLanguages) || defaultLanguage; diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index 903da5e1f90..fee4b826fc5 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -123,7 +123,6 @@ "creating_invite": "uitnodiging maken", "Channel_Name": "Kanaal Name", "Channels": "Kanalen", - "Chats": "Chats", "Call_already_ended": "Gesprek al beeïndigd!", "Click_to_join": "Klik om lid te worden!", "Close": "Sluiten", diff --git a/e2e/tests/assorted/04-setting.spec.js b/e2e/tests/assorted/04-setting.spec.js index a83b5b65386..14bdbe71f39 100644 --- a/e2e/tests/assorted/04-setting.spec.js +++ b/e2e/tests/assorted/04-setting.spec.js @@ -63,19 +63,6 @@ describe('Settings screen', () => { }); describe('Usage', async() => { - it('should navigate to language view', async() => { - await element(by.id('settings-view-language')).tap(); - await waitFor(element(by.id('language-view'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('language-view-zh-CN'))).toExist(); - await expect(element(by.id('language-view-de'))).toExist(); - await expect(element(by.id('language-view-en'))).toExist(); - await expect(element(by.id('language-view-fr'))).toExist(); - await expect(element(by.id('language-view-pt-BR'))).toExist(); - await expect(element(by.id('language-view-pt-PT'))).toExist(); - await expect(element(by.id('language-view-ru'))).toExist(); - await tapBack(); - }); - it('should tap clear cache and navigate to roomslistview', async() => { await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); await element(by.id('settings-view-clear-cache')).tap(); diff --git a/e2e/tests/assorted/12-i18n.spec.js b/e2e/tests/assorted/12-i18n.spec.js new file mode 100644 index 00000000000..13e7c79bebe --- /dev/null +++ b/e2e/tests/assorted/12-i18n.spec.js @@ -0,0 +1,114 @@ +const { + device, element, by, waitFor +} = require('detox'); +const { navigateToLogin, login, sleep } = require('../../helpers/app'); +const { post } = require('../../helpers/data_setup'); + +const data = require('../../data'); +const testuser = data.users.regular +const defaultLaunchArgs = { permissions: { notifications: 'YES' } }; + +const navToLanguage = async() => { + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('sidebar-settings'))).toBeVisible().withTimeout(2000); + await element(by.id('sidebar-settings')).tap(); + await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); + await element(by.id('settings-view-language')).tap(); + await waitFor(element(by.id('language-view'))).toBeVisible().withTimeout(10000); +}; + +describe('i18n', () => { + describe('OS language', () => { + it('OS set to \'en\' and proper translate to \'en\'', async() => { + await device.launchApp({ + ...defaultLaunchArgs, + languageAndLocale: { + language: "en", + locale: "en" + }, + delete: true + }); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); + await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); + await expect(element(by.id('create-workspace-button').and(by.label('Create a new workspace')))).toBeVisible(); + }); + + it('OS set to unavailable language and fallback to \'en\'', async() => { + await device.launchApp({ + ...defaultLaunchArgs, + languageAndLocale: { + language: "es-MX", + locale: "es-MX" + } + }); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); + await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); + await expect(element(by.id('create-workspace-button').and(by.label('Create a new workspace')))).toBeVisible(); + }); + + /** + * This test might become outdated as soon as we support the language + * Although this seems to be a bad approach, that's the intention for having fallback enabled + */ + it('OS set to available language and fallback to \'en\' on strings missing translation', async() => { + await device.launchApp({ + ...defaultLaunchArgs, + languageAndLocale: { + language: "nl", + locale: "nl" + } + }); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); + await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); // Missing nl translation + await expect(element(by.id('create-workspace-button').and(by.label('Een nieuwe workspace maken')))).toBeVisible(); + }); + }); + + describe('Rocket.Chat language', () => { + before(async() => { + await device.launchApp(defaultLaunchArgs); + await navigateToLogin(); + await login(testuser.username, testuser.password); + }); + + it('should select \'en\'', async() => { + await navToLanguage(); + await element(by.id('language-view-en')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('sidebar-chats').withDescendant(by.label('Chats')))).toBeVisible(); + await expect(element(by.id('sidebar-profile').withDescendant(by.label('Profile')))).toBeVisible(); + await expect(element(by.id('sidebar-settings').withDescendant(by.label('Settings')))).toBeVisible(); + await element(by.id('sidebar-close-drawer')).tap(); + }); + + it('should select \'nl\' and fallback to \'en\'', async() => { + await navToLanguage(); + await element(by.id('language-view-nl')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('sidebar-chats').withDescendant(by.label('Chats')))).toBeVisible(); // fallback to en + await expect(element(by.id('sidebar-profile').withDescendant(by.label('Profiel')))).toBeVisible(); + await expect(element(by.id('sidebar-settings').withDescendant(by.label('Instellingen')))).toBeVisible(); + await element(by.id('sidebar-close-drawer')).tap(); + }); + + it('should set unsupported language and fallback to \'en\'', async() => { + await post('users.setPreferences', { data: { language: 'eo' } }); // Set language to Esperanto + await device.launchApp(defaultLaunchArgs); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + // give the app some time to apply new language + await sleep(3000); + await expect(element(by.id('sidebar-chats').withDescendant(by.label('Chats')))).toBeVisible(); + await expect(element(by.id('sidebar-profile').withDescendant(by.label('Profile')))).toBeVisible(); + await expect(element(by.id('sidebar-settings').withDescendant(by.label('Settings')))).toBeVisible(); + await post('users.setPreferences', { data: { language: 'en' } }); // Set back to english + }); + }) +}); \ No newline at end of file From 6798f039f3ba7565bd61930083ad582fa7dda8d0 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Tue, 27 Apr 2021 13:21:22 -0300 Subject: [PATCH 113/177] Bump version to 4.16.2 (#3092) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index e3da57bb90f..69975e5d78c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.17.0" + versionName "4.16.2" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index bbebd2ee7b6..13f5b8caca5 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1694,7 +1694,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.17.0; + MARKETING_VERSION = 4.16.2; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1731,7 +1731,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.17.0; + MARKETING_VERSION = 4.16.2; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 4357a8abb7a..e6129268e43 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.17.0</string> + <string>4.16.2</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index e38798d7361..38a2e4cf666 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.17.0</string> + <string>4.16.2</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 7e0e5d6da5c..855b1df7312 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.17.0", + "version": "4.16.2", "private": true, "scripts": { "start": "react-native start", From fc52286bfa9e256e97941a06b7df0d5c7adac9af Mon Sep 17 00:00:00 2001 From: Noach Magedman <nmagedman@gmail.com> Date: Wed, 5 May 2021 19:02:26 +0300 Subject: [PATCH 114/177] [FIX] Connecting stream listener not being cleared (#3008) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/lib/rocketchat.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index fc73e375fa0..3d8c50b7cb1 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -196,6 +196,10 @@ const RocketChat = { clearTimeout(this.connectTimeout); } + if (this.connectingListener) { + this.connectingListener.then(this.stopListener); + } + if (this.connectedListener) { this.connectedListener.then(this.stopListener); } @@ -243,7 +247,7 @@ const RocketChat = { sdkConnect(); - this.connectedListener = this.sdk.onStreamData('connecting', () => { + this.connectingListener = this.sdk.onStreamData('connecting', () => { reduxStore.dispatch(connectRequest()); }); From 8f571fd0292dedbadbd0934626b763ab625bcf51 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 6 May 2021 11:06:52 -0300 Subject: [PATCH 115/177] [FIX] App making calls to DDP after socket was killed by OS (#3062) Co-authored-by: Gerzon Z <gerzonc@icloud.com> --- app/lib/rocketchat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 3d8c50b7cb1..84f85a6f280 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -1140,7 +1140,7 @@ const RocketChat = { methodCall(...args) { return new Promise(async(resolve, reject) => { try { - const result = await this.sdk.methodCall(...args, this.code || ''); + const result = await this.sdk?.methodCall(...args, this.code || ''); return resolve(result); } catch (e) { if (e.error && (e.error === 'totp-required' || e.error === 'totp-invalid')) { From 1f0ff830a331170c7da7156576db7f651cee6552 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 12 May 2021 15:01:29 -0400 Subject: [PATCH 116/177] [NEW] Create Team (#3082) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/definition/ITeam.js | 5 ++ app/i18n/locales/en.json | 11 +++- app/lib/rocketchat.js | 20 ++++++- app/sagas/createChannel.js | 36 ++++++++++-- app/utils/log/events.js | 1 + app/utils/room.js | 2 + app/views/CreateChannelView.js | 72 +++++++++++++++--------- app/views/NewMessageView.js | 14 ++++- app/views/RoomView/RightButtons.js | 10 ++-- app/views/RoomView/index.js | 10 +++- app/views/SelectedUsersView.js | 15 ++++- e2e/data.js | 5 ++ e2e/helpers/data_setup.js | 26 +++++++++ e2e/tests/team/01-createteam.spec.js | 82 ++++++++++++++++++++++++++++ 14 files changed, 265 insertions(+), 44 deletions(-) create mode 100644 app/definition/ITeam.js create mode 100644 e2e/tests/team/01-createteam.spec.js diff --git a/app/definition/ITeam.js b/app/definition/ITeam.js new file mode 100644 index 00000000000..10919715d17 --- /dev/null +++ b/app/definition/ITeam.js @@ -0,0 +1,5 @@ +// https://github.com/RocketChat/Rocket.Chat/blob/develop/definition/ITeam.ts +export const TEAM_TYPE = { + PUBLIC: 0, + PRIVATE: 1 +}; diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index ec289d27d8b..58438f31954 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -709,5 +709,12 @@ "This_room_encryption_has_been_disabled_by__username_": "This room's encryption has been disabled by {{username}}", "Teams": "Teams", "No_team_channels_found": "No channels found", - "Team_not_found": "Team not found" -} \ No newline at end of file + "Team_not_found": "Team not found", + "Create_Team": "Create Team", + "Team_Name": "Team Name", + "Private_Team": "Private Team", + "Read_Only_Team": "Read Only Team", + "Broadcast_Team": "Broadcast Team", + "creating_team" : "creating team", + "team-name-already-exists": "A team with that name already exists" +} diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 84f85a6f280..adc7f80ffe0 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -60,6 +60,7 @@ import UserPreferences from './userPreferences'; import { Encryption } from './encryption'; import EventEmitter from '../utils/events'; import { sanitizeLikeString } from './database/utils'; +import { TEAM_TYPE } from '../definition/ITeam'; const TOKEN_KEY = 'reactnativemeteor_usertoken'; const CURRENT_SERVER = 'currentServer'; @@ -732,7 +733,24 @@ const RocketChat = { prid, pmid, t_name, reply, users, encrypted }); }, - + createTeam({ + name, users, type, readOnly, broadcast, encrypted + }) { + const params = { + name, + users, + type: type ? TEAM_TYPE.PRIVATE : TEAM_TYPE.PUBLIC, + room: { + readOnly, + extraData: { + broadcast, + encrypted + } + } + }; + // RC 3.13.0 + return this.post('teams.create', params); + }, joinRoom(roomId, joinCode, type) { // TODO: join code // RC 0.48.0 diff --git a/app/sagas/createChannel.js b/app/sagas/createChannel.js index 613aedec2cb..f2ecfe76d19 100644 --- a/app/sagas/createChannel.js +++ b/app/sagas/createChannel.js @@ -21,6 +21,10 @@ const createGroupChat = function createGroupChat() { return RocketChat.createGroupChat(); }; +const createTeam = function createTeam(data) { + return RocketChat.createTeam(data); +}; + const handleRequest = function* handleRequest({ data }) { try { const auth = yield select(state => state.login.isAuthenticated); @@ -29,7 +33,21 @@ const handleRequest = function* handleRequest({ data }) { } let sub; - if (data.group) { + if (data.isTeam) { + const { + type, + readOnly, + broadcast, + encrypted + } = data; + logEvent(events.CR_CREATE, { + type, + readOnly, + broadcast, + encrypted + }); + sub = yield call(createTeam, data); + } else if (data.group) { logEvent(events.SELECTED_USERS_CREATE_GROUP); const result = yield call(createGroupChat); if (result.success) { @@ -56,7 +74,7 @@ const handleRequest = function* handleRequest({ data }) { const subCollection = db.get('subscriptions'); yield db.action(async() => { await subCollection.create((s) => { - s._raw = sanitizedRaw({ id: sub.rid }, subCollection.schema); + s._raw = sanitizedRaw({ id: sub.team ? sub.team.roomId : sub.rid }, subCollection.schema); Object.assign(s, sub); }); }); @@ -64,7 +82,17 @@ const handleRequest = function* handleRequest({ data }) { // do nothing } - yield put(createChannelSuccess(sub)); + let successParams = {}; + if (data.isTeam) { + successParams = { + ...sub.team, + rid: sub.team.roomId, + t: sub.team.type ? 'p' : 'c' + }; + } else { + successParams = data; + } + yield put(createChannelSuccess(successParams)); } catch (err) { logEvent(events[data.group ? 'SELECTED_USERS_CREATE_GROUP_F' : 'CR_CREATE_F']); yield put(createChannelFailure(err)); @@ -81,7 +109,7 @@ const handleSuccess = function* handleSuccess({ data }) { const handleFailure = function handleFailure({ err }) { setTimeout(() => { - const msg = err.reason || I18n.t('There_was_an_error_while_action', { action: I18n.t('creating_channel') }); + const msg = err.data ? I18n.t(err.data.error) : err.reason || I18n.t('There_was_an_error_while_action', { action: I18n.t('creating_channel') }); showErrorAlert(msg); }, 300); }; diff --git a/app/utils/log/events.js b/app/utils/log/events.js index c9c9579f83b..490f0dfd3b4 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -88,6 +88,7 @@ export default { // NEW MESSAGE VIEW NEW_MSG_CREATE_CHANNEL: 'new_msg_create_channel', + NEW_MSG_CREATE_TEAM: 'new_msg_create_team', NEW_MSG_CREATE_GROUP_CHAT: 'new_msg_create_group_chat', NEW_MSG_CREATE_DISCUSSION: 'new_msg_create_discussion', NEW_MSG_CHAT_WITH_USER: 'new_msg_chat_with_user', diff --git a/app/utils/room.js b/app/utils/room.js index 7077c73dcb5..fef926d5fd1 100644 --- a/app/utils/room.js +++ b/app/utils/room.js @@ -45,3 +45,5 @@ export const getBadgeColor = ({ subscription, messageId, theme }) => { }; export const makeThreadName = messageRecord => messageRecord.msg || messageRecord?.attachments[0]?.title; + +export const isTeamRoom = ({ teamId, joined }) => teamId && joined; diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 9d1e450ff2d..8090ef4fea0 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -68,12 +68,9 @@ const styles = StyleSheet.create({ }); class CreateChannelView extends React.Component { - static navigationOptions = () => ({ - title: I18n.t('Create_Channel') - }); - static propTypes = { navigation: PropTypes.object, + route: PropTypes.object, baseUrl: PropTypes.string, create: PropTypes.func.isRequired, removeUser: PropTypes.func.isRequired, @@ -89,12 +86,19 @@ class CreateChannelView extends React.Component { theme: PropTypes.string }; - state = { - channelName: '', - type: true, - readOnly: false, - encrypted: false, - broadcast: false + constructor(props) { + super(props); + const { route } = this.props; + const isTeam = route?.params?.isTeam || false; + this.state = { + channelName: '', + type: true, + readOnly: false, + encrypted: false, + broadcast: false, + isTeam + }; + this.setHeader(); } shouldComponentUpdate(nextProps, nextState) { @@ -134,6 +138,15 @@ class CreateChannelView extends React.Component { return false; } + setHeader = () => { + const { navigation } = this.props; + const { isTeam } = this.state; + + navigation.setOptions({ + title: isTeam ? I18n.t('Create_Team') : I18n.t('Create_Channel') + }); + } + toggleRightButton = (channelName) => { const { navigation } = this.props; navigation.setOptions({ @@ -152,9 +165,11 @@ class CreateChannelView extends React.Component { submit = () => { const { - channelName, type, readOnly, broadcast, encrypted + channelName, type, readOnly, broadcast, encrypted, isTeam } = this.state; - const { users: usersProps, isFetching, create } = this.props; + const { + users: usersProps, isFetching, create + } = this.props; if (!channelName.trim() || isFetching) { return; @@ -163,9 +178,9 @@ class CreateChannelView extends React.Component { // transform users object into array of usernames const users = usersProps.map(user => user.name); - // create channel + // create channel or team create({ - name: channelName, users, type, readOnly, broadcast, encrypted + name: channelName, users, type, readOnly, broadcast, encrypted, isTeam }); Review.pushPositiveEvent(); @@ -196,11 +211,12 @@ class CreateChannelView extends React.Component { } renderType() { - const { type } = this.state; + const { type, isTeam } = this.state; + return this.renderSwitch({ id: 'type', value: type, - label: 'Private_Channel', + label: isTeam ? 'Private_Team' : 'Private_Channel', onValueChange: (value) => { logEvent(events.CR_TOGGLE_TYPE); // If we set the channel as public, encrypted status should be false @@ -210,11 +226,12 @@ class CreateChannelView extends React.Component { } renderReadOnly() { - const { readOnly, broadcast } = this.state; + const { readOnly, broadcast, isTeam } = this.state; + return this.renderSwitch({ id: 'readonly', value: readOnly, - label: 'Read_Only_Channel', + label: isTeam ? 'Read_Only_Team' : 'Read_Only_Channel', onValueChange: (value) => { logEvent(events.CR_TOGGLE_READ_ONLY); this.setState({ readOnly: value }); @@ -244,11 +261,12 @@ class CreateChannelView extends React.Component { } renderBroadcast() { - const { broadcast, readOnly } = this.state; + const { broadcast, readOnly, isTeam } = this.state; + return this.renderSwitch({ id: 'broadcast', value: broadcast, - label: 'Broadcast_Channel', + label: isTeam ? 'Broadcast_Team' : 'Broadcast_Channel', onValueChange: (value) => { logEvent(events.CR_TOGGLE_BROADCAST); this.setState({ @@ -301,8 +319,10 @@ class CreateChannelView extends React.Component { } render() { - const { channelName } = this.state; - const { users, isFetching, theme } = this.props; + const { channelName, isTeam } = this.state; + const { + users, isFetching, theme + } = this.props; const userCount = users.length; return ( @@ -312,18 +332,18 @@ class CreateChannelView extends React.Component { keyboardVerticalOffset={128} > <StatusBar /> - <SafeAreaView testID='create-channel-view'> + <SafeAreaView testID={isTeam ? 'create-team-view' : 'create-channel-view'}> <ScrollView {...scrollPersistTaps}> <View style={[sharedStyles.separatorVertical, { borderColor: themes[theme].separatorColor }]}> <TextInput autoFocus style={[styles.input, { backgroundColor: themes[theme].backgroundColor }]} - label={I18n.t('Channel_Name')} + label={isTeam ? I18n.t('Team_Name') : I18n.t('Channel_Name')} value={channelName} onChangeText={this.onChangeText} - placeholder={I18n.t('Channel_Name')} + placeholder={isTeam ? I18n.t('Team_Name') : I18n.t('Channel_Name')} returnKeyType='done' - testID='create-channel-name' + testID={isTeam ? 'create-team-name' : 'create-channel-name'} autoCorrect={false} autoCapitalize='none' theme={theme} diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index 78178c4cc2b..ae0628f19d7 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -116,6 +116,12 @@ class NewMessageView extends React.Component { navigation.navigate('SelectedUsersViewCreateChannel', { nextAction: () => navigation.navigate('CreateChannelView') }); } + createTeam = () => { + logEvent(events.NEW_MSG_CREATE_TEAM); + const { navigation } = this.props; + navigation.navigate('SelectedUsersViewCreateChannel', { nextAction: () => navigation.navigate('CreateChannelView', { isTeam: true }) }); + } + createGroupChat = () => { logEvent(events.NEW_MSG_CREATE_GROUP_CHAT); const { createChannel, maxUsers, navigation } = this.props; @@ -172,6 +178,12 @@ class NewMessageView extends React.Component { testID: 'new-message-view-create-channel', first: true })} + {this.renderButton({ + onPress: this.createTeam, + title: I18n.t('Create_Team'), + icon: 'teams', + testID: 'new-message-view-create-team' + })} {maxUsers > 2 ? this.renderButton({ onPress: this.createGroupChat, title: I18n.t('Create_Direct_Messages'), @@ -253,7 +265,7 @@ const mapStateToProps = state => ({ }); const mapDispatchToProps = dispatch => ({ - createChannel: params => dispatch(createChannelRequest(params)) + create: params => dispatch(createChannelRequest(params)) }); export default connect(mapStateToProps, mapDispatchToProps)(withTheme(NewMessageView)); diff --git a/app/views/RoomView/RightButtons.js b/app/views/RoomView/RightButtons.js index debc3edb9e5..81b8f153b0c 100644 --- a/app/views/RoomView/RightButtons.js +++ b/app/views/RoomView/RightButtons.js @@ -7,6 +7,7 @@ import * as HeaderButton from '../../containers/HeaderButton'; import database from '../../lib/database'; import { getUserSelector } from '../../selectors/login'; import { logEvent, events } from '../../utils/log'; +import { isTeamRoom } from '../../utils/room'; class RightButtonsContainer extends Component { static propTypes = { @@ -15,10 +16,11 @@ class RightButtonsContainer extends Component { rid: PropTypes.string, t: PropTypes.string, tmid: PropTypes.string, - teamId: PropTypes.bool, + teamId: PropTypes.string, navigation: PropTypes.object, isMasterDetail: PropTypes.bool, - toggleFollowThread: PropTypes.func + toggleFollowThread: PropTypes.func, + joined: PropTypes.bool }; constructor(props) { @@ -163,7 +165,7 @@ class RightButtonsContainer extends Component { isFollowingThread, tunread, tunreadUser, tunreadGroup } = this.state; const { - t, tmid, threadsEnabled, teamId + t, tmid, threadsEnabled, teamId, joined } = this.props; if (t === 'l') { return null; @@ -181,7 +183,7 @@ class RightButtonsContainer extends Component { } return ( <HeaderButton.Container> - {teamId ? ( + {isTeamRoom({ teamId, joined }) ? ( <HeaderButton.Item iconName='channel-public' onPress={this.goTeamChannels} diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 5853717e2f1..b6b700db35d 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -38,7 +38,9 @@ import { themes } from '../../constants/colors'; import debounce from '../../utils/debounce'; import ReactionsModal from '../../containers/ReactionsModal'; import { LISTENER } from '../../containers/Toast'; -import { getBadgeColor, isBlocked, makeThreadName } from '../../utils/room'; +import { + getBadgeColor, isBlocked, makeThreadName, isTeamRoom +} from '../../utils/room'; import { isReadOnly } from '../../utils/isReadOnly'; import { isIOS, isTablet } from '../../utils/deviceInfo'; import { showErrorAlert } from '../../utils/info'; @@ -301,7 +303,7 @@ class RoomView extends React.Component { setHeader = () => { const { - room, unreadsCount, roomUserId + room, unreadsCount, roomUserId, joined } = this.state; const { navigation, isMasterDetail, theme, baseUrl, user, insets, route @@ -331,7 +333,7 @@ class RoomView extends React.Component { let numIconsRight = 2; if (tmid) { numIconsRight = 1; - } else if (teamId) { + } else if (isTeamRoom({ teamId, joined })) { numIconsRight = 3; } const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight }); @@ -380,6 +382,8 @@ class RoomView extends React.Component { rid={rid} tmid={tmid} teamId={teamId} + teamMain={teamMain} + joined={joined} t={t} navigation={navigation} toggleFollowThread={this.toggleFollowThread} diff --git a/app/views/SelectedUsersView.js b/app/views/SelectedUsersView.js index f9d14e16905..bd6740e1f9f 100644 --- a/app/views/SelectedUsersView.js +++ b/app/views/SelectedUsersView.js @@ -17,7 +17,6 @@ import sharedStyles from './Styles'; import * as HeaderButton from '../containers/HeaderButton'; import StatusBar from '../containers/StatusBar'; import { themes } from '../constants/colors'; -import { animateNextTransition } from '../utils/layoutAnimation'; import { withTheme } from '../theme'; import { getUserSelector } from '../selectors/login'; import { @@ -28,6 +27,9 @@ import { import { showErrorAlert } from '../utils/info'; import SafeAreaView from '../containers/SafeAreaView'; +const ITEM_WIDTH = 250; +const getItemLayout = (_, index) => ({ length: ITEM_WIDTH, offset: ITEM_WIDTH * index, index }); + class SelectedUsersView extends React.Component { static propTypes = { baseUrl: PropTypes.string, @@ -50,7 +52,7 @@ class SelectedUsersView extends React.Component { constructor(props) { super(props); this.init(); - + this.flatlist = React.createRef(); const maxUsers = props.route.params?.maxUsers; this.state = { maxUsers, @@ -151,7 +153,6 @@ class SelectedUsersView extends React.Component { return; } - animateNextTransition(); if (!this.isChecked(user.name)) { if (this.isGroupChat() && users.length === maxUsers) { return showErrorAlert(I18n.t('Max_number_of_users_allowed_is_number', { maxUsers }), I18n.t('Oops')); @@ -184,15 +185,23 @@ class SelectedUsersView extends React.Component { ); } + setFlatListRef = ref => this.flatlist = ref; + + onContentSizeChange = () => this.flatlist.scrollToEnd({ animated: true }); + renderSelected = () => { const { users, theme } = this.props; if (users.length === 0) { return null; } + return ( <FlatList data={users} + ref={this.setFlatListRef} + onContentSizeChange={this.onContentSizeChange} + getItemLayout={getItemLayout} keyExtractor={item => item._id} style={[sharedStyles.separatorTop, { borderColor: themes[theme].separatorColor }]} contentContainerStyle={{ marginVertical: 5 }} diff --git a/e2e/data.js b/e2e/data.js index 79e7842e864..c69b72515bd 100644 --- a/e2e/data.js +++ b/e2e/data.js @@ -42,6 +42,11 @@ const data = { name: `detox-private-${ value }` } }, + teams: { + private: { + name: `detox-team-${ value }` + } + }, registeringUser: { username: `newuser${ value }`, password: `password${ value }`, diff --git a/e2e/helpers/data_setup.js b/e2e/helpers/data_setup.js index 1f8f8fb6511..ce1d5083e5a 100644 --- a/e2e/helpers/data_setup.js +++ b/e2e/helpers/data_setup.js @@ -1,5 +1,6 @@ const axios = require('axios').default; const data = require('../data'); +const { TEAM_TYPE } = require('../../app/definition/ITeam'); let server = data.server @@ -57,6 +58,24 @@ const createChannelIfNotExists = async (channelname) => { } } +const createTeamIfNotExists = async (teamname) => { + console.log(`Creating private team ${teamname}`) + try { + await rocketchat.post('teams.create', { + "name": teamname, + "type": TEAM_TYPE.PRIVATE + }) + } catch (createError) { + try { //Maybe it exists already? + await rocketchat.get(`teams.info?teamName=${teamname}`) + } catch (infoError) { + console.log(JSON.stringify(createError)) + console.log(JSON.stringify(infoError)) + throw "Failed to find or create private team" + } + } +} + const createGroupIfNotExists = async (groupname) => { console.log(`Creating private group ${groupname}`) try { @@ -133,6 +152,13 @@ const setup = async () => { } } + for (var teamKey in data.teams) { + if (data.teams.hasOwnProperty(teamKey)) { + const team = data.teams[teamKey] + await createTeamIfNotExists(team.name) + } + } + return } diff --git a/e2e/tests/team/01-createteam.spec.js b/e2e/tests/team/01-createteam.spec.js new file mode 100644 index 00000000000..4dfe17ca3a2 --- /dev/null +++ b/e2e/tests/team/01-createteam.spec.js @@ -0,0 +1,82 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { tapBack, sleep, navigateToLogin, login, tryTapping } = require('../../helpers/app'); + + + +describe('Create team screen', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + }); + + describe('New Message', async() => { + before(async() => { + await element(by.id('rooms-list-view-create-channel')).tap(); + }); + + describe('Render', async() => { + it('should have team button', async() => { + await waitFor(element(by.id('new-message-view-create-channel'))).toBeVisible().withTimeout(2000); + }); + }) + + describe('Usage', async() => { + it('should navigate to select users', async() => { + await element(by.id('new-message-view-create-channel')).tap(); + await waitFor(element(by.id('select-users-view'))).toExist().withTimeout(5000); + }); + }) + }); + + describe('Select Users', async() => { + it('should search users', async() => { + await element(by.id('select-users-view-search')).replaceText('rocket.cat'); + await waitFor(element(by.id(`select-users-view-item-rocket.cat`))).toBeVisible().withTimeout(10000); + }); + + it('should select/unselect user', async() => { + // Spotlight issues + await element(by.id('select-users-view-item-rocket.cat')).tap(); + await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); + await element(by.id('selected-user-rocket.cat')).tap(); + await waitFor(element(by.id('selected-user-rocket.cat'))).toBeNotVisible().withTimeout(10000); + // Spotlight issues + await element(by.id('select-users-view-item-rocket.cat')).tap(); + await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); + }); + + it('should create team', async() => { + await element(by.id('selected-users-view-submit')).tap(); + await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); + }); + }) + + describe('Create Team', async() => { + describe('Usage', async() => { + it('should get invalid team name', async() => { + await element(by.id('create-channel-name')).typeText(`${data.teams.private.name}`); + await element(by.id('create-channel-submit')).tap(); + await element(by.text('OK')).tap(); + }); + + it('should create private team', async() => { + const room = `private${ data.random }`; + await element(by.id('create-channel-name')).replaceText(''); + await element(by.id('create-channel-name')).typeText(room); + await element(by.id('create-channel-submit')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); + await expect(element(by.id('room-view'))).toExist(); + await waitFor(element(by.id(`room-view-title-${ room }`))).toExist().withTimeout(6000); + await expect(element(by.id(`room-view-title-${ room }`))).toExist(); + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(10000); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(6000); + await expect(element(by.id(`rooms-list-view-item-${ room }`))).toExist(); + }); + }) + }); +}); From b701913478f52fd39ef1d2a7ea2cea4f3baeb55d Mon Sep 17 00:00:00 2001 From: "lingohub[bot]" <69908207+lingohub[bot]@users.noreply.github.com> Date: Tue, 18 May 2021 15:58:05 -0300 Subject: [PATCH 117/177] =?UTF-8?q?Language=20update=20from=20LingoHub=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3139)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Project Name: Rocket.Chat.ReactNative Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative User: Robot LingoHub Easy language translations with LingoHub 🚀 Co-authored-by: Robot LingoHub <robot@lingohub.com> --- app/i18n/locales/ar.json | 10 +---- app/i18n/locales/de.json | 8 ++-- app/i18n/locales/en.json | 6 +-- app/i18n/locales/es-ES.json | 5 +-- app/i18n/locales/fr.json | 2 +- app/i18n/locales/it.json | 4 +- app/i18n/locales/ja.json | 5 +-- app/i18n/locales/nl.json | 4 +- app/i18n/locales/pt-BR.json | 86 ++++++++++++++++++++----------------- app/i18n/locales/pt-PT.json | 6 +-- app/i18n/locales/ru.json | 26 ++++++++--- app/i18n/locales/tr.json | 15 +++---- app/i18n/locales/zh-CN.json | 8 ++-- app/i18n/locales/zh-TW.json | 6 +-- 14 files changed, 100 insertions(+), 91 deletions(-) diff --git a/app/i18n/locales/ar.json b/app/i18n/locales/ar.json index 0b53315f95d..8d2f1094ccc 100644 --- a/app/i18n/locales/ar.json +++ b/app/i18n/locales/ar.json @@ -33,7 +33,7 @@ "error-invalid-date": "التاريخ غير صالح", "error-invalid-description": "الوصف غير صالح", "error-invalid-domain": "عنوان الموقع غير صالح", - "error-invalid-email": "عنوان البريد اﻹلكتروني غير صالح {{emai}}", + "error-invalid-email": "عنوان البريد اﻹلكتروني غير صالح {{email}}", "error-invalid-email-address": "عنوان البريد اﻹلكتروني غير صالح", "error-invalid-file-height": "ارتفاع الملف غير صالح", "error-invalid-file-type": "نوع الملف غير صالح", @@ -100,7 +100,6 @@ "announcement": "إعلان", "Announcement": "إعلان", "Apply_Your_Certificate": "طبق شهادتك", - "Applying_a_theme_will_change_how_the_app_looks": "سيؤدي تطبيق السمة إلى تغيير شكل التطبيق", "ARCHIVE": "أرشفة", "archive": "أرشفة", "are_typing": "يكتب", @@ -184,8 +183,6 @@ "deleting_room": "حذف الغرفة", "description": "وصف", "Description": "وصف", - "DESKTOP_OPTIONS": "خيارات سطح المكتب", - "DESKTOP_NOTIFICATIONS": "إشعارات سطح المكتب", "Desktop_Alert_info": "هذه الإشعارات ترسل لسطح المكتب", "Directory": "مجلد", "Direct_Messages": "رسالة مباشرة", @@ -213,7 +210,6 @@ "Email_Notification_Mode_Disabled": "معطل", "Email_or_password_field_is_empty": "حقل البريد الإلكتروني أو كلمة المرور فارغ", "Email": "البريد الإلكتروني", - "EMAIL": "البريد الإلكتروني", "email": "البريد الإلكتروني", "Empty_title": "عنوان فارغ", "Enable_Auto_Translate": "تمكين الترجمة التلقائية", @@ -270,7 +266,6 @@ "I_Saved_My_E2E_Password": "قمت بحفظ كلمة المرور الطرفية", "IP": " عنوان بروتوكول الإنترنت (الآيبي)", "In_app": "في التطبيق", - "IN_APP_AND_DESKTOP": "داخل التطبيق وسطح المكتب", "In_App_and_Desktop_Alert_info": "يعرض شعاراً أعلى الشاشة عندما يكون التطبيق مفتوحًا، ويعرض إشعاراً على سطح المكتب", "Invisible": "غير مرئي", "Invite": "دعوة", @@ -398,7 +393,6 @@ "Profile": "الملف الشخصي", "Public_Channel": "قناة عامة", "Public": "عام", - "PUSH_NOTIFICATIONS": "الإشعارات", "Push_Notifications_Alert_Info": "يتم إرسال هذه الإشعارات إليك عندما لا يكون التطبيق مفتوحاً", "Quote": "اقتباس", "Reactions_are_disabled": "التفاعل معطل", @@ -446,9 +440,9 @@ "Room_Members": "أعضاء الغرفة", "Room_name_changed": "تم تغيير اسم الغرفة إلى: {{name}} من قبل {{userBy}}", "SAVE": "حفظ", - "Saved": "تم الحفظ", "Save_Changes": "حفظ التغيرات", "Save": "حفظ", + "Saved": "تم الحفظ", "saving_preferences": "حفظ التفضيلات", "saving_profile": "حفظ الملف الشخصي", "saving_settings": "حفظ الإعدادات", diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json index 8bdf42d09a8..1074ff730aa 100644 --- a/app/i18n/locales/de.json +++ b/app/i18n/locales/de.json @@ -33,7 +33,7 @@ "error-invalid-date": "Ungültiges Datum angegeben", "error-invalid-description": "Ungültige Beschreibung", "error-invalid-domain": "Ungültige Domain", - "error-invalid-email": "Ungültige E-Mail {{emai}}", + "error-invalid-email": "Ungültige E-Mail {{email}}", "error-invalid-email-address": "Ungültige E-Mail-Adresse", "error-invalid-file-height": "Ungültige Dateihöhe", "error-invalid-file-type": "Ungültiger Dateityp", @@ -69,7 +69,7 @@ "error-role-in-use": "Rolle kann nicht gelöscht werden, da sie gerade verwendet wird", "error-role-name-required": "Der Rollenname ist erforderlich", "error-the-field-is-required": "Das Feld {{field}} ist erforderlich.", - "error-too-many-requests": "Fehler, zu viele Anfragen. Du musst {{Sekunden}} Sekunden warten, bevor du es erneut versuchst.", + "error-too-many-requests": "Fehler, zu viele Anfragen. Du musst {{seconds}} Sekunden warten, bevor du es erneut versuchst.", "error-user-is-not-activated": "Benutzer ist nicht aktiviert", "error-user-has-no-roles": "Benutzer hat keine Rollen", "error-user-limit-exceeded": "Die Anzahl der Benutzer, die du zu #channel_name einladen möchtest, überschreitet die vom Administrator festgelegte Grenze", @@ -185,6 +185,7 @@ "Description": "Beschreibung", "Desktop_Options": "Desktop-Einstellungen", "Desktop_Notifications": "Desktop-Benachrichtigungen", + "Desktop_Alert_info": "Diese Benachrichtigungen werden auf dem Desktop angezeigt", "Directory": "Verzeichnis", "Direct_Messages": "Direkte Nachrichten", "Disable_notifications": "Benachrichtigungen deaktiveren", @@ -276,7 +277,7 @@ "is_not_a_valid_RocketChat_instance": "ist keine gültige Rocket.Chat-Instanz", "is_typing": "schreibt", "Invalid_or_expired_invite_token": "Ungültiger oder abgelaufener Einladungscode", - "Invalid_server_version": "Der Server, zu dem du dich verbinden möchtest, verwendet eine Version, die von der App nicht mehr unterstützt wird: {{currentVersion}}.\n\nWir benötigen Version {{MinVersion}}.", + "Invalid_server_version": "Der Server, zu dem du dich verbinden möchtest, verwendet eine Version, die von der App nicht mehr unterstützt wird: {{currentVersion}}.\n\nWir benötigen Version {{minVersion}}.", "Invite_Link": "Einladungs-Link", "Invite_users": "Benutzer einladen", "Join": "Beitreten", @@ -400,7 +401,6 @@ "Public": "Öffentlich", "Push_Notifications": "Push-Benachrichtigungen", "Push_Notifications_Alert_Info": "Diese Benachrichtigungen werden dir zugestellt, wenn die App nicht geöffnet ist.", - "Desktop_Alert_info": "Diese Benachrichtigungen werden auf dem Desktop angezeigt", "Quote": "Zitat", "Reactions_are_disabled": "Reaktionen sind deaktiviert", "Reactions_are_enabled": "Reaktionen sind aktiviert", diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 58438f31954..bd4e1f8a2d5 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -33,7 +33,7 @@ "error-invalid-date": "Invalid date provided.", "error-invalid-description": "Invalid description", "error-invalid-domain": "Invalid domain", - "error-invalid-email": "Invalid email {{emai}}", + "error-invalid-email": "Invalid email {{email}}", "error-invalid-email-address": "Invalid email address", "error-invalid-file-height": "Invalid file height", "error-invalid-file-type": "Invalid file type", @@ -715,6 +715,6 @@ "Private_Team": "Private Team", "Read_Only_Team": "Read Only Team", "Broadcast_Team": "Broadcast Team", - "creating_team" : "creating team", + "creating_team": "creating team", "team-name-already-exists": "A team with that name already exists" -} +} \ No newline at end of file diff --git a/app/i18n/locales/es-ES.json b/app/i18n/locales/es-ES.json index e03f4f6c3b7..feb18f1a748 100644 --- a/app/i18n/locales/es-ES.json +++ b/app/i18n/locales/es-ES.json @@ -30,7 +30,7 @@ "error-invalid-date": "La fecha proporcionada no es correcta.", "error-invalid-description": "La descipción no es correcta", "error-invalid-domain": "El dominio no es correcto", - "error-invalid-email": "El email {{emai}} no es correcto", + "error-invalid-email": "El email {{email}} no es correcto", "error-invalid-email-address": "La dirección de correo no es correcta", "error-invalid-file-height": "La altura de la imagen no es correcta", "error-invalid-file-type": "El formato del archivo no es correcto", @@ -44,7 +44,7 @@ "error-invalid-redirectUri": "La URL de redirección no es correcta.", "error-invalid-role": "El rol no es correcto", "error-invalid-room": "La sala no es correcta", - "error-invalid-room-name": "No se puede asignar el nombre {{name}} a una sala.", + "error-invalid-room-name": "No se puede asignar el nombre {{room_name}} a una sala.", "error-invalid-room-type": "No se puede asginar el tipo {{type}} a una sala.", "error-invalid-settings": "La configuración proporcionada no es correcta", "error-invalid-subscription": "La subscripción no es correcta", @@ -80,7 +80,6 @@ "Activity": "Actividad", "Add_Reaction": "Reaccionar", "Add_Server": "Añadir servidor", - "Add_user": "Añadir usuario", "Admin_Panel": "Panel de Control", "Alert": "Alerta", "alert": "alerta", diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json index 1920045b1f5..c61e22f24e7 100644 --- a/app/i18n/locales/fr.json +++ b/app/i18n/locales/fr.json @@ -33,7 +33,7 @@ "error-invalid-date": "Date fournie invalide.", "error-invalid-description": "Description invalide", "error-invalid-domain": "Domaine invalide", - "error-invalid-email": "Adresse e-mail non valide {{emai}}", + "error-invalid-email": "Adresse e-mail non valide {{email}}", "error-invalid-email-address": "Adresse e-mail invalide", "error-invalid-file-height": "Hauteur de fichier non valide", "error-invalid-file-type": "Type de fichier invalide", diff --git a/app/i18n/locales/it.json b/app/i18n/locales/it.json index 12e02e3a31d..4c6ee1acf36 100644 --- a/app/i18n/locales/it.json +++ b/app/i18n/locales/it.json @@ -33,7 +33,7 @@ "error-invalid-date": "Data fornita non valida.", "error-invalid-description": "Descrizione non valida", "error-invalid-domain": "Dominio non valido", - "error-invalid-email": "E-mail {{emai}} non valida", + "error-invalid-email": "E-mail {{email}} non valida", "error-invalid-email-address": "Indirizzo e-mail non valido", "error-invalid-file-height": "Altezza del file non valida", "error-invalid-file-type": "Tipo di file non valido", @@ -157,8 +157,8 @@ "Continue_with": "Continua con", "Copied_to_clipboard": "Copiato negli appunti!", "Copy": "Copia", - "Permalink": "Permalink", "Conversation": "Conversazione", + "Permalink": "Permalink", "Certificate_password": "Password certificato", "Clear_cache": "Cancella la cache locale", "Clear_cache_loading": "Cancellando la cache.", diff --git a/app/i18n/locales/ja.json b/app/i18n/locales/ja.json index 83b0d9d5e68..d758e135a34 100644 --- a/app/i18n/locales/ja.json +++ b/app/i18n/locales/ja.json @@ -31,7 +31,7 @@ "error-invalid-date": "不正な日時です", "error-invalid-description": "不正な詳細です", "error-invalid-domain": "不正なドメインです", - "error-invalid-email": "不正なメールアドレスです。 {{emai}}", + "error-invalid-email": "不正なメールアドレスです。 {{email}}", "error-invalid-email-address": "不正なメールアドレスです", "error-invalid-file-height": "ファイルの高さが不正です", "error-invalid-file-type": "ファイルの種類が不正です", @@ -179,7 +179,6 @@ "Email": "メールアドレス", "email": "メールアドレス", "Enable_Auto_Translate": "自動翻訳を有効にする", - "Enable_markdown": "マークダウンを有効にする", "Enable_notifications": "通知を有効にする", "Everyone_can_access_this_channel": "全員このチャンネルにアクセスできます", "Error_uploading": "アップロードエラー", @@ -432,7 +431,7 @@ "Users": "ユーザー", "User_added_by": "{{userBy}} が {{userAdded}} を追加しました", "User_Info": "ユーザー情報", - "User_has_been_key": "ユーザーは{{ key }}", + "User_has_been_key": "ユーザーは{{key}}", "User_is_no_longer_role_by_": "{{userBy}} は {{user}} のロール {{role}} を削除しました。", "User_muted_by": "{{userBy}} は {{userMuted}} をミュートしました。", "User_removed_by": "{{userBy}} は {{userRemoved}} を退出させました。", diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index fee4b826fc5..7756a910df1 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -1,7 +1,7 @@ { "1_person_reacted": "1 persoon heeft gereageerd", "1_user": "1 gebruiker", - "error-action-not-allowed": "{{actie}} is niet toegestaan", + "error-action-not-allowed": "{{action}} is niet toegestaan", "error-application-not-found": "Applicatie niet gevonden", "error-archived-duplicate-name": "Er is een gearchiveerd kanaal met de naam {{room_name}}", "error-avatar-invalid-url": "Foutieve avatar URL: {{url}}", @@ -31,7 +31,7 @@ "error-invalid-date": "Ongeldige datum opgegeven.", "error-invalid-description": "Ongeldige beschrijving", "error-invalid-domain": "Ongeldig domein", - "error-invalid-email": "Ongeldige email {{emai}}", + "error-invalid-email": "Ongeldige email {{email}}", "error-invalid-email-address": "Ongeldig emailadres", "error-invalid-file-height": "Ongeldige file height", "error-invalid-file-type": "Ongeldig bestandstype", diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 4002b2d6eb9..64369e78110 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -62,22 +62,14 @@ "error-no-tokens-for-this-user": "Não existem tokens para este usuário", "error-not-allowed": "Não permitido", "error-not-authorized": "Não autorizado", - "error-password-policy-not-met": "A senha não atende a política do servidor", - "error-password-policy-not-met-maxLength": "A senha não está de acordo com a política de comprimento máximo do servidor (senha muito longa)", - "error-password-policy-not-met-minLength": "A senha não está de acordo com a política de comprimento mínimo do servidor (senha muito curta)", - "error-password-policy-not-met-oneLowercase": "A senha não está de acordo com a política do servidor de pelo menos um caractere minúsculo.", - "error-password-policy-not-met-oneNumber": "A senha não está de acordo com a política do servidor, de pelo menos um caractere numérico.", - "error-password-policy-not-met-oneSpecial": "A senha não está de acordo com a política do servidor, de pelo menos um caractere especial.", - "error-password-policy-not-met-oneUppercase": "A senha não está de acordo com a política do servidor, de pelo menos um caractere maiúsculo.", - "error-password-policy-not-met-repeatingCharacters": "A senha não está de acordo com a política do servidor, relativamente aos caracteres proibidos repetidos (existem vários caracteres proibidos próximos uns dos outros)", "error-push-disabled": "Notificações push desativadas", "error-remove-last-owner": "Este é o último proprietário. Por favor, defina um novo proprietário antes de remover este.", "error-role-in-use": "Não é possível remover o papel pois ele está em uso", "error-role-name-required": "Nome do papel é obrigatório", "error-the-field-is-required": "O campo {{field}} é obrigatório.", "error-too-many-requests": "Erro, muitas solicitações. Por favor, diminua a velocidade. Você deve esperar {{seconds}} segundos antes de tentar novamente.", - "error-user-has-no-roles": "O usuário não possui permissões", "error-user-is-not-activated": "O usuário não está ativo", + "error-user-has-no-roles": "O usuário não possui permissões", "error-user-limit-exceeded": "O número de usuários que você está tentando convidar para #channel_name excede o limite determindado pelo administrador", "error-user-not-in-room": "O usuário não está nesta sala", "error-user-registration-disabled": "O registro do usuário está desativado", @@ -102,6 +94,7 @@ "and": "e", "announcement": "anúncio", "Announcement": "Anúncio", + "Apply_Your_Certificate": "Aplicar certificado", "ARCHIVE": "ARQUIVAR", "archive": "arquivar", "are_typing": "estão digitando", @@ -131,10 +124,7 @@ "Channel_Name": "Nome do Canal", "Channels": "Canais", "Chats": "Conversas", - "Change_Language": "Alterar idioma", - "Change_language_loading": "Alterando idioma.", "Call_already_ended": "A chamada já terminou!", - "Clear_cache_loading": "Limpando cache.", "Clear_cookies_alert": "Você quer limpar seus cookies?", "Clear_cookies_desc": "Esta ação limpará todos os cookies de login permitindo que você faça login em outras contas.", "Clear_cookies_yes": "Sim, limpar cookies", @@ -143,8 +133,9 @@ "Close": "Fechar", "Close_emoji_selector": "Fechar seletor de emojis", "Closing_chat": "Fechando conversa", - "Choose": "Escolher", + "Change_language_loading": "Alterando idioma.", "Chat_closed_by_agent": "Conversa fechada por agente", + "Choose": "Escolher", "Choose_from_library": "Escolha da biblioteca", "Choose_file": "Enviar arquivo", "Choose_where_you_want_links_be_opened": "Escolha onde deseja que os links sejam abertos", @@ -154,15 +145,16 @@ "Confirm": "Confirmar", "Connect": "Conectar", "Connected": "Conectado", - "Conversation": "Conversação", "connecting_server": "conectando no servidor", "Connecting": "Conectando...", "Contact_us": "Entre em contato", - "Continue_with": "Entrar com", "Contact_your_server_admin": "Contate o administrador do servidor.", + "Continue_with": "Entrar com", "Copied_to_clipboard": "Copiado para a área de transferência!", "Copy": "Copiar", + "Conversation": "Conversação", "Permalink": "Link-Permanente", + "Clear_cache_loading": "Limpando cache.", "Create_account": "Criar conta", "Create_Channel": "Criar Canal", "Create_Direct_Messages": "Criar Mensagens Diretas", @@ -172,19 +164,21 @@ "Create": "Criar", "Dark": "Escuro", "Dark_level": "Nível escuro", + "Default": "Padrão", "Default_browser": "Navegador padrão", "Delete_Room_Warning": "A exclusão de uma sala irá apagar todas as mensagens postadas na sala. Isso não pode ser desfeito.", + "Department": "Departamento", "delete": "excluir", "Delete": "Excluir", "DELETE": "EXCLUIR", "deleting_room": "excluindo sala", - "Direct_Messages": "Mensagens Diretas", + "description": "descrição", + "Description": "Descrição", "Desktop_Options": "Opções De Área De Trabalho", "Desktop_Notifications": "Notificações da Área de Trabalho", "Desktop_Alert_info": "Essas notificações são entregues a você na área de trabalho", "Directory": "Diretório", - "description": "descrição", - "Description": "Descrição", + "Direct_Messages": "Mensagens Diretas", "Disable_notifications": "Desabilitar notificações", "Discussions": "Discussões", "Discussion_Desc": "Ajude a manter uma visão geral sobre o que está acontecendo! Ao criar uma discussão, um sub-canal do que você selecionou é criado e os dois são vinculados.", @@ -192,6 +186,7 @@ "Done": "Pronto", "Dont_Have_An_Account": "Não tem uma conta?", "Do_you_have_an_account": "Você tem uma conta?", + "Do_you_have_a_certificate": "Você tem um certificado?", "Do_you_really_want_to_key_this_room_question_mark": "Você quer realmente {{key}} esta sala?", "E2E_Encryption": "Encriptação ponta a ponta", "E2E_How_It_Works_info1": "Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar grupos privados existentes ou DMs para criptografados.", @@ -201,16 +196,16 @@ "edit": "editar", "edited": "editado", "Edit": "Editar", - "Edit_Invite": "Editar convite", "Edit_Status": "Editar Status", + "Edit_Invite": "Editar convite", "End_to_end_encrypted_room": "Sala criptografada de ponta a ponta", "end_to_end_encryption": "criptografia de ponta a ponta", + "Email_Notification_Mode_All": "Cada Menção / Mensagem Direta", + "Email_Notification_Mode_Disabled": "Desativado", "Email_or_password_field_is_empty": "Email ou senha estão vazios", "Email": "E-mail", "email": "e-mail", "Empty_title": "Título vazio", - "Email_Notification_Mode_All": "Cada Menção / Mensagem Direta", - "Email_Notification_Mode_Disabled": "Desativado", "Enable_Auto_Translate": "Ativar a tradução automática", "Enable_notifications": "Habilitar notificações", "Encrypted": "Criptografado", @@ -223,6 +218,7 @@ "Everyone_can_access_this_channel": "Todos podem acessar este canal", "Error_uploading": "Erro subindo", "Expiration_Days": "Expira em (dias)", + "Favorite": "Adicionar aos Favoritos", "Favorites": "Favoritos", "Files": "Arquivos", "File_description": "Descrição do arquivo", @@ -241,6 +237,7 @@ "Generate_New_Link": "Gerar novo convite", "Group_by_favorites": "Agrupar favoritos", "Group_by_type": "Agrupar por tipo", + "Hide": "Ocultar", "Has_joined_the_channel": "entrou no canal", "Has_joined_the_conversation": "entrou na conversa", "Has_left_the_channel": "saiu da conversa", @@ -286,8 +283,8 @@ "Login": "Entrar", "Login_error": "Suas credenciais foram rejeitadas. Tente novamente por favor!", "Login_with": "Login with", - "Logout": "Sair", "Logging_out": "Saindo.", + "Logout": "Sair", "Max_number_of_uses": "Número máximo de usos", "Max_number_of_users_allowed_is_number": "Número máximo de usuários é {{maxUsers}}", "Members": "Membros", @@ -300,6 +297,7 @@ "Message_removed": "Mensagem removida", "message": "mensagem", "messages": "mensagens", + "Message": "Mensagem", "Messages": "Mensagens", "Microphone_Permission_Message": "Rocket.Chat precisa de acesso ao seu microfone para enviar mensagens de áudio.", "Microphone_Permission": "Acesso ao Microfone", @@ -311,7 +309,6 @@ "Name": "Nome", "Navigation_history": "Histórico de navegação", "Never": "Nunca", - "New_in_RocketChat_question_mark": "Novo no Rocket.Chat?", "New_Message": "Nova Mensagem", "New_Password": "Nova Senha", "Next": "Próximo", @@ -326,19 +323,20 @@ "No_Message": "Não há mensagens", "No_messages_yet": "Não há mensagens ainda", "No_Reactions": "Sem reações", + "Not_RC_Server": "Este não é um servidor Rocket.Chat.\n{{contact}}", + "Nothing": "Nada", "Nothing_to_save": "Nada para salvar!", "Notify_active_in_this_room": "Notificar usuários ativos nesta sala", "Notify_all_in_this_room": "Notificar todos nesta sala", "Notifications": "Notificações", "Notification_Duration": "Duração da notificação", "Notification_Preferences": "Preferências de notificação", - "Not_RC_Server": "Este não é um servidor Rocket.Chat.\n{{contact}}", "No_available_agents_to_transfer": "Nenhum agente disponível para transferência", "Offline": "Offline", + "Oops": "Ops!", "Omnichannel": "Omnichannel", "Open_Livechats": "Bate-papos em Andamento", "Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você quer ficar disponível?", - "Oops": "Ops!", "Onboarding_description": "Workspace é o espaço de colaboração do seu time ou organização. Peça um convite ou o endereço ao seu administrador ou crie uma workspace para o seu time.", "Onboarding_join_workspace": "Entre numa workspace", "Onboarding_subtitle": "Além da colaboração em equipe", @@ -358,13 +356,14 @@ "Password": "Senha", "Parent_channel_or_group": "Canal ou grupo pai", "Permalink_copied_to_clipboard": "Link-permanente copiado para a área de transferência!", + "Phone": "Telefone", "Pin": "Fixar", "Pinned_Messages": "Mensagens Fixadas", "pinned": "fixada", "Pinned": "Mensagens Fixadas", - "Please_wait": "Por favor, aguarde.", - "Please_enter_your_password": "Por favor, digite sua senha", "Please_add_a_comment": "Por favor, adicione um comentário", + "Please_enter_your_password": "Por favor, digite sua senha", + "Please_wait": "Por favor, aguarde.", "Preferences": "Preferências", "Preferences_saved": "Preferências salvas!", "Privacy_Policy": " Política de Privacidade", @@ -386,15 +385,16 @@ "Read_External_Permission": "Permissão de acesso à arquivos", "Read_Only_Channel": "Canal Somente Leitura", "Read_Only": "Somente Leitura", + "Read_Receipt": "Lida por", "Receive_Group_Mentions": "Receber menções de grupo", "Receive_Group_Mentions_Info": "Receber menções @all e @here", "Register": "Registrar", - "Read_Receipt": "Lida por", "Repeat_Password": "Repetir Senha", "Replied_on": "Respondido em:", "replies": "respostas", "reply": "resposta", "Reply": "Responder", + "Report": "Reportar", "Receive_Notification": "Receber Notificação", "Receive_notifications_from": "Receber notificação de {{name}}", "Resend": "Reenviar", @@ -424,6 +424,7 @@ "SAVE": "SALVAR", "Save_Changes": "Salvar Alterações", "Save": "Salvar", + "Saved": "Salvo", "saving_preferences": "salvando preferências", "saving_profile": "salvando perfil", "saving_settings": "salvando configurações", @@ -472,12 +473,14 @@ "starred": "favoritou", "Starred": "Mensagens Favoritas", "Start_of_conversation": "Início da conversa", - "Started_call": "Chamada iniciada por {{userBy}}", + "Start_a_Discussion": "Iniciar uma Discussão", "Started_discussion": "Iniciou uma discussão:", + "Started_call": "Chamada iniciada por {{userBy}}", "Submit": "Enviar", "Table": "Tabela", "Take_a_photo": "Tirar uma foto", "Take_a_video": "Gravar um vídeo", + "Take_it": "Pegue!", "Terms_of_Service": " Termos de Serviço ", "Theme": "Tema", "The_user_wont_be_able_to_type_in_roomName": "O usuário não poderá digitar em {{roomName}}", @@ -491,12 +494,14 @@ "To": "Para", "topic": "tópico", "Topic": "Tópico", + "Translate": "Traduzir", "Try_again": "Tentar novamente", "Two_Factor_Authentication": "Autenticação de dois fatores", "Type_the_channel_name_here": "Digite o nome do canal", "unarchive": "desarquivar", "UNARCHIVE": "DESARQUIVAR", "Unblock_user": "Desbloquear usuário", + "Unfavorite": "Remover dos Favoritos", "Unfollowed_thread": "Parou de seguir tópico", "Unmute": "Permitir que o usuário fale", "unmuted": "permitiu que o usuário fale", @@ -511,6 +516,7 @@ "User": "Usuário", "Users": "Usuários", "User_added_by": "Usuário {{userAdded}} adicionado por {{userBy}}", + "User_Info": "Informações do usuário", "User_has_been_key": "Usuário foi {{key}}", "User_is_no_longer_role_by_": "{{user}} não pertence mais à {{role}} por {{userBy}}", "User_muted_by": "User {{userMuted}} muted por {{userBy}}", @@ -527,25 +533,31 @@ "Verify_email_desc": "Nós lhe enviamos um e-mail para confirmar o seu registro. Se você não receber um e-mail em breve, por favor retorne e tente novamente.", "Verify_your_email_for_the_code_we_sent": "Verifique em seu e-mail o código que enviamos", "Video_call": "Chamada de vídeo", + "View_Original": "Visualizar original", "Voice_call": "Chamada de voz", "Waiting_for_network": "Aguardando rede...", "Websocket_disabled": "Websocket está desativado para esse servidor.\n{{contact}}", "Welcome": "Bem vindo", - "Whats_your_2fa": "Qual seu código de autenticação?", "What_are_you_doing_right_now": "O que você está fazendo agora?", + "Whats_your_2fa": "Qual seu código de autenticação?", "Without_Servers": "Sem Servidores", "Workspaces": "Workspaces", + "Would_you_like_to_return_the_inquiry": "Deseja retornar a consulta?", + "Write_External_Permission_Message": "Rocket.Chat precisa de acesso à sua galeria para salvar imagens", + "Write_External_Permission": "Acesso à Galeria", + "Yes": "Sim", "Yes_action_it": "Sim, {{action}}!", "Yesterday": "Ontem", "You_are_in_preview_mode": "Está é uma prévia do canal", "You_are_offline": "Você está offline", "You_can_search_using_RegExp_eg": "Você pode usar expressões regulares, por exemplo `/^text$/i`", - "You_need_to_verifiy_your_email_address_to_get_notications": "Você precisa confirmar seu endereço de e-mail para obter notificações", "You_colon": "Você: ", "you_were_mentioned": "você foi mencionado", "You_were_removed_from_channel": "Você foi removido de {{channel}}", "you": "você", "You": "Você", + "You_need_to_verifiy_your_email_address_to_get_notications": "Você precisa confirmar seu endereço de e-mail para obter notificações", + "Your_certificate": "Seu certificado", "Your_invite_link_will_expire_after__usesLeft__uses": "Seu link de convite irá vencer depois de {{usesLeft}} usos.", "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Seu link de convite irá vencer em {{date}} ou depois de {{usesLeft}} usos.", "Your_invite_link_will_expire_on__date__": "Seu link de convite irá vencer em {{date}}.", @@ -553,10 +565,7 @@ "Your_workspace": "Sua workspace", "You_will_not_be_able_to_recover_this_message": "Você não será capaz de recuperar essa mensagem!", "You_will_unset_a_certificate_for_this_server": "Você cancelará a configuração de um certificado para este servidor", - "Would_you_like_to_return_the_inquiry": "Deseja retornar a consulta?", - "Write_External_Permission_Message": "Rocket.Chat precisa de acesso à sua galeria para salvar imagens", - "Write_External_Permission": "Acesso à Galeria", - "Yes": "Sim", + "Change_Language": "Alterar idioma", "Crash_report_disclaimer": "Nós não rastreamos o conteúdo das suas conversas. O relatório de erros e os eventos do analytics apenas contém informações relevantes para identificarmos problemas e corrigí-los.", "Type_message": "Digitar mensagem", "Room_search": "Busca de sala", @@ -568,6 +577,7 @@ "Search_messages": "Buscar mensagens", "Scroll_messages": "Rolar mensagens", "Reply_latest": "Responder para última mensagem", + "Reply_in_Thread": "Responder por Tópico", "Server_selection": "Seleção de servidor", "Server_selection_numbers": "Selecionar servidor 1...9", "Add_server": "Adicionar servidor", @@ -654,10 +664,8 @@ "Workspace_URL_Example": "Ex. sua-empresa.rocket.chat", "This_room_encryption_has_been_enabled_by__username_": "A criptografia para essa sala foi habilitada por {{username}}", "This_room_encryption_has_been_disabled_by__username_": "A criptografia para essa sala foi desabilitada por {{username}}", - "Apply_Your_Certificate": "Aplicar certificado", - "Do_you_have_a_certificate": "Você tem um certificado?", - "Your_certificate": "Seu certificado", "Teams": "Times", "No_team_channels_found": "Nenhum canal encontrado", - "Team_not_found": "Time não encontrado" + "Team_not_found": "Time não encontrado", + "Private_Team": "Equipe Privada" } \ No newline at end of file diff --git a/app/i18n/locales/pt-PT.json b/app/i18n/locales/pt-PT.json index 7a5f40bd844..ca7d4dc5903 100644 --- a/app/i18n/locales/pt-PT.json +++ b/app/i18n/locales/pt-PT.json @@ -30,7 +30,7 @@ "error-invalid-date": "Data inválida fornecida.", "error-invalid-description": "Descrição inválida", "error-invalid-domain": "Domínio inválido", - "error-invalid-email": "E-mail inválido {{emai}}", + "error-invalid-email": "E-mail inválido {{email}}", "error-invalid-email-address": "Endereço de e-mail invalido", "error-invalid-file-height": "Altura de ficheiro inválida", "error-invalid-file-type": "Tipo de ficheiro inválido", @@ -137,14 +137,14 @@ "delete": "apagar", "Delete": "Apagar", "DELETE": "APAGAR", + "deleting_room": "apagando sala", "description": "descrição", "Description": "Descrição", - "Disable_notifications": "Desactivar notificações", "Direct_Messages": "Mensagens Directas", + "Disable_notifications": "Desactivar notificações", "Dont_Have_An_Account": "Não tem uma conta?", "Do_you_really_want_to_key_this_room_question_mark": "Você quer mesmo {{key}} esta sala?", "edit": "editar", - "deleting_room": "apagando sala", "Edit": "Editar", "Email_or_password_field_is_empty": "O campo de e-mail ou palavra-passe está vazio", "Email": "E-mail", diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json index d63a078a525..8b904c0ff9a 100644 --- a/app/i18n/locales/ru.json +++ b/app/i18n/locales/ru.json @@ -29,7 +29,7 @@ "error-invalid-channel": "Недействительный канал.", "error-invalid-channel-start-with-chars": "Недействительный канал. Начните с @ или #", "error-invalid-custom-field": "Неверное настраиваемое поле", - "error-invalid-custom-field-name": "Неверное имя настраиваемого поля. Используйте только буквы, цифры, дефисы и символы подчеркивания.", + "error-invalid-custom-field-name": "Неверное имя настраиваемого поля. Используйте только буквы, цифры, дефис и символ подчеркивания.", "error-invalid-date": "Указана недопустимая дата.", "error-invalid-description": "Недопустимое описание", "error-invalid-domain": "Недопустимый домен", @@ -46,9 +46,9 @@ "error-invalid-password": "Неверный пароль", "error-invalid-redirectUri": "Недопустимый redirectUri", "error-invalid-role": "Недопустимая роль", - "error-invalid-room": "Недопустимый канал", - "error-invalid-room-name": "{{room_name}} не является допустимым именем канала", - "error-invalid-room-type": "{{type}} не является допустимым типом канала.", + "error-invalid-room": "Недопустимый чат", + "error-invalid-room-name": "{{room_name}} не является допустимым именем чата", + "error-invalid-room-type": "{{type}} не является допустимым типом чата.", "error-invalid-settings": "Недопустимые параметры", "error-invalid-subscription": "Недействительная подписка", "error-invalid-token": "Недопустимый токен", @@ -77,7 +77,7 @@ "error-user-registration-custom-field": "error-user-registration-custom-field", "error-user-registration-disabled": "Регистрация пользователей отключена", "error-user-registration-secret": "Регистрация пользователей разрешена только через секретный URL", - "error-you-are-last-owner": "Вы последний владелец. Пожалуйста, установите нового владельца, прежде чем покинуть комнату.", + "error-you-are-last-owner": "Вы последний владелец. Пожалуйста, назначьте нового владельца, прежде чем покинуть чат.", "Actions": "Действия", "activity": "активности", "Activity": "По активности", @@ -281,6 +281,8 @@ "Invite_Link": "Ссылка Приглашения", "Invite_users": "Приглашение пользователей", "Join": "Присоединиться", + "Join_Code": "Код присоединения", + "Insert_Join_Code": "Вставить код присоединения", "Join_our_open_workspace": "Присоединиться к нашему открытому серверу", "Join_your_workspace": "Присоединиться к вашему серверу", "Just_invited_people_can_access_this_channel": "Только приглашенные люди могут получить доступ к этому каналу", @@ -322,7 +324,7 @@ "Mute": "Заглушить", "muted": "Заглушен", "My_servers": "Мои серверы", - "N_person_reacted": "{{n}} людей отреагировало", + "N_people_reacted": "отреагировало {{n}} человек", "N_users": "{{n}} пользователи", "name": "имя", "Name": "Имя", @@ -704,5 +706,15 @@ "Enter_workspace_URL": "Введите URL вашего рабочего пространства", "Workspace_URL_Example": "Например, your-company.rocket.chat", "This_room_encryption_has_been_enabled_by__username_": "Шифрование для этого чата включено {{username}}", - "This_room_encryption_has_been_disabled_by__username_": "Шифрование для этого чата выключено {{username}}" + "This_room_encryption_has_been_disabled_by__username_": "Шифрование для этого чата выключено {{username}}", + "Teams": "Команды", + "No_team_channels_found": "Каналы не найдены", + "Team_not_found": "Команда не найдена", + "Create_Team": "Создать Команду", + "Team_Name": "Имя Команды", + "Private_Team": "Приватная Команда", + "Read_Only_Team": "Команда только для чтения", + "Broadcast_Team": "Широковещательная Команда", + "creating_team": "создание Команды", + "team-name-already-exists": "Команда с таким названием уже существует" } \ No newline at end of file diff --git a/app/i18n/locales/tr.json b/app/i18n/locales/tr.json index 1029893adfd..4de4c1ecf42 100644 --- a/app/i18n/locales/tr.json +++ b/app/i18n/locales/tr.json @@ -440,7 +440,6 @@ "Room_changed_announcement": "Oda duyurusu, {{userBy}} tarafından {{announcement}} olarak değiştirildi", "Room_changed_avatar": "Oda profil fotoğrafı {{userBy}} tarafından değiştirildi", "Room_changed_description": "Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi", - "Room_changed_privacy": "Oda açıklaması, {{userBy}} tarafından {{description}} olarak değiştirildi", "Room_changed_topic": "Oda konusu, {{userBy}} tarafından {{topic}} olarak değiştirildi", "Room_Files": "Oda Dosyaları", "Room_Info_Edit": "Oda Bilgilerini Düzenle", @@ -565,7 +564,6 @@ "Username": "Kullanıcı adı", "Username_or_email": "Kullanıcı adı ya da e-posta", "Uses_server_configuration": "Sunucu yapılandırmasını kullanır", - "Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture": "Genellikle tartışma, \"Nasıl resim yüklerim?\" gibi bir soruyla başlar.", "Validating": "Doğrulanıyor", "Registration_Succeeded": "Kayıt Başarılı!", "Verify": "Onayla", @@ -600,7 +598,6 @@ "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Bir şeyler paylaşmak için Rocket.Chat sunucusuna erişmeniz gerekir.", "You_need_to_verifiy_your_email_address_to_get_notications": "Bildirim almak için e-posta adresinizi doğrulamanız gerekiyor", "Your_certificate": "Sertifikanız", - "Your_message": "İletiınız", "Your_invite_link_will_expire_after__usesLeft__uses": "Davet bağlantınızın geçerliliği {{usesLeft}} kullanımdan sonra sona erecek.", "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Davet bağlantınızın geçerliliği {{date}} tarihinde veya {{usesLeft}} kullanımdan sonra sona erecek.", "Your_invite_link_will_expire_on__date__": "Davet bağlantınızın geçerlilik süresi {{date}} tarihinde sona erecek.", @@ -695,12 +692,12 @@ "User_has_been_ignored": "Kullanıcı yok sayıldı.", "User_has_been_unignored": "Kullanıcı artık yok sayılmıyor.", "User_has_been_removed_from_s": "Kullanıcı {{s}} alanından kaldırıldı.", - "User__username__is_now_a_leader_of__room_name_": "{{Username}} kullanıcısı artık {{room_name}} lideridir.", - "User__username__is_now_a_moderator_of__room_name_": "{{Username}} kullanıcısı artık bir {{room_name}} moderatörüdür.", - "User__username__is_now_a_owner_of__room_name_": "{{Username}} kullanıcısı artık {{room_name}} adlı odanın sahibidir.", - "User__username__removed_from__room_name__leaders": "{{Username}} adlı kullanıcı, {{room_name}} liderlerinden kaldırıldı.", - "User__username__removed_from__room_name__moderators": "{{Username}} adlı kullanıcı, {{room_name}} moderatörlerinden kaldırıldı.", - "User__username__removed_from__room_name__owners": "{{Username}} adlı kullanıcı, {{room_name}} sahiplerinden kaldırıldı.", + "User__username__is_now_a_leader_of__room_name_": "{{username}} kullanıcısı artık {{room_name}} lideridir.", + "User__username__is_now_a_moderator_of__room_name_": "{{username}} kullanıcısı artık bir {{room_name}} moderatörüdür.", + "User__username__is_now_a_owner_of__room_name_": "{{username}} kullanıcısı artık {{room_name}} adlı odanın sahibidir.", + "User__username__removed_from__room_name__leaders": "{{username}} adlı kullanıcı, {{room_name}} liderlerinden kaldırıldı.", + "User__username__removed_from__room_name__moderators": "{{username}} adlı kullanıcı, {{room_name}} moderatörlerinden kaldırıldı.", + "User__username__removed_from__room_name__owners": "{{username}} adlı kullanıcı, {{room_name}} sahiplerinden kaldırıldı.", "The_user_will_be_removed_from_s": "Kullanıcı, {{s}} alanından kaldırılacak!", "Yes_remove_user": "Evet, kullanıcıyı kaldır!", "Direct_message": "Özel ileti", diff --git a/app/i18n/locales/zh-CN.json b/app/i18n/locales/zh-CN.json index 3253216e16b..1b6fe974c76 100644 --- a/app/i18n/locales/zh-CN.json +++ b/app/i18n/locales/zh-CN.json @@ -33,7 +33,7 @@ "error-invalid-date": "无效的日期", "error-invalid-description": "无效的描述", "error-invalid-domain": "无效的域名", - "error-invalid-email": "无效的电子邮件{{emai}}", + "error-invalid-email": "无效的电子邮件{{email}}", "error-invalid-email-address": "无效的邮件地址", "error-invalid-file-height": "无效的文件长度", "error-invalid-file-type": "无效的文件类型", @@ -278,11 +278,11 @@ "is_typing": "正在输入", "Invalid_or_expired_invite_token": "无效或到期的邀请 token", "Invalid_server_version": "此 App 版本已不支援您正在连线之服务器版本。当前版本: {{currentVersion}}.\\n\\n最低版本要求: {{minVersion}}", - "Join_your_workspace": "加入您的工作区", "Invite_Link": "邀请链接", "Invite_users": "邀请用戶", "Join": "加入", "Join_our_open_workspace": "加入开放工作区", + "Join_your_workspace": "加入您的工作区", "Just_invited_people_can_access_this_channel": "仅有被邀请人能进入这个频道", "Language": "语言", "last_message": "最后一条信息", @@ -300,7 +300,7 @@ "Logging_out": "正在登出", "Logout": "注销", "Max_number_of_uses": "最大使用次数", - "Max_number_of_users_allowed_is_number": "允许使用者上限数量", + "Max_number_of_users_allowed_is_number": "允许使用者上限数量{{maxUsers}}", "members": "成员", "Members": "成员", "Mentioned_Messages": "被提及的信息", @@ -444,7 +444,7 @@ "Room_Info_Edit": "聊天室信息编辑", "Room_Info": "聊天室信息", "Room_Members": "聊天室成员", - "Room_name_changed": "{{userBy}} 将聊天室名称改为:{{{name}}", + "Room_name_changed": "{{userBy}} 将聊天室名称改为:{{name}}", "SAVE": "保存", "Save_Changes": "保存更改", "Save": "保存", diff --git a/app/i18n/locales/zh-TW.json b/app/i18n/locales/zh-TW.json index 271e56418f5..dc5748c2729 100644 --- a/app/i18n/locales/zh-TW.json +++ b/app/i18n/locales/zh-TW.json @@ -278,11 +278,11 @@ "is_typing": "正在輸入", "Invalid_or_expired_invite_token": "無效或到期的邀請 token", "Invalid_server_version": "此 App 版本已不支援您正在連線之伺服器版本。當前版本: {{currentVersion}}.\\n\\n最低版本要求: {{minVersion}}", - "Join_your_workspace": "加入您的工作區", "Invite_Link": "邀請連結", "Invite_users": "邀請使用者", "Join": "加入", "Join_our_open_workspace": "加入開放工作區", + "Join_your_workspace": "加入您的工作區", "Just_invited_people_can_access_this_channel": "僅有受邀者能存取此頻道", "Language": "語言", "last_message": "最後一則訊息", @@ -300,7 +300,7 @@ "Logging_out": "正在登出", "Logout": "登出", "Max_number_of_uses": "最大使用次數", - "Max_number_of_users_allowed_is_number": "允許使用者上限數量", + "Max_number_of_users_allowed_is_number": "允許使用者上限數量 {{maxUsers}}", "members": "成員", "Members": "成員", "Mentioned_Messages": "被提及的訊息", @@ -444,7 +444,7 @@ "Room_Info_Edit": "修改聊天室資訊", "Room_Info": "聊天室資訊", "Room_Members": "聊天室成員", - "Room_name_changed": "{{userBy}} 將聊天室名稱改為:{{{name}}", + "Room_name_changed": "{{userBy}} 將聊天室名稱改為:{{name}}", "SAVE": "儲存", "Save_Changes": "儲存更改", "Save": "儲存", From 9670fa623a9c5d5989fecac25c8b3ea5867fd386 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 19 May 2021 17:14:42 -0400 Subject: [PATCH 118/177] [NEW] Add/Create/Remove channel on a team (#3090) * Added Create Team * Added actionTypes, actions, ENG strings for Teams and updated NewMessageView * Added createTeam sagas, createTeam reducer, new Team string and update CreateChannelView * Remove unnecessary actionTypes, reducers and sagas, e2e tests and navigation to team view * Minor tweaks * Show TeamChannelsView only if joined the team * Minor tweak * Added AddChannelTeamView * Added permissions, translations strings for teams, deleteTeamRoom and addTeamRooms, AddExistingChannelView, updated CreateChannelView, TeamChannelsView * Refactor touch component and update removeRoom and deleteRoom methods * Minor tweaks * Minor tweaks for removing channels and addExistingChannelView * Added missing events and fixed channels list * Minor tweaks for refactored touch component * Minor tweaks * Remove unnecesary changes, update TeamChannelsView, AddExistingChannelView, AddChannelTeamView, createChannel, goRoom and Touchable * Add screens to ModalStack, events, autoJoin, update createChannel, addRoomsToTeam and Touchable * Minor tweak * Update loadMessagesForRoom.js * Updated schema, tag component, touch, AddChannelTeamView, AddExistingChannelView, ActionSheet Item * Fix unnecessary changes * Add i18n, update createChannel, AddExistingChannelTeamView, AddChannelTeamView, RightButton and TeamChannelsView * Updated styles, added tag story * Minor tweak * Minor tweaks * Auto-join tweak * Minor tweaks * Minor tweak on search * One way to refactor :P * Next level refactor :) * Fix create group dm * Refactor renderItem * Minor bug fixes * Fix stories Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 21893 +++++++++------- app/containers/ActionSheet/Item.js | 24 +- app/containers/ActionSheet/styles.js | 6 + app/containers/RoomTypeIcon.js | 1 + app/i18n/locales/en.json | 14 +- app/lib/methods/getPermissions.js | 7 +- app/lib/rocketchat.js | 30 +- app/presentation/RoomItem/RoomItem.js | 17 +- app/presentation/RoomItem/Tag.js | 30 + app/presentation/RoomItem/Touchable.js | 105 +- app/presentation/RoomItem/index.js | 17 +- app/presentation/RoomItem/styles.js | 11 + app/sagas/createChannel.js | 37 +- app/stacks/InsideStack.js | 12 + app/stacks/MasterDetailStack/index.js | 12 + app/utils/log/events.js | 8 + app/views/AddChannelTeamView.js | 72 + app/views/AddExistingChannelView.js | 209 + app/views/CreateChannelView.js | 6 +- app/views/NewMessageView.js | 6 +- app/views/TeamChannelsView.js | 187 +- storybook/stories/RoomItem.js | 10 +- 22 files changed, 12592 insertions(+), 10122 deletions(-) create mode 100644 app/presentation/RoomItem/Tag.js create mode 100644 app/views/AddChannelTeamView.js create mode 100644 app/views/AddExistingChannelView.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 52cde22be23..68b171855cb 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -44122,46 +44122,119 @@ exports[`Storyshots Room Item Alerts 1`] = ` > <View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -44170,7 +44243,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -44183,7 +44256,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text style={ @@ -44203,268 +44276,295 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -44474,82 +44574,57 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, Object { "backgroundColor": "transparent", "fontFamily": "System", + "fontSize": 15, "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -44558,7 +44633,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -44571,7 +44646,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text style={ @@ -44591,394 +44666,396 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + unread + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > <Text - ellipsizeMode="tail" - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", + "color": "white", + "fontSize": 20, }, + undefined, Object { - "color": "#0d0e12", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - unread +  </Text> - <View + <Text style={ Array [ Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, + "marginTop": 4, + "textAlign": "left", }, Object { - "backgroundColor": "#6C727A", - "minWidth": 21, + "color": "#ffffff", }, - undefined, ] } > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", - }, - undefined, - Object { - "color": "#ffffff", - }, - ] - } - > - 1 - </Text> - </View> + Read + </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -44987,7 +45064,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -45000,7 +45077,64 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  </Text> <Text style={ @@ -45020,347 +45154,219 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > <View style={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, Object { - "flex": 1, + "marginRight": 10, }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0d0e12", - }, - ] - } - > - unread - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { "alignItems": "center", - "borderRadius": 10.5, - "height": 21, + "flexDirection": "row", "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, + "width": "100%", }, Object { - "backgroundColor": "#6C727A", - "minWidth": 21, + "flex": 1, }, - undefined, ] } > <Text - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", - "textAlign": "left", + "color": "#cbced1", + "fontSize": 16, }, - undefined, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], Object { - "color": "#ffffff", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - +999 +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + unread </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + +999 + </Text> + </View> </View> </View> </View> @@ -45368,46 +45374,119 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -45416,7 +45495,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -45429,7 +45508,64 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  </Text> <Text style={ @@ -45449,394 +45585,339 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > <View style={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - user mentions - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F5455C", - "minWidth": 21, - }, - undefined, - ] - } - > + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + user mentions </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F5455C", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -45845,7 +45926,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -45858,7 +45939,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text style={ @@ -45878,347 +45959,276 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - group mentions - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F38C39", - "minWidth": 21, - }, - undefined, - ] - } - > + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + group mentions </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F38C39", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -46226,46 +46236,119 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -46274,7 +46357,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -46287,7 +46370,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text style={ @@ -46307,347 +46390,276 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#1d74f5", - "minWidth": 21, - }, - undefined, - ] - } - > + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + thread unread </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#1d74f5", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -46655,68 +46667,141 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, Object {}, ] } > -  +  </Text> <Text style={ @@ -46736,347 +46821,276 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread user - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F5455C", - "minWidth": 21, - }, - undefined, - ] - } - > + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + thread unread user </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F5455C", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -47084,428 +47098,430 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Read - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > <View + pointerEvents="box-none" style={ Object { - "alignItems": "center", "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> </View> <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "flex": 1, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <Text - allowFontScaling={false} +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread group - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { "alignItems": "center", - "borderRadius": 10.5, - "height": 21, + "flexDirection": "row", "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, + "width": "100%", }, Object { - "backgroundColor": "#F38C39", - "minWidth": 21, + "flex": 1, }, - undefined, ] } > <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + thread unread group </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F38C39", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -47513,59 +47529,132 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { "fontFamily": "custom", "fontStyle": "normal", "fontWeight": "normal", @@ -47574,7 +47663,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text style={ @@ -47594,347 +47683,276 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - user mentions priority 1 - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#F5455C", - "minWidth": 21, - }, - undefined, - ] - } - > + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + user mentions priority 1 </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F5455C", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -47942,428 +47960,430 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Read - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > <View + pointerEvents="box-none" style={ Object { - "alignItems": "center", "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> </View> <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "flex": 1, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", + "overflow": "hidden", }, Object { - "color": "#0d0e12", + "borderRadius": 4, + "height": 48, + "width": 48, }, ] } > - group mentions priority 2 - </Text> + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > <View style={ Array [ Object { "alignItems": "center", - "borderRadius": 10.5, - "height": 21, + "flexDirection": "row", "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, + "width": "100%", }, Object { - "backgroundColor": "#F38C39", - "minWidth": 21, + "flex": 1, }, - undefined, ] } > <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + group mentions priority 2 </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#F38C39", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -48371,59 +48391,132 @@ exports[`Storyshots Room Item Alerts 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { "fontFamily": "custom", "fontStyle": "normal", "fontWeight": "normal", @@ -48432,7 +48525,7 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > -  +  </Text> <Text style={ @@ -48452,347 +48545,276 @@ exports[`Storyshots Room Item Alerts 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - thread unread priority 3 - </Text> - <View - style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#1d74f5", - "minWidth": 21, - }, - undefined, - ] - } - > + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> <Text + ellipsizeMode="tail" numberOfLines={1} style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, "fontWeight": "600", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#0d0e12", }, ] } > - 1 + thread unread priority 3 </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#1d74f5", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -48813,383 +48835,385 @@ exports[`Storyshots Room Item Basic 1`] = ` > <View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Read - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > <View + pointerEvents="box-none" style={ Object { - "alignItems": "center", "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> </View> <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "flex": 1, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <Text - allowFontScaling={false} +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, - undefined, Object { - "color": "#0d0e12", + "flex": 1, }, ] } > - rocket.cat - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> </View> @@ -49209,312 +49233,491 @@ exports[`Storyshots Room Item Last Message 1`] = ` > <View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, + "transform": Array [ Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "translateX": -80, }, - Object {}, - ] + ], + "width": 750, } - > -  - </Text> - <Text + } + > + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > - Read - </Text> - </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, + "right": 0, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > -  - </Text> - <Text + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, - ] + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] } > - <FastImageView - resizeMode="cover" - source={ + <View + style={ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", } } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View style={ Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", } } - /> + > + <Text + accessibilityLabel="No Message" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + No Message + </Text> + </View> </View> </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ Object { - "alignItems": "center", - "flexDirection": "row", + "height": 150, "justifyContent": "center", - "width": "100%", + "position": "absolute", + "right": 0, + "top": 0, } } > @@ -49523,30 +49726,10 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -49556,141 +49739,57 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - undefined, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#ffffff", }, - undefined, ] } > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="No Message" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - No Message + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -49699,7 +49798,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -49712,7 +49811,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  +  </Text> <Text style={ @@ -49732,407 +49831,466 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } } > -  - </Text> + <Text + accessibilityLabel="2" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 2 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > <Text - ellipsizeMode="tail" - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", + "color": "white", + "fontSize": 20, }, undefined, Object { - "color": "#0d0e12", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - rocket.cat +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#ffffff", }, - undefined, ] } > - 10:00 + Read </Text> </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } - > - <Text - accessibilityLabel="2" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - 2 - </Text> - </View> - </View> - </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > - <View - style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, } - } - > + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> <View style={ Object { "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -50141,7 +50299,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -50154,7 +50312,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  +  </Text> <Text style={ @@ -50174,407 +50332,409 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } } > -  - </Text> + <Text + accessibilityLabel="You: 1" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + You: 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > <Text - ellipsizeMode="tail" - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", + "color": "white", + "fontSize": 20, }, undefined, Object { - "color": "#0d0e12", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - rocket.cat +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#ffffff", }, - undefined, ] } > - 10:00 + Read </Text> </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } - > - <Text - accessibilityLabel="You: 1" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - You: 1 - </Text> - </View> - </View> - </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > - <View - style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, } - } - > + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> <View style={ Object { "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -50583,7 +50743,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -50596,7 +50756,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  +  </Text> <Text style={ @@ -50616,407 +50776,352 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } } > -  - </Text> + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > <Text - ellipsizeMode="tail" - numberOfLines={1} + allowFontScaling={false} style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", + "color": "white", + "fontSize": 20, }, undefined, Object { - "color": "#0d0e12", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - rocket.cat +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, Object { - "color": "#9ca2a8", + "color": "#ffffff", }, - undefined, ] } > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -51025,7 +51130,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -51038,7 +51143,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  +  </Text> <Text style={ @@ -51058,319 +51163,216 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } + "marginRight": 10, + }, + ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0d0e12", - }, - ] + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } } > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", @@ -51378,143 +51380,248 @@ exports[`Storyshots Room Item Last Message 1`] = ` "textAlign": "left", }, Object { - "color": "#1d74f5", + "color": "#0d0e12", }, - ], - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ], + ] + } + > + 10:00 + </Text> + </View> <View style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#6C727A", - "minWidth": 21, - }, - undefined, - ] + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } } > <Text - numberOfLines={1} + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#2f343d", }, ] } > - 1 + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> - </View> - </View> - </View> - </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -51523,7 +51630,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -51536,7 +51643,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  +  </Text> <Text style={ @@ -51556,319 +51663,216 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", @@ -51876,96 +51880,128 @@ exports[`Storyshots Room Item Last Message 1`] = ` "textAlign": "left", }, Object { - "color": "#1d74f5", + "color": "#0d0e12", }, - ], - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ], + ] + } + > + 10:00 + </Text> + </View> <View style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#6C727A", - "minWidth": 21, - }, - undefined, - ] + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } } > <Text - numberOfLines={1} + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#2f343d", }, ] } > - +999 + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#6C727A", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + +999 + </Text> + </View> </View> </View> </View> @@ -51973,46 +52009,119 @@ exports[`Storyshots Room Item Last Message 1`] = ` </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -52021,7 +52130,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -52034,7 +52143,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > -  +  </Text> <Text style={ @@ -52054,319 +52163,216 @@ exports[`Storyshots Room Item Last Message 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - } + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#cbced1", - "fontSize": 16, - }, + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontWeight": "600", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 13, - "fontWeight": "400", - "marginLeft": 4, - "textAlign": "left", - }, - Object { - "color": "#9ca2a8", - }, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, Object { "backgroundColor": "transparent", "fontFamily": "System", @@ -52374,96 +52380,128 @@ exports[`Storyshots Room Item Last Message 1`] = ` "textAlign": "left", }, Object { - "color": "#1d74f5", + "color": "#0d0e12", }, - ], - ] - } - > - 10:00 - </Text> - </View> - <View - style={ - Object { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - } - } - > - <Text - accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" - numberOfLines={2} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 14, - "fontWeight": "400", - "lineHeight": 17, - "textAlign": "left", - }, - Object { - "color": "#2f343d", - }, - ] - } - > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> + ] + } + > + rocket.cat + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontWeight": "600", + "textAlign": "left", + }, + Object { + "color": "#1d74f5", + }, + ], + ] + } + > + 10:00 + </Text> + </View> <View style={ - Array [ - Object { - "alignItems": "center", - "borderRadius": 10.5, - "height": 21, - "justifyContent": "center", - "marginLeft": 10, - "paddingHorizontal": 5, - "paddingVertical": 3, - }, - Object { - "backgroundColor": "#1d74f5", - "minWidth": 21, - }, - undefined, - ] + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } } > <Text - numberOfLines={1} + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={2} style={ Array [ Object { "backgroundColor": "transparent", "fontFamily": "System", - "fontSize": 13, - "fontWeight": "600", + "fontSize": 16, + "fontWeight": "400", "textAlign": "left", }, - undefined, Object { - "color": "#ffffff", + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#2f343d", }, ] } > - 1 + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "borderRadius": 10.5, + "height": 21, + "justifyContent": "center", + "marginLeft": 10, + "paddingHorizontal": 5, + "paddingVertical": 3, + }, + Object { + "backgroundColor": "#1d74f5", + "minWidth": 21, + }, + undefined, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "textAlign": "left", + }, + undefined, + Object { + "color": "#ffffff", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -52474,7 +52512,7 @@ exports[`Storyshots Room Item Last Message 1`] = ` </RCTScrollView> `; -exports[`Storyshots Room Item Type 1`] = ` +exports[`Storyshots Room Item Tag 1`] = ` <RCTScrollView style={ Object { @@ -52484,318 +52522,48 @@ exports[`Storyshots Room Item Type 1`] = ` > <View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> <View + pointerEvents="box-none" style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ Object { + "backgroundColor": "#1d74f5", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, + "right": 670, "top": 0, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, + "transform": Array [ Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "translateX": -80, }, - Object {}, - ] + ], + "width": 750, } - > -  - </Text> - <Text + } + > + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Read - </Text> - </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -52803,30 +52571,10 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -52836,77 +52584,57 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -52915,7 +52643,7 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -52928,7 +52656,7 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text style={ @@ -52948,336 +52676,386 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, - }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, - Object {}, - ] - } - > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ Object { - "backgroundColor": "transparent", "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - undefined, - Object { - "color": "#0d0e12", }, ] } > - rocket.cat - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "alignSelf": "center", + "borderRadius": 4, + "marginHorizontal": 4, + }, + Object { + "backgroundColor": "#e1e5e8", + }, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "paddingHorizontal": 4, + "textAlign": "left", + }, + Object { + "color": "#6d6d72", + }, + ] + } + > + Auto-join + </Text> + </View> + </View> </View> </View> </View> </View> </View> <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -53286,7 +53064,7 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -53299,7 +53077,64 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  </Text> <Text style={ @@ -53319,364 +53154,2461 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > <View style={ Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} + <View style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } - } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, - ] - } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > - <View - style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, Object { - "flex": 1, + "marginRight": 10, }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} - style={ - Array [ + <FastImageView + resizeMode="cover" + source={ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", - }, - undefined, + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ Object { - "color": "#0d0e12", - }, - ] - } - > - rocket.cat - </Text> + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > - <View - style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } - } - > - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "white", - "fontSize": 20, + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, - undefined, Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderColor": "#cbcbcc", }, - Object {}, ] } > -  - </Text> - <Text - style={ - Array [ + <View + style={ Object { - "backgroundColor": "transparent", + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "alignSelf": "center", + "borderRadius": 4, + "marginHorizontal": 4, + }, + Object { + "backgroundColor": "#e1e5e8", + }, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "paddingHorizontal": 4, + "textAlign": "left", + }, + Object { + "color": "#6d6d72", + }, + ] + } + > + Auto-join + </Text> + </View> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="No Message" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + No Message + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "alignSelf": "center", + "borderRadius": 4, + "marginHorizontal": 4, + }, + Object { + "backgroundColor": "#e1e5e8", + }, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "paddingHorizontal": 4, + "textAlign": "left", + }, + Object { + "color": "#6d6d72", + }, + ] + } + > + Auto-join + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <View + style={ + Array [ + Object { + "alignItems": "center", + "alignSelf": "center", + "borderRadius": 4, + "marginHorizontal": 4, + }, + Object { + "backgroundColor": "#e1e5e8", + }, + ] + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "600", + "paddingHorizontal": 4, + "textAlign": "left", + }, + Object { + "color": "#6d6d72", + }, + ] + } + > + Auto-join + </Text> + </View> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 13, + "fontWeight": "400", + "marginLeft": 4, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + undefined, + ] + } + > + 10:00 + </Text> + </View> + <View + style={ + Object { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + } + } + > + <Text + accessibilityLabel="No Message" + numberOfLines={2} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#2f343d", + }, + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 14, + "fontWeight": "400", + "lineHeight": 17, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + No Message + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item Type 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", "fontFamily": "System", "fontSize": 15, "fontWeight": "600", @@ -53690,256 +55622,278 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } - > - <View - style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "marginRight": 4, + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "color": "#0d0e12", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", }, undefined, - ], + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -53949,77 +55903,57 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -54028,7 +55962,7 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -54041,7 +55975,64 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  </Text> <Text style={ @@ -54061,237 +56052,210 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] } - /> + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -54299,18 +56263,10 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -54320,77 +56276,57 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -54399,7 +56335,7 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -54412,7 +56348,7 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text style={ @@ -54432,256 +56368,278 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "marginRight": 4, + "color": undefined, + "fontSize": 16, }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "color": "#0d0e12", + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", }, undefined, - ], + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -54691,77 +56649,57 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -54770,7 +56708,7 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -54783,7 +56721,7 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text style={ @@ -54803,237 +56741,280 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > - Read + Favorite </Text> - </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/@rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] } - /> + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 16, + }, + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item User 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -55041,18 +57022,10 @@ exports[`Storyshots Room Item Type 1`] = ` style={ Array [ Object { - "color": undefined, - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -55062,90 +57035,57 @@ exports[`Storyshots Room Item Type 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - </View> -</RCTScrollView> -`; - -exports[`Storyshots Room Item User 1`] = ` -<RCTScrollView - style={ - Object { - "backgroundColor": "#ffffff", - } - } -> - <View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -55154,7 +57094,7 @@ exports[`Storyshots Room Item User 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -55167,7 +57107,7 @@ exports[`Storyshots Room Item User 1`] = ` ] } > -  +  </Text> <Text style={ @@ -55187,268 +57127,290 @@ exports[`Storyshots Room Item User 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> <View style={ Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "transform": Array [ + Object { + "translateX": 0, + }, + ], } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#cbced1", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#cbced1", }, - undefined, ], - Object { - "color": "#cbced1", - }, ], - ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -55458,77 +57420,114 @@ exports[`Storyshots Room Item User 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - diego.mello + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> <View style={ Object { "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -55537,7 +57536,7 @@ exports[`Storyshots Room Item User 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -55550,7 +57549,7 @@ exports[`Storyshots Room Item User 1`] = ` ] } > -  +  </Text> <Text style={ @@ -55570,237 +57569,235 @@ exports[`Storyshots Room Item User 1`] = ` ] } > - Read + Hide </Text> </View> </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, } } > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > - Hide - </Text> + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> + </View> + </View> </View> </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots Room Item User status 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View> <View + pointerEvents="box-none" style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, - } + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] - } - > - <View - style={ - Array [ - Object { - "overflow": "hidden", - }, + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "translateX": -80, }, - ] + ], + "width": 750, } - > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] } > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -55808,30 +57805,10 @@ exports[`Storyshots Room Item User 1`] = ` style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -55841,90 +57818,57 @@ exports[`Storyshots Room Item User 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + Read </Text> </View> </View> </View> - </View> - </View> - </View> -</RCTScrollView> -`; - -exports[`Storyshots Room Item User status 1`] = ` -<RCTScrollView - style={ - Object { - "backgroundColor": "#ffffff", - } - } -> - <View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -55933,7 +57877,7 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -55946,7 +57890,7 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text style={ @@ -55966,268 +57910,290 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#2de0a5", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#2de0a5", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#2de0a5", }, - undefined, ], - Object { - "color": "#2de0a5", - }, ], - ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -56237,77 +58203,57 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -56316,7 +58262,7 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -56329,7 +58275,7 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text style={ @@ -56349,237 +58295,279 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ Object { - "overflow": "hidden", + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "borderColor": "#cbcbcc", }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] } - /> + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffd21f", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#ffd21f", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -56587,30 +58575,10 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "#ffd21f", - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#ffd21f", - }, - ], - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -56620,77 +58588,57 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -56699,7 +58647,7 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -56712,7 +58660,7 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text style={ @@ -56732,268 +58680,290 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] } - /> + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> </View> - </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] - } - > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "flex": 1, + "borderColor": "#cbcbcc", }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#f5455c", - "fontSize": 16, + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, }, + ] + } + > + <Text + allowFontScaling={false} + style={ Array [ Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, + "color": "#f5455c", + "fontSize": 16, }, Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", + "color": "#f5455c", }, - undefined, ], - Object { - "color": "#f5455c", - }, ], - ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -57003,77 +58973,57 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -57082,7 +59032,7 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -57095,7 +59045,7 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text style={ @@ -57115,237 +59065,279 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ Object { - "overflow": "hidden", + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, }, Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "borderColor": "#cbcbcc", }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] } - /> + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -57353,30 +59345,10 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -57386,77 +59358,57 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > <View + pointerEvents="box-none" style={ Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", + "flexDirection": "row", + "height": 75, + "left": 0, "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, + "right": 0, } } > <View style={ Object { + "backgroundColor": "#54585e", "height": 150, "justifyContent": "center", "position": "absolute", - "right": 0, "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, } } > @@ -57465,7 +59417,7 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "white", + "color": "#ffffff", "fontSize": 20, }, undefined, @@ -57478,7 +59430,7 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text style={ @@ -57498,237 +59450,279 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > - Read + Favorite </Text> </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - Favorite - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> </View> <View style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, "transform": Array [ Object { - "translateX": 750, + "translateX": 0, }, ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", - "flexDirection": "row", - "height": 150, - "paddingLeft": 14, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ - Object { - "overflow": "hidden", - }, Object { "borderRadius": 4, "height": 48, "width": 48, }, + Object { + "marginRight": 10, + }, ] } > - <FastImageView - resizeMode="cover" - source={ - Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } + <View style={ - Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] } - /> + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ea2a8", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#9ea2a8", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> - <View - style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, - Object { - "borderColor": "#cbcbcc", - }, - ] + </View> + </View> + </View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } } > <View style={ - Array [ - Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", - }, - Object { - "flex": 1, - }, - ] + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } } > <Text @@ -57736,30 +59730,10 @@ exports[`Storyshots Room Item User status 1`] = ` style={ Array [ Object { - "color": "#9ea2a8", - "fontSize": 16, + "color": "white", + "fontSize": 20, }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#9ea2a8", - }, - ], - ], + undefined, Object { "fontFamily": "custom", "fontStyle": "normal", @@ -57769,414 +59743,323 @@ exports[`Storyshots Room Item User status 1`] = ` ] } > -  +  </Text> <Text - ellipsizeMode="tail" - numberOfLines={1} style={ Array [ Object { "backgroundColor": "transparent", - "flex": 1, "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, "textAlign": "left", }, - undefined, Object { - "color": "#0d0e12", + "color": "#ffffff", }, ] } > - rocket.cat + Read </Text> </View> </View> </View> - </View> - </View> - <View> - <View - pointerEvents="box-none" - style={ - Array [ - Object { - "height": 150, - "left": 0, - "position": "absolute", - "right": 0, - }, - undefined, - ] - } - > - <View - style={ - Object { - "backgroundColor": "#1d74f5", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 670, - "top": 0, - "transform": Array [ - Object { - "translateX": -80, - }, - ], - "width": 750, - } - } - > - <View - style={ - Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "white", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Read - </Text> - </View> - </View> - </View> - <View - pointerEvents="box-none" - style={ - Object { - "flexDirection": "row", - "height": 75, - "left": 0, - "position": "absolute", - "right": 0, - } - } - > - <View - style={ - Object { - "backgroundColor": "#54585e", - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Favorite - </Text> - </View> <View + pointerEvents="box-none" style={ Object { - "height": 150, - "justifyContent": "center", - "position": "absolute", - "top": 0, - "transform": Array [ - Object { - "translateX": 750, - }, - ], - "width": 750, - } - } - > - <Text - allowFontScaling={false} - style={ - Array [ - Object { - "color": "#ffffff", - "fontSize": 20, - }, - undefined, - Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", - }, - Object {}, - ] - } - > -  - </Text> - <Text - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 15, - "fontWeight": "600", - "justifyContent": "center", - "marginTop": 4, - "textAlign": "left", - }, - Object { - "color": "#ffffff", - }, - ] - } - > - Hide - </Text> - </View> - </View> - <View - style={ - Object { - "transform": Array [ - Object { - "translateX": 0, - }, - ], - } - } - > - <View - style={ - Object { - "alignItems": "center", "flexDirection": "row", - "height": 150, - "paddingLeft": 14, + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, } } > <View style={ - Array [ - Object { - "borderRadius": 4, - "height": 48, - "width": 48, - }, - Object { - "marginRight": 10, - }, - ] + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } } > - <View + <Text + allowFontScaling={false} style={ Array [ Object { - "overflow": "hidden", + "color": "#ffffff", + "fontSize": 20, }, + undefined, Object { - "borderRadius": 4, - "height": 48, - "width": 48, + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", }, + Object {}, ] } > - <FastImageView - resizeMode="cover" - source={ +  + </Text> + <Text + style={ + Array [ Object { - "headers": undefined, - "priority": "high", - "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", - } - } - style={ + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, Object { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - /> - </View> + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> </View> <View style={ - Array [ - Object { - "borderBottomWidth": 0.5, - "flex": 1, - "paddingRight": 14, - "paddingVertical": 10, - }, + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ Object { - "borderColor": "#cbcbcc", + "translateX": 0, }, - ] + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } } > <View style={ Array [ Object { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - "width": "100%", + "borderRadius": 4, + "height": 48, + "width": 48, }, Object { - "flex": 1, + "marginRight": 10, }, ] } > - <Text - allowFontScaling={false} + <View style={ Array [ Object { - "color": "#cbced1", - "fontSize": 16, + "overflow": "hidden", }, - Array [ - Object { - "height": 16, - "textAlignVertical": "center", - "width": 16, - }, - Array [ - Array [ - Object { - "marginRight": 4, - }, - Object { - "color": "#0d0e12", - }, - undefined, - ], - Object { - "color": "#cbced1", - }, - ], - ], Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "borderRadius": 4, + "height": 48, + "width": 48, }, - Object {}, ] } > -  - </Text> - <Text - ellipsizeMode="tail" - numberOfLines={1} + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View style={ Array [ Object { - "backgroundColor": "transparent", - "flex": 1, - "fontFamily": "System", - "fontSize": 17, - "fontWeight": "500", - "lineHeight": 20, - "textAlign": "left", + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", }, - undefined, Object { - "color": "#0d0e12", + "flex": 1, }, ] } > - rocket.cat - </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> </View> </View> </View> diff --git a/app/containers/ActionSheet/Item.js b/app/containers/ActionSheet/Item.js index 7cd5e7b4d8d..aa76da8bb55 100644 --- a/app/containers/ActionSheet/Item.js +++ b/app/containers/ActionSheet/Item.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Text } from 'react-native'; +import { Text, View } from 'react-native'; import { themes } from '../../constants/colors'; import { CustomIcon } from '../../lib/Icons'; @@ -20,12 +20,19 @@ export const Item = React.memo(({ item, hide, theme }) => { theme={theme} > <CustomIcon name={item.icon} size={20} color={item.danger ? themes[theme].dangerColor : themes[theme].bodyText} /> - <Text - numberOfLines={1} - style={[styles.title, { color: item.danger ? themes[theme].dangerColor : themes[theme].bodyText }]} - > - {item.title} - </Text> + <View style={styles.titleContainer}> + <Text + numberOfLines={1} + style={[styles.title, { color: item.danger ? themes[theme].dangerColor : themes[theme].bodyText }]} + > + {item.title} + </Text> + </View> + { item.right ? ( + <View style={styles.rightContainer}> + {item.right ? item.right() : null} + </View> + ) : null } </Button> ); }); @@ -34,7 +41,8 @@ Item.propTypes = { title: PropTypes.string, icon: PropTypes.string, danger: PropTypes.bool, - onPress: PropTypes.func + onPress: PropTypes.func, + right: PropTypes.func }), hide: PropTypes.func, theme: PropTypes.string diff --git a/app/containers/ActionSheet/styles.js b/app/containers/ActionSheet/styles.js index 57fe0bc829b..1b9397dc99a 100644 --- a/app/containers/ActionSheet/styles.js +++ b/app/containers/ActionSheet/styles.js @@ -22,6 +22,9 @@ export default StyleSheet.create({ content: { paddingTop: 16 }, + titleContainer: { + flex: 1 + }, title: { fontSize: 16, marginLeft: 16, @@ -58,5 +61,8 @@ export default StyleSheet.create({ fontSize: 16, ...sharedStyles.textMedium, ...sharedStyles.textAlignCenter + }, + rightContainer: { + paddingLeft: 12 } }); diff --git a/app/containers/RoomTypeIcon.js b/app/containers/RoomTypeIcon.js index 55294310de3..7c0e32c1363 100644 --- a/app/containers/RoomTypeIcon.js +++ b/app/containers/RoomTypeIcon.js @@ -30,6 +30,7 @@ const RoomTypeIcon = React.memo(({ return <Status style={[iconStyle, { color: STATUS_COLORS[status] ?? STATUS_COLORS.offline }]} size={size} status={status} />; } + // TODO: move this to a separate function let icon = 'channel-private'; if (teamMain) { icon = `teams${ type === 'p' ? '-private' : '' }`; diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index bd4e1f8a2d5..8cc6cb27878 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -435,6 +435,7 @@ "Review_app_unable_store": "Unable to open {{store}}", "Review_this_app": "Review this app", "Remove": "Remove", + "remove": "remove", "Roles": "Roles", "Room_actions": "Room actions", "Room_changed_announcement": "Room announcement changed to: {{announcement}} by {{userBy}}", @@ -716,5 +717,14 @@ "Read_Only_Team": "Read Only Team", "Broadcast_Team": "Broadcast Team", "creating_team": "creating team", - "team-name-already-exists": "A team with that name already exists" -} \ No newline at end of file + "team-name-already-exists": "A team with that name already exists", + "Add_Channel_to_Team": "Add Channel to Team", + "Create_New": "Create New", + "Add_Existing": "Add Existing", + "Add_Existing_Channel": "Add Existing Channel", + "Remove_from_Team": "Remove from Team", + "Auto-join": "Auto-join", + "Delete_Team_Room_Warning": "Woud you like to remove this channel from the team? The channel will be moved back to the workspace", + "Confirmation": "Confirmation", + "invalid-room": "Invalid room" +} diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 09b91aa631a..1f4bcb9cb1c 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -13,6 +13,7 @@ const PERMISSIONS = [ 'add-user-to-any-c-room', 'add-user-to-any-p-room', 'add-user-to-joined-room', + 'add-team-channel', 'archive-room', 'auto-translate', 'create-invite-links', @@ -21,11 +22,13 @@ const PERMISSIONS = [ 'delete-p', 'edit-message', 'edit-room', + 'edit-team-channel', 'force-delete-message', 'mute-user', 'pin-message', 'post-readonly', 'remove-user', + 'remove-team-channel', 'set-leader', 'set-moderator', 'set-owner', @@ -38,7 +41,9 @@ const PERMISSIONS = [ 'view-privileged-setting', 'view-room-administration', 'view-statistics', - 'view-user-administration' + 'view-user-administration', + 'view-all-teams', + 'view-all-team-channels' ]; export async function setPermissions() { diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index adc7f80ffe0..57c6e0c7114 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -95,10 +95,19 @@ const RocketChat = { }, canOpenRoom, createChannel({ - name, users, type, readOnly, broadcast, encrypted + name, users, type, readOnly, broadcast, encrypted, teamId }) { - // RC 0.51.0 - return this.methodCallWrapper(type ? 'createPrivateGroup' : 'createChannel', name, users, readOnly, {}, { broadcast, encrypted }); + const params = { + name, + members: users, + readOnly, + extraData: { + broadcast, + encrypted, + ...(teamId && { teamId }) + } + }; + return this.post(type ? 'groups.create' : 'channels.create', params); }, async getWebsocketInfo({ server }) { const sdk = new RocketchatClient({ host: server, protocol: 'ddp', useSsl: useSsl(server) }); @@ -648,7 +657,8 @@ const RocketChat = { avatarETag: sub.avatarETag, t: sub.t, encrypted: sub.encrypted, - lastMessage: sub.lastMessage + lastMessage: sub.lastMessage, + ...(sub.teamId && { teamId: sub.teamId }) })); return data; @@ -751,6 +761,18 @@ const RocketChat = { // RC 3.13.0 return this.post('teams.create', params); }, + addRoomsToTeam({ teamId, rooms }) { + // RC 3.13.0 + return this.post('teams.addRooms', { teamId, rooms }); + }, + removeTeamRoom({ roomId, teamId }) { + // RC 3.13.0 + return this.post('teams.removeRoom', { roomId, teamId }); + }, + updateTeamRoom({ roomId, isDefault }) { + // RC 3.13.0 + return this.post('teams.updateRoom', { roomId, isDefault }); + }, joinRoom(roomId, joinCode, type) { // TODO: join code // RC 0.48.0 diff --git a/app/presentation/RoomItem/RoomItem.js b/app/presentation/RoomItem/RoomItem.js index b3922787b57..065e9133193 100644 --- a/app/presentation/RoomItem/RoomItem.js +++ b/app/presentation/RoomItem/RoomItem.js @@ -10,6 +10,8 @@ import LastMessage from './LastMessage'; import Title from './Title'; import UpdatedAt from './UpdatedAt'; import Touchable from './Touchable'; +import Tag from './Tag'; +import I18n from '../../i18n'; const RoomItem = ({ rid, @@ -42,13 +44,16 @@ const RoomItem = ({ testID, swipeEnabled, onPress, + onLongPress, toggleFav, toggleRead, hideChannel, - teamMain + teamMain, + autoJoin }) => ( <Touchable onPress={onPress} + onLongPress={onLongPress} width={width} favorite={favorite} toggleFav={toggleFav} @@ -88,6 +93,9 @@ const RoomItem = ({ hideUnreadStatus={hideUnreadStatus} alert={alert} /> + { + autoJoin ? <Tag name={I18n.t('Auto-join')} /> : null + } <UpdatedAt date={date} theme={theme} @@ -132,6 +140,9 @@ const RoomItem = ({ hideUnreadStatus={hideUnreadStatus} alert={alert} /> + { + autoJoin ? <Tag name={I18n.t('Auto-join')} /> : null + } <UnreadBadge unread={unread} userMentions={userMentions} @@ -181,7 +192,9 @@ RoomItem.propTypes = { toggleFav: PropTypes.func, toggleRead: PropTypes.func, onPress: PropTypes.func, - hideChannel: PropTypes.func + onLongPress: PropTypes.func, + hideChannel: PropTypes.func, + autoJoin: PropTypes.bool }; RoomItem.defaultProps = { diff --git a/app/presentation/RoomItem/Tag.js b/app/presentation/RoomItem/Tag.js new file mode 100644 index 00000000000..131541fe6d2 --- /dev/null +++ b/app/presentation/RoomItem/Tag.js @@ -0,0 +1,30 @@ +import React from 'react'; +import { Text, View } from 'react-native'; +import PropTypes from 'prop-types'; + +import { themes } from '../../constants/colors'; +import { useTheme } from '../../theme'; +import styles from './styles'; + +const Tag = React.memo(({ name }) => { + const { theme } = useTheme(); + + return ( + <View style={[styles.tagContainer, { backgroundColor: themes[theme].borderColor }]}> + <Text + style={[ + styles.tagText, { color: themes[theme].infoText } + ]} + numberOfLines={1} + > + {name} + </Text> + </View> + ); +}); + +Tag.propTypes = { + name: PropTypes.string +}; + +export default Tag; diff --git a/app/presentation/RoomItem/Touchable.js b/app/presentation/RoomItem/Touchable.js index defb5e105e1..bbf7cbf8605 100644 --- a/app/presentation/RoomItem/Touchable.js +++ b/app/presentation/RoomItem/Touchable.js @@ -1,7 +1,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Animated } from 'react-native'; -import { PanGestureHandler, State } from 'react-native-gesture-handler'; +import { + LongPressGestureHandler, PanGestureHandler, State +} from 'react-native-gesture-handler'; import Touch from '../../utils/touch'; import { @@ -17,6 +19,7 @@ class Touchable extends React.Component { static propTypes = { type: PropTypes.string.isRequired, onPress: PropTypes.func, + onLongPress: PropTypes.func, testID: PropTypes.string, width: PropTypes.number, favorite: PropTypes.bool, @@ -59,6 +62,12 @@ class Touchable extends React.Component { } } + onLongPressHandlerStateChange = ({ nativeEvent }) => { + if (nativeEvent.state === State.ACTIVE) { + this.onLongPress(); + } + } + _handleRelease = (nativeEvent) => { const { translationX } = nativeEvent; @@ -203,54 +212,70 @@ class Touchable extends React.Component { } }; + onLongPress = () => { + const { rowState } = this.state; + const { onLongPress } = this.props; + if (rowState !== 0) { + this.close(); + return; + } + + if (onLongPress) { + onLongPress(); + } + }; + render() { const { testID, isRead, width, favorite, children, theme, isFocused, swipeEnabled } = this.props; return ( - - <PanGestureHandler - minDeltaX={20} - onGestureEvent={this._onGestureEvent} - onHandlerStateChange={this._onHandlerStateChange} - enabled={swipeEnabled} - > + <LongPressGestureHandler onHandlerStateChange={this.onLongPressHandlerStateChange}> <Animated.View> - <LeftActions - transX={this.transXReverse} - isRead={isRead} - width={width} - onToggleReadPress={this.onToggleReadPress} - theme={theme} - /> - <RightActions - transX={this.transXReverse} - favorite={favorite} - width={width} - toggleFav={this.toggleFav} - onHidePress={this.onHidePress} - theme={theme} - /> - <Animated.View - style={{ - transform: [{ translateX: this.transX }] - }} + <PanGestureHandler + minDeltaX={20} + onGestureEvent={this._onGestureEvent} + onHandlerStateChange={this._onHandlerStateChange} + enabled={swipeEnabled} > - <Touch - onPress={this.onPress} - theme={theme} - testID={testID} - style={{ - backgroundColor: isFocused ? themes[theme].chatComponentBackground : themes[theme].backgroundColor - }} - > - {children} - </Touch> - </Animated.View> - </Animated.View> + <Animated.View> + <LeftActions + transX={this.transXReverse} + isRead={isRead} + width={width} + onToggleReadPress={this.onToggleReadPress} + theme={theme} + /> + <RightActions + transX={this.transXReverse} + favorite={favorite} + width={width} + toggleFav={this.toggleFav} + onHidePress={this.onHidePress} + theme={theme} + /> + <Animated.View + style={{ + transform: [{ translateX: this.transX }] + }} + > + <Touch + onPress={this.onPress} + theme={theme} + testID={testID} + style={{ + backgroundColor: isFocused ? themes[theme].chatComponentBackground : themes[theme].backgroundColor + }} + > + {children} + </Touch> + </Animated.View> + </Animated.View> - </PanGestureHandler> + </PanGestureHandler> + </Animated.View> + </LongPressGestureHandler> ); } } diff --git a/app/presentation/RoomItem/index.js b/app/presentation/RoomItem/index.js index 80bcf063b19..d56194f8bd5 100644 --- a/app/presentation/RoomItem/index.js +++ b/app/presentation/RoomItem/index.js @@ -16,7 +16,8 @@ const attrs = [ 'theme', 'isFocused', 'forceUpdate', - 'showLastMessage' + 'showLastMessage', + 'autoJoin' ]; class RoomItemContainer extends React.Component { @@ -25,6 +26,7 @@ class RoomItemContainer extends React.Component { showLastMessage: PropTypes.bool, id: PropTypes.string, onPress: PropTypes.func, + onLongPress: PropTypes.func, username: PropTypes.string, avatarSize: PropTypes.number, width: PropTypes.number, @@ -41,7 +43,8 @@ class RoomItemContainer extends React.Component { getRoomAvatar: PropTypes.func, getIsGroupChat: PropTypes.func, getIsRead: PropTypes.func, - swipeEnabled: PropTypes.bool + swipeEnabled: PropTypes.bool, + autoJoin: PropTypes.bool }; static defaultProps = { @@ -112,6 +115,11 @@ class RoomItemContainer extends React.Component { return onPress(item); } + onLongPress = () => { + const { item, onLongPress } = this.props; + return onLongPress(item); + } + render() { const { item, @@ -129,7 +137,8 @@ class RoomItemContainer extends React.Component { showLastMessage, username, useRealName, - swipeEnabled + swipeEnabled, + autoJoin } = this.props; const name = getRoomTitle(item); const testID = `rooms-list-view-item-${ name }`; @@ -160,6 +169,7 @@ class RoomItemContainer extends React.Component { isGroupChat={this.isGroupChat} isRead={isRead} onPress={this.onPress} + onLongPress={this.onLongPress} date={date} accessibilityLabel={accessibilityLabel} width={width} @@ -189,6 +199,7 @@ class RoomItemContainer extends React.Component { tunreadGroup={item.tunreadGroup} swipeEnabled={swipeEnabled} teamMain={item.teamMain} + autoJoin={autoJoin} /> ); } diff --git a/app/presentation/RoomItem/styles.js b/app/presentation/RoomItem/styles.js index 80bf0c90b3f..787546c76cd 100644 --- a/app/presentation/RoomItem/styles.js +++ b/app/presentation/RoomItem/styles.js @@ -96,5 +96,16 @@ export default StyleSheet.create({ height: '100%', alignItems: 'center', justifyContent: 'center' + }, + tagContainer: { + alignSelf: 'center', + alignItems: 'center', + borderRadius: 4, + marginHorizontal: 4 + }, + tagText: { + fontSize: 13, + paddingHorizontal: 4, + ...sharedStyles.textSemibold } }); diff --git a/app/sagas/createChannel.js b/app/sagas/createChannel.js index f2ecfe76d19..8979e230eb3 100644 --- a/app/sagas/createChannel.js +++ b/app/sagas/createChannel.js @@ -40,18 +40,26 @@ const handleRequest = function* handleRequest({ data }) { broadcast, encrypted } = data; - logEvent(events.CR_CREATE, { + logEvent(events.CT_CREATE, { type, readOnly, broadcast, encrypted }); - sub = yield call(createTeam, data); + const result = yield call(createTeam, data); + sub = { + rid: result?.team?.roomId, + ...result.team, + t: result.team.type ? 'p' : 'c' + }; } else if (data.group) { logEvent(events.SELECTED_USERS_CREATE_GROUP); const result = yield call(createGroupChat); if (result.success) { - ({ room: sub } = result); + sub = { + rid: result.room?._id, + ...result.room + }; } } else { const { @@ -66,33 +74,26 @@ const handleRequest = function* handleRequest({ data }) { broadcast, encrypted }); - sub = yield call(createChannel, data); + const result = yield call(createChannel, data); + sub = { + rid: result?.channel?._id || result?.group?._id, + ...result?.channel, + ...result?.group + }; } - try { const db = database.active; const subCollection = db.get('subscriptions'); yield db.action(async() => { await subCollection.create((s) => { - s._raw = sanitizedRaw({ id: sub.team ? sub.team.roomId : sub.rid }, subCollection.schema); + s._raw = sanitizedRaw({ id: sub.rid }, subCollection.schema); Object.assign(s, sub); }); }); } catch { // do nothing } - - let successParams = {}; - if (data.isTeam) { - successParams = { - ...sub.team, - rid: sub.team.roomId, - t: sub.team.type ? 'p' : 'c' - }; - } else { - successParams = data; - } - yield put(createChannelSuccess(successParams)); + yield put(createChannelSuccess(sub)); } catch (err) { logEvent(events[data.group ? 'SELECTED_USERS_CREATE_GROUP_F' : 'CR_CREATE_F']); yield put(createChannelFailure(err)); diff --git a/app/stacks/InsideStack.js b/app/stacks/InsideStack.js index bda56f0d233..75758960b15 100644 --- a/app/stacks/InsideStack.js +++ b/app/stacks/InsideStack.js @@ -71,6 +71,8 @@ import ShareView from '../views/ShareView'; import CreateDiscussionView from '../views/CreateDiscussionView'; import QueueListView from '../ee/omnichannel/views/QueueListView'; +import AddChannelTeamView from '../views/AddChannelTeamView'; +import AddExistingChannelView from '../views/AddExistingChannelView'; // ChatsStackNavigator const ChatsStack = createStackNavigator(); @@ -174,6 +176,16 @@ const ChatsStackNavigator = () => { component={TeamChannelsView} options={TeamChannelsView.navigationOptions} /> + <ChatsStack.Screen + name='AddChannelTeamView' + component={AddChannelTeamView} + options={AddChannelTeamView.navigationOptions} + /> + <ChatsStack.Screen + name='AddExistingChannelView' + component={AddExistingChannelView} + options={AddExistingChannelView.navigationOptions} + /> <ChatsStack.Screen name='MarkdownTableView' component={MarkdownTableView} diff --git a/app/stacks/MasterDetailStack/index.js b/app/stacks/MasterDetailStack/index.js index 7307ba6cae3..3ce0130a3d6 100644 --- a/app/stacks/MasterDetailStack/index.js +++ b/app/stacks/MasterDetailStack/index.js @@ -61,6 +61,8 @@ import { setKeyCommands, deleteKeyCommands } from '../../commands'; import ShareView from '../../views/ShareView'; import QueueListView from '../../ee/omnichannel/views/QueueListView'; +import AddChannelTeamView from '../../views/AddChannelTeamView'; +import AddExistingChannelView from '../../views/AddExistingChannelView'; // ChatsStackNavigator const ChatsStack = createStackNavigator(); @@ -141,6 +143,16 @@ const ModalStackNavigator = React.memo(({ navigation }) => { component={InviteUsersView} options={InviteUsersView.navigationOptions} /> + <ModalStack.Screen + name='AddChannelTeamView' + component={AddChannelTeamView} + options={AddChannelTeamView.navigationOptions} + /> + <ModalStack.Screen + name='AddExistingChannelView' + component={AddExistingChannelView} + options={AddExistingChannelView.navigationOptions} + /> <ModalStack.Screen name='InviteUsersEditView' component={InviteUsersEditView} diff --git a/app/utils/log/events.js b/app/utils/log/events.js index 490f0dfd3b4..a6d2eaa80b0 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -99,14 +99,22 @@ export default { SELECTED_USERS_CREATE_GROUP: 'selected_users_create_group', SELECTED_USERS_CREATE_GROUP_F: 'selected_users_create_group_f', + // ADD EXISTING CHANNEL VIEW + EXISTING_CHANNEL_ADD_CHANNEL: 'existing_channel_add_channel', + EXISTING_CHANNEL_REMOVE_CHANNEL: 'existing_channel_remove_channel', + // CREATE CHANNEL VIEW CR_CREATE: 'cr_create', + CT_CREATE: 'ct_create', CR_CREATE_F: 'cr_create_f', + CT_CREATE_F: 'ct_create_f', CR_TOGGLE_TYPE: 'cr_toggle_type', CR_TOGGLE_READ_ONLY: 'cr_toggle_read_only', CR_TOGGLE_BROADCAST: 'cr_toggle_broadcast', CR_TOGGLE_ENCRYPTED: 'cr_toggle_encrypted', CR_REMOVE_USER: 'cr_remove_user', + CT_ADD_ROOM_TO_TEAM: 'ct_add_room_to_team', + CT_ADD_ROOM_TO_TEAM_F: 'ct_add_room_to_team_f', // CREATE DISCUSSION VIEW CD_CREATE: 'cd_create', diff --git a/app/views/AddChannelTeamView.js b/app/views/AddChannelTeamView.js new file mode 100644 index 00000000000..229e0045723 --- /dev/null +++ b/app/views/AddChannelTeamView.js @@ -0,0 +1,72 @@ +import React, { useEffect } from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; + +import * as List from '../containers/List'; +import StatusBar from '../containers/StatusBar'; +import { useTheme } from '../theme'; +import * as HeaderButton from '../containers/HeaderButton'; +import SafeAreaView from '../containers/SafeAreaView'; +import I18n from '../i18n'; + +const setHeader = (navigation, isMasterDetail) => { + const options = { + headerTitle: I18n.t('Add_Channel_to_Team') + }; + + if (isMasterDetail) { + options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} />; + } + + navigation.setOptions(options); +}; + +const AddChannelTeamView = ({ + navigation, route, isMasterDetail +}) => { + const { teamId, teamChannels } = route.params; + const { theme } = useTheme(); + + useEffect(() => { + setHeader(navigation, isMasterDetail); + }, []); + + return ( + <SafeAreaView testID='add-channel-team-view'> + <StatusBar /> + <List.Container> + <List.Separator /> + <List.Item + title='Create_New' + onPress={() => navigation.navigate('NewMessageStackNavigator', { screen: 'SelectedUsersViewCreateChannel', params: { nextAction: () => navigation.navigate('CreateChannelView', { teamId }) } })} + testID='add-channel-team-view-create-channel' + left={() => <List.Icon name='team' />} + right={() => <List.Icon name='chevron-right' />} + theme={theme} + /> + <List.Separator /> + <List.Item + title='Add_Existing' + onPress={() => navigation.navigate('AddExistingChannelView', { teamId, teamChannels })} + testID='add-channel-team-view-create-channel' + left={() => <List.Icon name='channel-public' />} + right={() => <List.Icon name='chevron-right' />} + theme={theme} + /> + <List.Separator /> + </List.Container> + </SafeAreaView> + ); +}; + +AddChannelTeamView.propTypes = { + route: PropTypes.object, + navigation: PropTypes.object, + isMasterDetail: PropTypes.bool +}; + +const mapStateToProps = state => ({ + isMasterDetail: state.app.isMasterDetail +}); + +export default connect(mapStateToProps)(AddChannelTeamView); diff --git a/app/views/AddExistingChannelView.js b/app/views/AddExistingChannelView.js new file mode 100644 index 00000000000..a3acf9e239f --- /dev/null +++ b/app/views/AddExistingChannelView.js @@ -0,0 +1,209 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + View, FlatList +} from 'react-native'; +import { connect } from 'react-redux'; +import { Q } from '@nozbe/watermelondb'; + +import * as List from '../containers/List'; +import database from '../lib/database'; +import RocketChat from '../lib/rocketchat'; +import I18n from '../i18n'; +import log, { events, logEvent } from '../utils/log'; +import SearchBox from '../containers/SearchBox'; +import * as HeaderButton from '../containers/HeaderButton'; +import StatusBar from '../containers/StatusBar'; +import { themes } from '../constants/colors'; +import { withTheme } from '../theme'; +import SafeAreaView from '../containers/SafeAreaView'; +import { animateNextTransition } from '../utils/layoutAnimation'; +import { goRoom } from '../utils/goRoom'; +import Loading from '../containers/Loading'; + +const QUERY_SIZE = 50; + +class AddExistingChannelView extends React.Component { + static propTypes = { + navigation: PropTypes.object, + route: PropTypes.object, + theme: PropTypes.string, + isMasterDetail: PropTypes.bool, + addTeamChannelPermission: PropTypes.array + }; + + constructor(props) { + super(props); + this.init(); + this.teamId = props.route?.params?.teamId; + this.state = { + search: [], + channels: [], + selected: [], + loading: false + }; + this.setHeader(); + } + + setHeader = () => { + const { navigation, isMasterDetail } = this.props; + const { selected } = this.state; + + const options = { + headerTitle: I18n.t('Add_Existing_Channel') + }; + + if (isMasterDetail) { + options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} />; + } + + options.headerRight = () => selected.length > 0 && ( + <HeaderButton.Container> + <HeaderButton.Item title={I18n.t('Create')} onPress={this.submit} testID='add-existing-channel-view-submit' /> + </HeaderButton.Container> + ); + + navigation.setOptions(options); + } + + init = async() => { + try { + const { addTeamChannelPermission } = this.props; + const db = database.active; + const channels = await db.collections + .get('subscriptions') + .query( + Q.where('team_id', ''), + Q.where('t', Q.oneOf(['c', 'p'])), + Q.experimentalTake(QUERY_SIZE), + Q.experimentalSortBy('room_updated_at', Q.desc) + ) + .fetch(); + const filteredChannels = channels.filter(async(channel) => { + const permissions = await RocketChat.hasPermission([addTeamChannelPermission], channel.rid); + if (!permissions[0]) { + return; + } + return channel; + }); + this.setState({ channels: filteredChannels }); + } catch (e) { + log(e); + } + } + + onSearchChangeText(text) { + this.search(text); + } + + dismiss = () => { + const { navigation } = this.props; + return navigation.pop(); + } + + search = async(text) => { + const result = await RocketChat.search({ text, filterUsers: false }); + this.setState({ + search: result + }); + } + + submit = async() => { + const { selected } = this.state; + const { isMasterDetail } = this.props; + + this.setState({ loading: true }); + try { + logEvent(events.CT_ADD_ROOM_TO_TEAM); + const result = await RocketChat.addRoomsToTeam({ rooms: selected, teamId: this.teamId }); + if (result.success) { + this.setState({ loading: false }); + goRoom({ item: result, isMasterDetail }); + } + } catch (e) { + logEvent(events.CT_ADD_ROOM_TO_TEAM_F); + this.setState({ loading: false }); + } + } + + renderHeader = () => { + const { theme } = this.props; + return ( + <View style={{ backgroundColor: themes[theme].auxiliaryBackground }}> + <SearchBox onChangeText={text => this.onSearchChangeText(text)} testID='add-existing-channel-view-search' /> + </View> + ); + } + + isChecked = (rid) => { + const { selected } = this.state; + return selected.includes(rid); + } + + toggleChannel = (rid) => { + const { selected } = this.state; + + animateNextTransition(); + if (!this.isChecked(rid)) { + logEvent(events.EXISTING_CHANNEL_ADD_CHANNEL); + this.setState({ selected: [...selected, rid] }, () => this.setHeader()); + } else { + logEvent(events.EXISTING_CHANNEL_REMOVE_CHANNEL); + const filterSelected = selected.filter(el => el !== rid); + this.setState({ selected: filterSelected }, () => this.setHeader()); + } + } + + renderItem = ({ item }) => { + const isChecked = this.isChecked(item.rid); + // TODO: reuse logic inside RoomTypeIcon + const icon = item.t === 'p' && !item.teamId ? 'channel-private' : 'channel-public'; + return ( + <List.Item + title={RocketChat.getRoomTitle(item)} + translateTitle={false} + onPress={() => this.toggleChannel(item.rid)} + testID='add-existing-channel-view-item' + left={() => <List.Icon name={icon} />} + right={() => (isChecked ? <List.Icon name='check' /> : null)} + /> + + ); + } + + renderList = () => { + const { search, channels } = this.state; + const { theme } = this.props; + return ( + <FlatList + data={search.length > 0 ? search : channels} + extraData={this.state} + keyExtractor={item => item._id} + ListHeaderComponent={this.renderHeader} + renderItem={this.renderItem} + ItemSeparatorComponent={List.Separator} + contentContainerStyle={{ backgroundColor: themes[theme].backgroundColor }} + keyboardShouldPersistTaps='always' + /> + ); + } + + render() { + const { loading } = this.state; + + return ( + <SafeAreaView testID='add-existing-channel-view'> + <StatusBar /> + {this.renderList()} + <Loading visible={loading} /> + </SafeAreaView> + ); + } +} + +const mapStateToProps = state => ({ + isMasterDetail: state.app.isMasterDetail, + addTeamChannelPermission: state.permissions['add-team-channel'] +}); + +export default connect(mapStateToProps)(withTheme(AddExistingChannelView)); diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 8090ef4fea0..54f402c635e 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -83,13 +83,15 @@ class CreateChannelView extends React.Component { id: PropTypes.string, token: PropTypes.string }), - theme: PropTypes.string + theme: PropTypes.string, + teamId: PropTypes.string }; constructor(props) { super(props); const { route } = this.props; const isTeam = route?.params?.isTeam || false; + this.teamId = route?.params?.teamId; this.state = { channelName: '', type: true, @@ -180,7 +182,7 @@ class CreateChannelView extends React.Component { // create channel or team create({ - name: channelName, users, type, readOnly, broadcast, encrypted, isTeam + name: channelName, users, type, readOnly, broadcast, encrypted, isTeam, teamId: this.teamId }); Review.pushPositiveEvent(); diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index ae0628f19d7..cca5d584286 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -60,7 +60,7 @@ class NewMessageView extends React.Component { id: PropTypes.string, token: PropTypes.string }), - createChannel: PropTypes.func, + create: PropTypes.func, maxUsers: PropTypes.number, theme: PropTypes.string, isMasterDetail: PropTypes.bool @@ -124,9 +124,9 @@ class NewMessageView extends React.Component { createGroupChat = () => { logEvent(events.NEW_MSG_CREATE_GROUP_CHAT); - const { createChannel, maxUsers, navigation } = this.props; + const { create, maxUsers, navigation } = this.props; navigation.navigate('SelectedUsersViewCreateChannel', { - nextAction: () => createChannel({ group: true }), + nextAction: () => create({ group: true }), buttonText: I18n.t('Create'), maxUsers }); diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index 15724ab5cba..03398edc90a 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -1,11 +1,10 @@ import React from 'react'; -import { Keyboard } from 'react-native'; +import { Keyboard, Alert } from 'react-native'; import PropTypes from 'prop-types'; import { Q } from '@nozbe/watermelondb'; import { withSafeAreaInsets } from 'react-native-safe-area-context'; import { connect } from 'react-redux'; import { FlatList } from 'react-native-gesture-handler'; -import { HeaderBackButton } from '@react-navigation/stack'; import StatusBar from '../containers/StatusBar'; import RoomHeader from '../containers/RoomHeader'; @@ -23,11 +22,14 @@ import RoomItem, { ROW_HEIGHT } from '../presentation/RoomItem'; import RocketChat from '../lib/rocketchat'; import { withDimensions } from '../dimensions'; import { isIOS } from '../utils/deviceInfo'; -import { themes } from '../constants/colors'; import debounce from '../utils/debounce'; import { showErrorAlert } from '../utils/info'; import { goRoom } from '../utils/goRoom'; import I18n from '../i18n'; +import { withActionSheet } from '../containers/ActionSheet'; +import { deleteRoom as deleteRoomAction } from '../actions/room'; +import { CustomIcon } from '../lib/Icons'; +import { themes } from '../constants/colors'; const API_FETCH_COUNT = 25; @@ -47,7 +49,11 @@ class TeamChannelsView extends React.Component { theme: PropTypes.string, useRealName: PropTypes.bool, width: PropTypes.number, - StoreLastMessage: PropTypes.bool + StoreLastMessage: PropTypes.bool, + addTeamChannelPermission: PropTypes.array, + removeTeamChannelPermission: PropTypes.array, + showActionSheet: PropTypes.func, + deleteRoom: PropTypes.func } constructor(props) { @@ -60,9 +66,11 @@ class TeamChannelsView extends React.Component { isSearching: false, searchText: '', search: [], - end: false + end: false, + showCreate: false }; this.loadTeam(); + this.setHeader(); } componentDidMount() { @@ -70,6 +78,9 @@ class TeamChannelsView extends React.Component { } loadTeam = async() => { + const { addTeamChannelPermission } = this.props; + const { loading, data } = this.state; + const db = database.active; try { const subCollection = db.get('subscriptions'); @@ -82,6 +93,15 @@ class TeamChannelsView extends React.Component { if (!this.team) { throw new Error(); } + + const permissions = await RocketChat.hasPermission([addTeamChannelPermission], this.team.rid); + if (permissions[0]) { + this.setState({ showCreate: true }, () => this.setHeader()); + } + + if (loading && data.length) { + this.setState({ loading: false }); + } } catch { const { navigation } = this.props; navigation.pop(); @@ -115,14 +135,11 @@ class TeamChannelsView extends React.Component { loadingMore: false, end: result.rooms.length < API_FETCH_COUNT }; - const rooms = result.rooms.map((room) => { - const record = this.teamChannels?.find(c => c.rid === room._id); - return record ?? room; - }); + if (isSearching) { - newState.search = [...search, ...rooms]; + newState.search = [...search, ...result.rooms]; } else { - newState.data = [...data, ...rooms]; + newState.data = [...data, ...result.rooms]; } this.setState(newState); @@ -135,18 +152,16 @@ class TeamChannelsView extends React.Component { } }, 300) - getHeader = () => { - const { isSearching } = this.state; - const { - navigation, isMasterDetail, insets, theme - } = this.props; + setHeader = () => { + const { isSearching, showCreate, data } = this.state; + const { navigation, isMasterDetail, insets } = this.props; const { team } = this; if (!team) { return; } - const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight: 1 }); + const headerTitlePosition = getHeaderTitlePosition({ insets, numIconsRight: 2 }); if (isSearching) { return { @@ -188,27 +203,16 @@ class TeamChannelsView extends React.Component { if (isMasterDetail) { options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} />; - } else { - options.headerLeft = () => ( - <HeaderBackButton - labelVisible={false} - onPress={() => navigation.pop()} - tintColor={themes[theme].headerTintColor} - /> - ); } options.headerRight = () => ( <HeaderButton.Container> + { showCreate + ? <HeaderButton.Item iconName='create' onPress={() => navigation.navigate('AddChannelTeamView', { teamId: this.teamId, teamChannels: data })} /> + : null} <HeaderButton.Item iconName='search' onPress={this.onSearchPress} /> </HeaderButton.Container> ); - return options; - } - - setHeader = () => { - const { navigation } = this.props; - const options = this.getHeader(); navigation.setOptions(options); } @@ -287,6 +291,115 @@ class TeamChannelsView extends React.Component { } }, 1000, true); + options = (item) => { + const { theme } = this.props; + const isAutoJoinChecked = item.teamDefault; + const autoJoinIcon = isAutoJoinChecked ? 'checkbox-checked' : 'checkbox-unchecked'; + const autoJoinIconColor = isAutoJoinChecked ? themes[theme].tintActive : themes[theme].auxiliaryTintColor; + return ([ + { + title: I18n.t('Auto-join'), + icon: item.t === 'p' ? 'channel-private' : 'channel-public', + onPress: () => this.toggleAutoJoin(item), + right: () => <CustomIcon name={autoJoinIcon} size={20} color={autoJoinIconColor} /> + }, + { + title: I18n.t('Remove_from_Team'), + icon: 'close', + danger: true, + onPress: () => this.remove(item) + }, + { + title: I18n.t('Delete'), + icon: 'delete', + danger: true, + onPress: () => this.delete(item) + } + ]); + } + + toggleAutoJoin = async(item) => { + try { + const { data } = this.state; + const result = await RocketChat.updateTeamRoom({ roomId: item._id, isDefault: !item.teamDefault }); + if (result.success) { + const newData = data.map((i) => { + if (i._id === item._id) { + i.teamDefault = !i.teamDefault; + } + return i; + }); + this.setState({ data: newData }); + } + } catch (e) { + log(e); + } + } + + remove = (item) => { + Alert.alert( + I18n.t('Confirmation'), + I18n.t('Delete_Team_Room_Warning'), + [ + { + text: I18n.t('Cancel'), + style: 'cancel' + }, + { + text: I18n.t('Yes_action_it', { action: I18n.t('remove') }), + style: 'destructive', + onPress: () => this.removeRoom(item) + } + ], + { cancelable: false } + ); + } + + removeRoom = async(item) => { + try { + const { data } = this.state; + const result = await RocketChat.removeTeamRoom({ roomId: item._id, teamId: this.team.teamId }); + if (result.success) { + const newData = data.filter(room => result.room._id !== room._id); + this.setState({ data: newData }); + } + } catch (e) { + log(e); + } + } + + delete = (item) => { + const { deleteRoom } = this.props; + + Alert.alert( + I18n.t('Are_you_sure_question_mark'), + I18n.t('Delete_Room_Warning'), + [ + { + text: I18n.t('Cancel'), + style: 'cancel' + }, + { + text: I18n.t('Yes_action_it', { action: I18n.t('delete') }), + style: 'destructive', + onPress: () => deleteRoom(item._id, item.t) + } + ], + { cancelable: false } + ); + } + + showChannelActions = async(item) => { + logEvent(events.ROOM_SHOW_BOX_ACTIONS); + const { showActionSheet, removeTeamChannelPermission } = this.props; + + const permissions = await RocketChat.hasPermission([removeTeamChannelPermission], this.team.rid); + if (!permissions[0]) { + return; + } + showActionSheet({ options: this.options(item) }); + } + renderItem = ({ item }) => { const { StoreLastMessage, @@ -302,10 +415,12 @@ class TeamChannelsView extends React.Component { showLastMessage={StoreLastMessage} onPress={this.onPressItem} width={width} + onLongPress={this.showChannelActions} useRealName={useRealName} getRoomTitle={this.getRoomTitle} getRoomAvatar={this.getRoomAvatar} swipeEnabled={false} + autoJoin={item.teamDefault} /> ); }; @@ -365,7 +480,13 @@ const mapStateToProps = state => ({ user: getUserSelector(state), useRealName: state.settings.UI_Use_Real_Name, isMasterDetail: state.app.isMasterDetail, - StoreLastMessage: state.settings.Store_Last_Message + StoreLastMessage: state.settings.Store_Last_Message, + addTeamChannelPermission: state.permissions['add-team-channel'], + removeTeamChannelPermission: state.permissions['remove-team-channel'] +}); + +const mapDispatchToProps = dispatch => ({ + deleteRoom: (rid, t) => dispatch(deleteRoomAction(rid, t)) }); -export default connect(mapStateToProps)(withDimensions(withSafeAreaInsets(withTheme(TeamChannelsView)))); +export default connect(mapStateToProps, mapDispatchToProps)(withDimensions(withSafeAreaInsets(withTheme(withActionSheet(TeamChannelsView))))); diff --git a/storybook/stories/RoomItem.js b/storybook/stories/RoomItem.js index d39e92082f6..025fbf7f534 100644 --- a/storybook/stories/RoomItem.js +++ b/storybook/stories/RoomItem.js @@ -3,7 +3,6 @@ import React from 'react'; import { ScrollView, Dimensions } from 'react-native'; import { storiesOf } from '@storybook/react-native'; import { Provider } from 'react-redux'; -// import moment from 'moment'; import { themes } from '../../app/constants/colors'; import RoomItemComponent from '../../app/presentation/RoomItem/RoomItem'; @@ -94,6 +93,15 @@ stories.add('Alerts', () => ( </> )); +stories.add('Tag', () => ( + <> + <RoomItem autoJoin /> + <RoomItem showLastMessage autoJoin /> + <RoomItem name={longText} autoJoin /> + <RoomItem name={longText} autoJoin showLastMessage /> + </> +)); + stories.add('Last Message', () => ( <> <RoomItem From 8373571a07c7492c4e996abe2ba0613b3742cfc6 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Thu, 20 May 2021 09:50:42 -0400 Subject: [PATCH 119/177] [FIX] E2E Tests not working because of ES6 import (#3147) * Update ITeam.js * Minor tweak --- e2e/helpers/data_setup.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/e2e/helpers/data_setup.js b/e2e/helpers/data_setup.js index ce1d5083e5a..7e744f54a0a 100644 --- a/e2e/helpers/data_setup.js +++ b/e2e/helpers/data_setup.js @@ -1,6 +1,10 @@ const axios = require('axios').default; const data = require('../data'); -const { TEAM_TYPE } = require('../../app/definition/ITeam'); + +const TEAM_TYPE = { + PUBLIC: 0, + PRIVATE: 1 +}; let server = data.server From 62336c6d3ac5e3f756e21d8a67052da5c2be74a4 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Tue, 25 May 2021 14:04:05 -0400 Subject: [PATCH 120/177] [NEW] Leave Teams (#3116) * Added Create Team * Added actionTypes, actions, ENG strings for Teams and updated NewMessageView * Added createTeam sagas, createTeam reducer, new Team string and update CreateChannelView * Remove unnecessary actionTypes, reducers and sagas, e2e tests and navigation to team view * Minor tweaks * Show TeamChannelsView only if joined the team * Minor tweak * Added AddChannelTeamView * Added permissions, translations strings for teams, deleteTeamRoom and addTeamRooms, AddExistingChannelView, updated CreateChannelView, TeamChannelsView * Refactor touch component and update removeRoom and deleteRoom methods * Minor tweaks * Minor tweaks for removing channels and addExistingChannelView * Added missing events and fixed channels list * Minor tweaks for refactored touch component * Added SelectListView and logic for leaving team * Minor tweak * Minor tweak * Minor tweaks * Remove unnecesary changes, update TeamChannelsView, AddExistingChannelView, AddChannelTeamView, createChannel, goRoom and Touchable * Remove unnecesary prop * Add screens to ModalStack, events, autoJoin, update createChannel, addRoomsToTeam and Touchable * Minor tweak * Update loadMessagesForRoom.js * Updated schema, tag component, touch, AddChannelTeamView, AddExistingChannelView, ActionSheet Item * Fix unnecessary changes * Add i18n, update createChannel, AddExistingChannelTeamView, AddChannelTeamView, RightButton and TeamChannelsView * Updated styles, added tag story * Minor tweak * Minor tweaks * Auto-join tweak * Minor tweaks * Minor tweak on search * Minor refactor to ListItem, add SelectListView to ModalStack, update handleLeaveTeam * Minor tweaks * Update SelectListView * Update handleLeaveTeam, remove unnecessary method, add story * Minor tweak * Minor visual tweaks * Updated SelectListView, RoomActionsView, leaveTeam method and string translations * Update SelectListVIew * Minor tweak * Update SelectListView * Minor tweak * Fix for List.Item subtitles being pushed down by title's flex * Minor tweaks * Update RoomActionsView * Use showConfirmationAlert and showErrorAlert * Lint Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 2478 ++++++++++++----- app/containers/List/ListIcon.js | 3 +- app/containers/List/ListItem.js | 23 +- app/containers/List/constants.js | 1 + app/i18n/locales/en.json | 11 +- app/lib/rocketchat.js | 4 + app/stacks/InsideStack.js | 6 + app/stacks/MasterDetailStack/index.js | 6 + app/views/RoomActionsView/index.js | 83 +- app/views/SelectListView.js | 146 + storybook/stories/List.js | 14 + 11 files changed, 2003 insertions(+), 772 deletions(-) create mode 100644 app/views/SelectListView.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 68b171855cb..36433392c2d 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -3993,6 +3993,536 @@ Array [ ] `; +exports[`Storyshots List alert 1`] = ` +<RCTScrollView + contentContainerStyle={ + Object { + "paddingVertical": 16, + } + } + keyboardDismissMode="interactive" + keyboardShouldPersistTaps="always" + scrollIndicatorInsets={ + Object { + "right": 1, + } + } + theme="light" +> + <View> + <View + style={ + Array [ + Object { + "height": 0.5, + }, + undefined, + Object { + "backgroundColor": "#cbcbcc", + }, + ] + } + /> + <View + style={ + Object { + "backgroundColor": "#ffffff", + } + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + "paddingHorizontal": 12, + }, + undefined, + Object { + "height": 92, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 20, + }, + Array [ + Object { + "paddingLeft": 4, + }, + Object { + "color": "#f5455c", + }, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "height": 0.5, + }, + undefined, + Object { + "backgroundColor": "#cbcbcc", + }, + ] + } + /> + <View + style={ + Object { + "backgroundColor": "#ffffff", + } + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + "paddingHorizontal": 12, + }, + undefined, + Object { + "height": 92, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 20, + }, + Array [ + Object { + "paddingLeft": 4, + }, + Object { + "color": "#f5455c", + }, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "height": 0.5, + }, + undefined, + Object { + "backgroundColor": "#cbcbcc", + }, + ] + } + /> + <View + style={ + Object { + "backgroundColor": "#ffffff", + } + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + "paddingHorizontal": 12, + }, + undefined, + Object { + "height": 92, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 20, + }, + Array [ + Object { + "paddingLeft": 4, + }, + Object { + "color": "#f5455c", + }, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + <View + style={ + Object { + "paddingLeft": 12, + } + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "justifyContent": "center", + }, + undefined, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "height": 0.5, + }, + undefined, + Object { + "backgroundColor": "#cbcbcc", + }, + ] + } + /> + <View + style={ + Object { + "backgroundColor": "#ffffff", + } + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + "paddingHorizontal": 12, + }, + undefined, + Object { + "height": 92, + }, + ] + } + > + <View + style={ + Object { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": undefined, + "fontSize": 20, + }, + Array [ + Object { + "paddingLeft": 4, + }, + Object { + "color": "#f5455c", + }, + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + <View + style={ + Object { + "paddingLeft": 12, + } + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "justifyContent": "center", + }, + undefined, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#9ca2a8", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "height": 0.5, + }, + undefined, + Object { + "backgroundColor": "#cbcbcc", + }, + ] + } + /> + </View> +</RCTScrollView> +`; + exports[`Storyshots List header 1`] = ` <RCTScrollView contentContainerStyle={ @@ -4178,25 +4708,35 @@ exports[`Storyshots List pressable 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Press me - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Press me + </Text> + </View> </View> </View> <View @@ -4239,25 +4779,35 @@ exports[`Storyshots List pressable 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - I'm disabled - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + I'm disabled + </Text> + </View> </View> </View> <View @@ -4373,25 +4923,35 @@ exports[`Storyshots List title and subtitle 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> </View> </View> </View> @@ -4440,25 +5000,35 @@ exports[`Storyshots List title and subtitle 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -4527,25 +5097,35 @@ exports[`Storyshots List title and subtitle 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> <Text numberOfLines={1} style={ @@ -4724,25 +5304,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 0 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 0 + </Text> + </View> </View> </View> </View> @@ -4796,25 +5386,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 1 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 1 + </Text> + </View> </View> </View> </View> @@ -4868,25 +5468,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 2 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 2 + </Text> + </View> </View> </View> </View> @@ -4940,25 +5550,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 3 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 3 + </Text> + </View> </View> </View> </View> @@ -5012,25 +5632,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 4 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 4 + </Text> + </View> </View> </View> </View> @@ -5084,25 +5714,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 5 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 5 + </Text> + </View> </View> </View> </View> @@ -5156,25 +5796,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 6 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 6 + </Text> + </View> </View> </View> </View> @@ -5228,25 +5878,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 7 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 7 + </Text> + </View> </View> </View> </View> @@ -5300,25 +5960,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 8 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 8 + </Text> + </View> </View> </View> </View> @@ -5372,25 +6042,35 @@ exports[`Storyshots List with FlatList 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - 9 - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + 9 + </Text> + </View> </View> </View> </View> @@ -5586,25 +6266,35 @@ exports[`Storyshots List with bigger font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -5746,25 +6436,35 @@ exports[`Storyshots List with bigger font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -5980,25 +6680,35 @@ exports[`Storyshots List with bigger font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -6140,25 +6850,35 @@ exports[`Storyshots List with bigger font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -6415,25 +7135,35 @@ exports[`Storyshots List with black theme 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -6553,47 +7283,57 @@ exports[`Storyshots List with black theme 1`] = ` "color": "#b2b8c6", "fontSize": 20, }, - undefined, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + </View> + </View> + <View + style={ + Object { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, Object { - "fontFamily": "custom", - "fontStyle": "normal", - "fontWeight": "normal", + "color": "#f9f9f9", }, - Object {}, ] } > -  + Chats </Text> </View> - </View> - <View - style={ - Object { - "flex": 1, - "justifyContent": "center", - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] - } - > - Chats - </Text> <Text numberOfLines={1} style={ @@ -6809,25 +7549,35 @@ exports[`Storyshots List with black theme 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -6969,25 +7719,35 @@ exports[`Storyshots List with black theme 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -7157,25 +7917,35 @@ exports[`Storyshots List with custom colors 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "red", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "red", + }, + ] + } + > + Chats + </Text> + </View> </View> </View> </View> @@ -7217,25 +7987,35 @@ exports[`Storyshots List with custom colors 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "white", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Press me! - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "white", + }, + ] + } + > + Press me! + </Text> + </View> </View> </View> <View @@ -7404,25 +8184,35 @@ exports[`Storyshots List with dark theme 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -7564,25 +8354,35 @@ exports[`Storyshots List with dark theme 1`] = ` } } > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -7798,25 +8598,35 @@ exports[`Storyshots List with dark theme 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -7958,25 +8768,35 @@ exports[`Storyshots List with dark theme 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#f9f9f9", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -8186,25 +9006,35 @@ exports[`Storyshots List with icon 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Icon Left - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Icon Left + </Text> + </View> </View> </View> </View> @@ -8253,25 +9083,35 @@ exports[`Storyshots List with icon 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Icon Right - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Icon Right + </Text> + </View> </View> <View style={ @@ -8400,25 +9240,35 @@ exports[`Storyshots List with icon 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </View> <Text numberOfLines={1} style={ @@ -8517,34 +9367,44 @@ exports[`Storyshots List with icon 1`] = ` }, ] } - > - <View - style={ - Object { - "flex": 1, - "justifyContent": "center", - } - } - > - <Text - numberOfLines={1} - style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + > + <View + style={ + Object { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Show Action Indicator - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Show Action Indicator + </Text> + </View> </View> <View style={ @@ -8693,25 +9553,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -8760,25 +9630,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -8848,25 +9728,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -8915,25 +9805,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -9031,25 +9931,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -9098,25 +10008,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -9241,25 +10161,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -9308,25 +10238,35 @@ exports[`Storyshots List with section and info 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Section Item - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Section Item + </Text> + </View> </View> </View> </View> @@ -9525,25 +10465,35 @@ exports[`Storyshots List with small font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -9685,25 +10635,35 @@ exports[`Storyshots List with small font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -9919,25 +10879,35 @@ exports[`Storyshots List with small font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ @@ -10079,25 +11049,35 @@ exports[`Storyshots List with small font 1`] = ` } } > - <Text - numberOfLines={1} + <View style={ - Array [ - Object { - "backgroundColor": "transparent", - "fontFamily": "System", - "fontSize": 16, - "fontWeight": "400", - "textAlign": "left", - }, - Object { - "color": "#0d0e12", - }, - ] + Object { + "alignItems": "center", + "flexDirection": "row", + } } > - Chats - </Text> + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flexShrink": 1, + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Chats + </Text> + </View> <Text numberOfLines={1} style={ diff --git a/app/containers/List/ListIcon.js b/app/containers/List/ListIcon.js index 2414c669ac3..5ab6c3bc9af 100644 --- a/app/containers/List/ListIcon.js +++ b/app/containers/List/ListIcon.js @@ -5,6 +5,7 @@ import PropTypes from 'prop-types'; import { themes } from '../../constants/colors'; import { CustomIcon } from '../../lib/Icons'; import { withTheme } from '../../theme'; +import { ICON_SIZE } from './constants'; const styles = StyleSheet.create({ icon: { @@ -23,7 +24,7 @@ const ListIcon = React.memo(({ <CustomIcon name={name} color={color ?? themes[theme].auxiliaryText} - size={20} + size={ICON_SIZE} /> </View> )); diff --git a/app/containers/List/ListItem.js b/app/containers/List/ListItem.js index 6ce7bb6fcb7..aa3ecbdf016 100644 --- a/app/containers/List/ListItem.js +++ b/app/containers/List/ListItem.js @@ -10,8 +10,9 @@ import sharedStyles from '../../views/Styles'; import { withTheme } from '../../theme'; import I18n from '../../i18n'; import { Icon } from '.'; -import { BASE_HEIGHT, PADDING_HORIZONTAL } from './constants'; +import { BASE_HEIGHT, ICON_SIZE, PADDING_HORIZONTAL } from './constants'; import { withDimensions } from '../../dimensions'; +import { CustomIcon } from '../../lib/Icons'; const styles = StyleSheet.create({ container: { @@ -34,7 +35,15 @@ const styles = StyleSheet.create({ flex: 1, justifyContent: 'center' }, + textAlertContainer: { + flexDirection: 'row', + alignItems: 'center' + }, + alertIcon: { + paddingLeft: 4 + }, title: { + flexShrink: 1, fontSize: 16, ...sharedStyles.textRegular }, @@ -50,7 +59,7 @@ const styles = StyleSheet.create({ }); const Content = React.memo(({ - title, subtitle, disabled, testID, left, right, color, theme, translateTitle, translateSubtitle, showActionIndicator, fontScale + title, subtitle, disabled, testID, left, right, color, theme, translateTitle, translateSubtitle, showActionIndicator, fontScale, alert }) => ( <View style={[styles.container, disabled && styles.disabled, { height: BASE_HEIGHT * fontScale }]} testID={testID}> {left @@ -61,7 +70,12 @@ const Content = React.memo(({ ) : null} <View style={styles.textContainer}> - <Text style={[styles.title, { color: color || themes[theme].titleText }]} numberOfLines={1}>{translateTitle ? I18n.t(title) : title}</Text> + <View style={styles.textAlertContainer}> + <Text style={[styles.title, { color: color || themes[theme].titleText }]} numberOfLines={1}>{translateTitle ? I18n.t(title) : title}</Text> + {alert ? ( + <CustomIcon style={[styles.alertIcon, { color: themes[theme].dangerColor }]} size={ICON_SIZE} name='info' /> + ) : null} + </View> {subtitle ? <Text style={[styles.subtitle, { color: themes[theme].auxiliaryText }]} numberOfLines={1}>{translateSubtitle ? I18n.t(subtitle) : subtitle}</Text> : null @@ -123,7 +137,8 @@ Content.propTypes = { translateTitle: PropTypes.bool, translateSubtitle: PropTypes.bool, showActionIndicator: PropTypes.bool, - fontScale: PropTypes.number + fontScale: PropTypes.number, + alert: PropTypes.bool }; Content.defaultProps = { diff --git a/app/containers/List/constants.js b/app/containers/List/constants.js index b69a04f95c3..8144096d397 100644 --- a/app/containers/List/constants.js +++ b/app/containers/List/constants.js @@ -1,2 +1,3 @@ export const PADDING_HORIZONTAL = 12; export const BASE_HEIGHT = 46; +export const ICON_SIZE = 20; diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 8cc6cb27878..2e839195646 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -290,6 +290,7 @@ "last_message": "last message", "Leave_channel": "Leave channel", "leaving_room": "leaving room", + "Leave": "Leave", "leave": "leave", "Legal": "Legal", "Light": "Light", @@ -726,5 +727,13 @@ "Auto-join": "Auto-join", "Delete_Team_Room_Warning": "Woud you like to remove this channel from the team? The channel will be moved back to the workspace", "Confirmation": "Confirmation", - "invalid-room": "Invalid room" + "invalid-room": "Invalid room", + "You_are_leaving_the_team": "You are leaving the team '{{team}}'", + "Leave_Team": "Leave Team", + "Select_Team_Channels": "Select the Team's channels you would like to leave.", + "Cannot_leave": "Cannot leave", + "Last_owner_team_room": "You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.", + "last-owner-can-not-be-removed": "Last owner cannot be removed", + "leaving_team": "leaving team", + "member-does-not-exist": "Member does not exist" } diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 57c6e0c7114..3891d88cb56 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -769,6 +769,10 @@ const RocketChat = { // RC 3.13.0 return this.post('teams.removeRoom', { roomId, teamId }); }, + leaveTeam({ teamName, rooms }) { + // RC 3.13.0 + return this.post('teams.leave', { teamName, rooms }); + }, updateTeamRoom({ roomId, isDefault }) { // RC 3.13.0 return this.post('teams.updateRoom', { roomId, isDefault }); diff --git a/app/stacks/InsideStack.js b/app/stacks/InsideStack.js index 75758960b15..18517368c7b 100644 --- a/app/stacks/InsideStack.js +++ b/app/stacks/InsideStack.js @@ -73,6 +73,7 @@ import CreateDiscussionView from '../views/CreateDiscussionView'; import QueueListView from '../ee/omnichannel/views/QueueListView'; import AddChannelTeamView from '../views/AddChannelTeamView'; import AddExistingChannelView from '../views/AddExistingChannelView'; +import SelectListView from '../views/SelectListView'; // ChatsStackNavigator const ChatsStack = createStackNavigator(); @@ -93,6 +94,11 @@ const ChatsStackNavigator = () => { component={RoomActionsView} options={RoomActionsView.navigationOptions} /> + <ChatsStack.Screen + name='SelectListView' + component={SelectListView} + options={SelectListView.navigationOptions} + /> <ChatsStack.Screen name='RoomInfoView' component={RoomInfoView} diff --git a/app/stacks/MasterDetailStack/index.js b/app/stacks/MasterDetailStack/index.js index 3ce0130a3d6..ea7c038f28a 100644 --- a/app/stacks/MasterDetailStack/index.js +++ b/app/stacks/MasterDetailStack/index.js @@ -63,6 +63,7 @@ import ShareView from '../../views/ShareView'; import QueueListView from '../../ee/omnichannel/views/QueueListView'; import AddChannelTeamView from '../../views/AddChannelTeamView'; import AddExistingChannelView from '../../views/AddExistingChannelView'; +import SelectListView from '../../views/SelectListView'; // ChatsStackNavigator const ChatsStack = createStackNavigator(); @@ -119,6 +120,11 @@ const ModalStackNavigator = React.memo(({ navigation }) => { component={RoomInfoView} options={RoomInfoView.navigationOptions} /> + <ModalStack.Screen + name='SelectListView' + component={SelectListView} + options={SelectListView.navigationOptions} + /> <ModalStack.Screen name='RoomInfoEditView' component={RoomInfoEditView} diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index ea833d7588f..72ec2548ba3 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -1,10 +1,11 @@ import React from 'react'; import PropTypes from 'prop-types'; import { - View, Text, Alert, Share, Switch + View, Text, Share, Switch } from 'react-native'; import { connect } from 'react-redux'; import isEmpty from 'lodash/isEmpty'; +import { Q } from '@nozbe/watermelondb'; import { compareServerVersion, methods } from '../../lib/utils'; import Touch from '../../utils/touch'; @@ -53,6 +54,7 @@ class RoomActionsView extends React.Component { theme: PropTypes.string, fontScale: PropTypes.number, serverVersion: PropTypes.string, + isMasterDetail: PropTypes.bool, addUserToJoinedRoomPermission: PropTypes.array, addUserToAnyCRoomPermission: PropTypes.array, addUserToAnyPRoomPermission: PropTypes.array, @@ -395,21 +397,67 @@ class RoomActionsView extends React.Component { const { room } = this.state; const { leaveRoom } = this.props; - Alert.alert( - I18n.t('Are_you_sure_question_mark'), - I18n.t('Are_you_sure_you_want_to_leave_the_room', { room: RocketChat.getRoomTitle(room) }), - [ - { - text: I18n.t('Cancel'), - style: 'cancel' - }, - { - text: I18n.t('Yes_action_it', { action: I18n.t('leave') }), - style: 'destructive', - onPress: () => leaveRoom(room.rid, room.t) + showConfirmationAlert({ + message: I18n.t('Are_you_sure_you_want_to_leave_the_room', { room: RocketChat.getRoomTitle(room) }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('leave') }), + onPress: () => leaveRoom(room.rid, room.t) + }); + } + + handleLeaveTeam = async(selected) => { + try { + const { room } = this.state; + const { navigation, isMasterDetail } = this.props; + const result = await RocketChat.leaveTeam({ teamName: room.name, ...(selected && { rooms: selected }) }); + + if (result.success) { + if (isMasterDetail) { + navigation.navigate('DrawerNavigator'); + } else { + navigation.navigate('RoomsListView'); } - ] - ); + } + } catch (e) { + log(e); + showErrorAlert( + e.data.error + ? I18n.t(e.data.error) + : I18n.t('There_was_an_error_while_action', { action: I18n.t('leaving_team') }), + I18n.t('Cannot_leave') + ); + } + } + + leaveTeam = async() => { + const { room } = this.state; + const { navigation } = this.props; + + try { + const db = database.active; + const subCollection = db.get('subscriptions'); + const teamChannels = await subCollection.query( + Q.where('team_id', room.teamId), + Q.where('team_main', null) + ); + + if (teamChannels.length) { + navigation.navigate('SelectListView', { + title: 'Leave_Team', + data: teamChannels, + infoText: 'Select_Team_Channels', + nextAction: data => this.handleLeaveTeam(data), + showAlert: () => showErrorAlert(I18n.t('Last_owner_team_room'), I18n.t('Cannot_leave')) + }); + } else { + showConfirmationAlert({ + message: I18n.t('You_are_leaving_the_team', { team: RocketChat.getRoomTitle(room) }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('leave') }), + onPress: () => this.handleLeaveTeam() + }); + } + } catch (e) { + log(e); + } } renderRoomInfo = () => { @@ -568,9 +616,9 @@ class RoomActionsView extends React.Component { <List.Section> <List.Separator /> <List.Item - title='Leave_channel' + title='Leave' onPress={() => this.onPressTouchable({ - event: this.leaveChannel + event: room.teamMain ? this.leaveTeam : this.leaveChannel })} testID='room-actions-leave-channel' left={() => <List.Icon name='logout' color={themes[theme].dangerColor} />} @@ -880,6 +928,7 @@ const mapStateToProps = state => ({ jitsiEnabled: state.settings.Jitsi_Enabled || false, encryptionEnabled: state.encryption.enabled, serverVersion: state.server.version, + isMasterDetail: state.app.isMasterDetail, addUserToJoinedRoomPermission: state.permissions['add-user-to-joined-room'], addUserToAnyCRoomPermission: state.permissions['add-user-to-any-c-room'], addUserToAnyPRoomPermission: state.permissions['add-user-to-any-p-room'], diff --git a/app/views/SelectListView.js b/app/views/SelectListView.js new file mode 100644 index 00000000000..9c886da8042 --- /dev/null +++ b/app/views/SelectListView.js @@ -0,0 +1,146 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + View, StyleSheet, FlatList, Text +} from 'react-native'; +import { connect } from 'react-redux'; + +import * as List from '../containers/List'; +import sharedStyles from './Styles'; +import I18n from '../i18n'; +import * as HeaderButton from '../containers/HeaderButton'; +import StatusBar from '../containers/StatusBar'; +import { themes } from '../constants/colors'; +import { withTheme } from '../theme'; +import SafeAreaView from '../containers/SafeAreaView'; +import { animateNextTransition } from '../utils/layoutAnimation'; +import Loading from '../containers/Loading'; + +const styles = StyleSheet.create({ + buttonText: { + fontSize: 16, + margin: 16, + ...sharedStyles.textRegular + } +}); + +class SelectListView extends React.Component { + static propTypes = { + navigation: PropTypes.object, + route: PropTypes.object, + theme: PropTypes.string, + isMasterDetail: PropTypes.bool + }; + + constructor(props) { + super(props); + const data = props.route?.params?.data; + this.title = props.route?.params?.title; + this.infoText = props.route?.params?.infoText; + this.nextAction = props.route?.params?.nextAction; + this.showAlert = props.route?.params?.showAlert; + this.state = { + data, + selected: [], + loading: false + }; + this.setHeader(); + } + + setHeader = () => { + const { navigation, isMasterDetail } = this.props; + const { selected } = this.state; + + const options = { + headerTitle: I18n.t(this.title) + }; + + if (isMasterDetail) { + options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} />; + } + + options.headerRight = () => ( + <HeaderButton.Container> + <HeaderButton.Item title={I18n.t('Next')} onPress={() => this.nextAction(selected)} testID='select-list-view-submit' /> + </HeaderButton.Container> + ); + + navigation.setOptions(options); + } + + renderInfoText = () => { + const { theme } = this.props; + return ( + <View style={{ backgroundColor: themes[theme].backgroundColor }}> + <Text style={[styles.buttonText, { color: themes[theme].bodyText }]}>{I18n.t(this.infoText)}</Text> + </View> + ); + } + + isChecked = (rid) => { + const { selected } = this.state; + return selected.includes(rid); + } + + toggleItem = (rid) => { + const { selected } = this.state; + + animateNextTransition(); + if (!this.isChecked(rid)) { + this.setState({ selected: [...selected, rid] }, () => this.setHeader()); + } else { + const filterSelected = selected.filter(el => el !== rid); + this.setState({ selected: filterSelected }, () => this.setHeader()); + } + } + + renderItem = ({ item }) => { + const { theme } = this.props; + const alert = item.roles.length; + + const icon = item.t === 'p' ? 'channel-private' : 'channel-public'; + const checked = this.isChecked(item.rid, item.roles) ? 'check' : null; + + return ( + <> + <List.Separator /> + <List.Item + title={item.name} + translateTitle={false} + testID={`select-list-view-item-${ item.name }`} + onPress={() => (alert ? this.showAlert() : this.toggleItem(item.rid))} + alert={alert} + left={() => <List.Icon name={icon} color={themes[theme].controlText} />} + right={() => (checked ? <List.Icon name={checked} color={themes[theme].actionTintColor} /> : null)} + /> + </> + ); + } + + render() { + const { loading, data } = this.state; + const { theme } = this.props; + + return ( + <SafeAreaView testID='select-list-view'> + <StatusBar /> + <FlatList + data={data} + extraData={this.state} + keyExtractor={item => item.rid} + renderItem={this.renderItem} + ListHeaderComponent={this.renderInfoText} + contentContainerStyle={{ backgroundColor: themes[theme].backgroundColor }} + keyboardShouldPersistTaps='always' + /> + <Loading visible={loading} /> + </SafeAreaView> + ); + } +} + +const mapStateToProps = state => ({ + isMasterDetail: state.app.isMasterDetail +}); + +export default connect(mapStateToProps)(withTheme(SelectListView)); diff --git a/storybook/stories/List.js b/storybook/stories/List.js index 632018054b4..b445a1972aa 100644 --- a/storybook/stories/List.js +++ b/storybook/stories/List.js @@ -23,6 +23,20 @@ stories.add('title and subtitle', () => ( </List.Container> )); +stories.add('alert', () => ( + <List.Container> + <List.Separator /> + <List.Item title='Chats' alert /> + <List.Separator /> + <List.Item title={longText} translateTitle={false} translateSubtitle={false} alert /> + <List.Separator /> + <List.Item title='Chats' right={() => <List.Icon name='emoji' />} alert /> + <List.Separator /> + <List.Item title={longText} translateTitle={false} translateSubtitle={false} right={() => <List.Icon name='emoji' />} alert /> + <List.Separator /> + </List.Container> +)); + stories.add('pressable', () => ( <List.Container> <List.Separator /> From 3ef4ef531726c05dfef0b86563f8cbaf5f869eca Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 26 May 2021 14:24:54 -0300 Subject: [PATCH 121/177] [NEW] Jump to message (#3099) * Scrolling * Add loadMore button at the end of loadMessagesForRoom * Delete dummy item on tap * Only insert loadMore dummy if there's more data * load surrounding messages * fixes and load next * First dummy and dummy-next * Save load next messages * Check if message exists before fetching surroundings * Refactoring List * Jumping to message :) * Showing blocking loader while scrolling/fetching message * Check if message exists on local db before inserting dummy * Delete dummies automatically when the message sent to updateMessages again * Minor cleanup * Fix scroll * Highlight message * Jump to bottom * Load more on scroll * Adding stories to LoadMore * Refactoring * Add loading indicator to LoadMore * Small refactor * Add LoadMore to threads * getMoreMessages * chat.getThreadMessages -> getThreadMessages * Start jumping to threads * Add jumpToMessageId on RoomView * Nav to correct channel * Fix PK issue on thread_messages * Disable jump to thread from another room * Fix nav to thread params * Add navToRoom * Refactor styles * Test notch * Fix Android border * Fix thread message on title * Fix NavBottomFAB on threads * Minor cleanup * Workaround for readThreads being called too often * Lint * Update tests * Jump from search * Go to threads from search * Remove getItemLayout and rely on viewable items * Fix load older * stash working * Fix infinite loading * Lower itemVisiblePercentThreshhold to 10, so very long messages behave as viewable * Add generateLoadMoreId util * Minor cleanup * Jump to message from notification/deep linking * Add getMessageInfo * Nav to threads from other rooms * getThreadName * Unnecessary logic * getRoomInfo * Colocate getMessageInfo closer to RoomView * Minor cleanup * Remove search from RoomActionsView * Minor fix for search on not joined public channels * Jump to any link * Fix tablets * Jump to message from MessagesView and other bug fixes * Fix issue on Urls * Adds race condition to cancel jump to message if it's stuck or after 5 seconds * Jump from message search quote * lint * Stop onPress * Small refactor on load methods * Minor fixes for loadThreadMessages * Minor typo * LoadMore i18n * Minor cleanup --- .../__snapshots__/Storyshots.test.js.snap | 3791 +++++++++++++++++ app/constants/messageTypeLoad.js | 5 + app/containers/markdown/Link.js | 8 +- app/containers/markdown/index.js | 6 +- app/containers/message/Content.js | 3 +- app/containers/message/Message.js | 6 +- app/containers/message/RepliedThread.js | 40 +- app/containers/message/Reply.js | 5 +- app/containers/message/Urls.js | 2 +- app/containers/message/index.js | 82 +- app/i18n/locales/en.json | 5 +- app/lib/database/model/Message.js | 4 +- app/lib/database/model/Subscription.js | 4 +- app/lib/database/model/Thread.js | 4 +- app/lib/database/model/ThreadMessage.js | 4 +- app/lib/database/services/Message.js | 15 + app/lib/database/services/Subscription.js | 15 + app/lib/database/services/Thread.js | 15 + app/lib/database/services/ThreadMessage.js | 15 + app/lib/methods/getRoomInfo.js | 29 + app/lib/methods/getSingleMessage.js | 15 + app/lib/methods/getThreadName.js | 49 + app/lib/methods/loadMessagesForRoom.js | 26 +- app/lib/methods/loadNextMessages.js | 42 + app/lib/methods/loadSurroundingMessages.js | 65 + app/lib/methods/loadThreadMessages.js | 18 +- app/lib/methods/updateMessages.js | 26 +- app/lib/rocketchat.js | 7 +- app/lib/utils.js | 2 + app/notifications/push/index.js | 3 +- app/sagas/deepLinking.js | 7 +- app/utils/goRoom.js | 1 - app/views/MessagesView/index.js | 37 +- app/views/RoomActionsView/index.js | 20 +- app/views/RoomView/List/List.js | 42 + app/views/RoomView/List/NavBottomFAB.js | 75 + app/views/RoomView/{List.js => List/index.js} | 224 +- .../RoomView/LoadMore/LoadMore.stories.js | 62 + app/views/RoomView/LoadMore/index.js | 76 + app/views/RoomView/RightButtons.js | 4 +- app/views/RoomView/index.js | 320 +- app/views/RoomView/services/getMessageInfo.js | 41 + app/views/RoomView/services/getMessages.js | 10 + .../RoomView/services/getMoreMessages.js | 19 + .../RoomView/services/getThreadMessages.js | 6 + app/views/RoomView/services/index.js | 13 + app/views/RoomView/services/readMessages.js | 5 + app/views/RoomView/styles.js | 6 - app/views/SearchMessagesView/index.js | 41 +- storybook/stories/Message.js | 12 +- storybook/stories/index.js | 1 + 51 files changed, 4970 insertions(+), 363 deletions(-) create mode 100644 app/constants/messageTypeLoad.js create mode 100644 app/lib/database/services/Message.js create mode 100644 app/lib/database/services/Subscription.js create mode 100644 app/lib/database/services/Thread.js create mode 100644 app/lib/database/services/ThreadMessage.js create mode 100644 app/lib/methods/getRoomInfo.js create mode 100644 app/lib/methods/getSingleMessage.js create mode 100644 app/lib/methods/getThreadName.js create mode 100644 app/lib/methods/loadNextMessages.js create mode 100644 app/lib/methods/loadSurroundingMessages.js create mode 100644 app/views/RoomView/List/List.js create mode 100644 app/views/RoomView/List/NavBottomFAB.js rename app/views/RoomView/{List.js => List/index.js} (59%) create mode 100644 app/views/RoomView/LoadMore/LoadMore.stories.js create mode 100644 app/views/RoomView/LoadMore/index.js create mode 100644 app/views/RoomView/services/getMessageInfo.js create mode 100644 app/views/RoomView/services/getMessages.js create mode 100644 app/views/RoomView/services/getMoreMessages.js create mode 100644 app/views/RoomView/services/getThreadMessages.js create mode 100644 app/views/RoomView/services/index.js create mode 100644 app/views/RoomView/services/readMessages.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 36433392c2d..eec5b535ac0 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -11185,6 +11185,3689 @@ exports[`Storyshots List with small font 1`] = ` </RNCSafeAreaView> `; +exports[`Storyshots LoadMore basic 1`] = ` +Array [ + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load More + </Text>, + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load More + </Text>, + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load Older + </Text>, + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load Newer + </Text>, +] +`; + +exports[`Storyshots LoadMore black theme 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#000000", + } + } +> + <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Load Older + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#b2b8c6", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Hey!" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Hey! + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Older message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Older message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Load Newer + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Load More + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#b2b8c6", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="This is the third message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the third message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="This is the second message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the second message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#b2b8c6", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="This is the first message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the first message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots LoadMore dark theme 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#030b1b", + } + } +> + <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Load Older + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9297a2", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Hey!" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Hey! + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Older message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Older message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Load Newer + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + Load More + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9297a2", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="This is the third message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the third message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="This is the second message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the second message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#f9f9f9", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9297a2", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#e8ebed", + }, + ] + } + > + <Text + accessibilityLabel="This is the first message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the first message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + +exports[`Storyshots LoadMore light theme 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load Older + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Hey!" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Hey! + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Older message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Older message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load Newer + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + Load More + </Text> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is the third message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the third message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + false, + ] + } + > + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is the second message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the second message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": null, + "opacity": 1, + } + } + > + <View> + <View + style={ + Array [ + Object { + "flexDirection": "column", + "paddingHorizontal": 14, + "paddingVertical": 4, + "width": "100%", + }, + undefined, + ] + } + > + <View + style={ + Object { + "flexDirection": "row", + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + Object { + "marginTop": 4, + }, + ] + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "opacity": 1, + } + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 36, + "width": 36, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/diego.mello?format=png&size=36", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + </View> + <View + style={ + Array [ + Object { + "flex": 1, + "marginLeft": 46, + }, + Object { + "marginLeft": 10, + }, + ] + } + > + <View + style={ + Object { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + accessible={true} + focusable={true} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "flexShrink": 1, + "opacity": 1, + } + } + > + <Text + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "500", + "lineHeight": 22, + "textAlign": "left", + }, + Object { + "color": "#0d0e12", + }, + ] + } + > + diego.mello + </Text> + </View> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 12, + "fontWeight": "400", + "marginLeft": 8, + "textAlign": "left", + }, + Object { + "color": "#9ca2a8", + }, + ] + } + > + 10:00 AM + </Text> + </View> + <View> + <Text + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + undefined, + Object { + "color": "#2f343d", + }, + ] + } + > + <Text + accessibilityLabel="This is the first message" + numberOfLines={0} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 16, + "fontWeight": "400", + "textAlign": "left", + }, + Array [ + Object {}, + Object { + "alignItems": "flex-start", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "flex-start", + "marginBottom": 0, + "marginTop": 0, + }, + ], + ] + } + > + This is the first message + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + exports[`Storyshots Markdown Block quote 1`] = ` <View style={ @@ -14775,6 +18458,7 @@ exports[`Storyshots Message Archived 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -15028,6 +18712,7 @@ exports[`Storyshots Message Basic 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -15268,6 +18953,7 @@ exports[`Storyshots Message Basic 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -15521,6 +19207,7 @@ exports[`Storyshots Message Block Quote 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -15793,6 +19480,7 @@ exports[`Storyshots Message Block Quote 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -16125,6 +19813,7 @@ exports[`Storyshots Message Broadcast 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -16461,6 +20150,7 @@ exports[`Storyshots Message Colored attachments 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -17269,6 +20959,7 @@ exports[`Storyshots Message Custom fields 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -18028,6 +21719,7 @@ exports[`Storyshots Message Custom style 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -18286,6 +21978,7 @@ exports[`Storyshots Message Date and Unread separators 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -18590,6 +22283,7 @@ exports[`Storyshots Message Date and Unread separators 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -18876,6 +22570,7 @@ exports[`Storyshots Message Date and Unread separators 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -18978,6 +22673,7 @@ exports[`Storyshots Message Date and Unread separators 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -19264,6 +22960,7 @@ exports[`Storyshots Message Date and Unread separators 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -19517,6 +23214,7 @@ exports[`Storyshots Message Discussion 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -19845,6 +23543,7 @@ exports[`Storyshots Message Discussion 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -20175,6 +23874,7 @@ exports[`Storyshots Message Discussion 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -20505,6 +24205,7 @@ exports[`Storyshots Message Discussion 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -20848,6 +24549,7 @@ exports[`Storyshots Message Edited 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -21101,6 +24803,7 @@ exports[`Storyshots Message Editing 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -21354,6 +25057,7 @@ exports[`Storyshots Message Emojis 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -21600,6 +25304,7 @@ exports[`Storyshots Message Emojis 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -21846,6 +25551,7 @@ exports[`Storyshots Message Emojis 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -22231,6 +25937,7 @@ exports[`Storyshots Message Emojis 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -22478,6 +26185,7 @@ exports[`Storyshots Message Emojis 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -22759,6 +26467,7 @@ exports[`Storyshots Message Emojis 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -23075,6 +26784,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -23377,6 +27087,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -23541,6 +27252,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -24184,6 +27896,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -24424,6 +28137,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -24732,6 +28446,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -25366,6 +29081,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -25690,6 +29406,7 @@ exports[`Storyshots Message Encrypted 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -26374,6 +30091,7 @@ exports[`Storyshots Message Full name 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -26627,6 +30345,7 @@ exports[`Storyshots Message Grouped messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -26867,6 +30586,7 @@ exports[`Storyshots Message Grouped messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -27107,6 +30827,7 @@ exports[`Storyshots Message Grouped messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -27209,6 +30930,7 @@ exports[`Storyshots Message Grouped messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -27311,6 +31033,7 @@ exports[`Storyshots Message Grouped messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -27564,6 +31287,7 @@ exports[`Storyshots Message Ignored 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -27719,6 +31443,7 @@ exports[`Storyshots Message Lists 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -28183,6 +31908,7 @@ exports[`Storyshots Message Lists 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -28554,6 +32280,7 @@ exports[`Storyshots Message Lists 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -28836,6 +32563,7 @@ exports[`Storyshots Message Lists 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -28993,6 +32721,7 @@ exports[`Storyshots Message Mentions 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -29410,6 +33139,7 @@ exports[`Storyshots Message Mentions 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -29868,6 +33598,7 @@ exports[`Storyshots Message Message with read receipt 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -30108,6 +33839,7 @@ exports[`Storyshots Message Message with read receipt 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -30210,6 +33942,7 @@ exports[`Storyshots Message Message with read receipt 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -30472,6 +34205,7 @@ exports[`Storyshots Message Message with read receipt 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -30609,6 +34343,7 @@ exports[`Storyshots Message Message with reply 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -30960,6 +34695,7 @@ exports[`Storyshots Message Message with reply 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -31359,6 +35095,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -31832,6 +35569,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -32072,6 +35810,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -32312,6 +36051,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -32552,6 +36292,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -32792,6 +36533,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -33032,6 +36774,7 @@ exports[`Storyshots Message Message with thread 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -33283,6 +37026,7 @@ exports[`Storyshots Message Reactions 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -33944,6 +37688,7 @@ exports[`Storyshots Message Reactions 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -34982,6 +38727,7 @@ exports[`Storyshots Message Sequential thread messages following thread button 1 onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -35455,6 +39201,7 @@ exports[`Storyshots Message Sequential thread messages following thread button 1 onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -35598,6 +39345,7 @@ exports[`Storyshots Message Sequential thread messages following thread button 1 onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -35741,6 +39489,7 @@ exports[`Storyshots Message Sequential thread messages following thread button 1 onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -35895,6 +39644,7 @@ exports[`Storyshots Message Sequential thread messages following thread reply 1` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -36135,6 +39885,7 @@ exports[`Storyshots Message Sequential thread messages following thread reply 1` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -36278,6 +40029,7 @@ exports[`Storyshots Message Sequential thread messages following thread reply 1` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -36421,6 +40173,7 @@ exports[`Storyshots Message Sequential thread messages following thread reply 1` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -36575,6 +40328,7 @@ exports[`Storyshots Message Static avatar 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -36828,6 +40582,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -36992,6 +40747,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -37156,6 +40912,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -37320,6 +41077,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -37484,6 +41242,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -37625,6 +41384,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -37766,6 +41526,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -37907,6 +41668,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38048,6 +41810,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38189,6 +41952,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38330,6 +42094,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38471,6 +42236,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38612,6 +42378,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38753,6 +42520,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -38894,6 +42662,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -39035,6 +42804,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -39176,6 +42946,7 @@ exports[`Storyshots Message System messages 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -39330,6 +43101,7 @@ exports[`Storyshots Message Temp 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -39589,6 +43361,7 @@ exports[`Storyshots Message Time format 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -39842,6 +43615,7 @@ exports[`Storyshots Message Two short custom fields with markdown 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -40670,6 +44444,7 @@ exports[`Storyshots Message URL 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -41043,6 +44818,7 @@ exports[`Storyshots Message URL 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -41392,6 +45168,7 @@ exports[`Storyshots Message URL 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -41533,6 +45310,7 @@ exports[`Storyshots Message With alias 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -41792,6 +45570,7 @@ exports[`Storyshots Message With alias 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -42064,6 +45843,7 @@ exports[`Storyshots Message With audio 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -42463,6 +46243,7 @@ exports[`Storyshots Message With audio 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -42565,6 +46346,7 @@ exports[`Storyshots Message With audio 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -42791,6 +46573,7 @@ exports[`Storyshots Message With audio 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -42972,6 +46755,7 @@ exports[`Storyshots Message With audio 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -43166,6 +46950,7 @@ exports[`Storyshots Message With file 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -43521,6 +47306,7 @@ exports[`Storyshots Message With file 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -43751,6 +47537,7 @@ exports[`Storyshots Message With image 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -44068,6 +47855,7 @@ exports[`Storyshots Message With image 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -44433,6 +48221,7 @@ exports[`Storyshots Message With video 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -44749,6 +48538,7 @@ exports[`Storyshots Message With video 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } @@ -44998,6 +48788,7 @@ exports[`Storyshots Message Without header 1`] = ` onStartShouldSetResponder={[Function]} style={ Object { + "backgroundColor": null, "opacity": 1, } } diff --git a/app/constants/messageTypeLoad.js b/app/constants/messageTypeLoad.js new file mode 100644 index 00000000000..4bdaa54de86 --- /dev/null +++ b/app/constants/messageTypeLoad.js @@ -0,0 +1,5 @@ +export const MESSAGE_TYPE_LOAD_MORE = 'load_more'; +export const MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK = 'load_previous_chunk'; +export const MESSAGE_TYPE_LOAD_NEXT_CHUNK = 'load_next_chunk'; + +export const MESSAGE_TYPE_ANY_LOAD = [MESSAGE_TYPE_LOAD_MORE, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK, MESSAGE_TYPE_LOAD_NEXT_CHUNK]; diff --git a/app/containers/markdown/Link.js b/app/containers/markdown/Link.js index 1c157711065..054b3d4d9e2 100644 --- a/app/containers/markdown/Link.js +++ b/app/containers/markdown/Link.js @@ -4,19 +4,18 @@ import { Text, Clipboard } from 'react-native'; import styles from './styles'; import { themes } from '../../constants/colors'; -import openLink from '../../utils/openLink'; import { LISTENER } from '../Toast'; import EventEmitter from '../../utils/events'; import I18n from '../../i18n'; const Link = React.memo(({ - children, link, theme + children, link, theme, onLinkPress }) => { const handlePress = () => { if (!link) { return; } - openLink(link, theme); + onLinkPress(link); }; const childLength = React.Children.toArray(children).filter(o => o).length; @@ -40,7 +39,8 @@ const Link = React.memo(({ Link.propTypes = { children: PropTypes.node, link: PropTypes.string, - theme: PropTypes.string + theme: PropTypes.string, + onLinkPress: PropTypes.func }; export default Link; diff --git a/app/containers/markdown/index.js b/app/containers/markdown/index.js index dfbae1841da..bc2fdba7364 100644 --- a/app/containers/markdown/index.js +++ b/app/containers/markdown/index.js @@ -82,7 +82,8 @@ class Markdown extends PureComponent { preview: PropTypes.bool, theme: PropTypes.string, testID: PropTypes.string, - style: PropTypes.array + style: PropTypes.array, + onLinkPress: PropTypes.func }; constructor(props) { @@ -218,11 +219,12 @@ class Markdown extends PureComponent { }; renderLink = ({ children, href }) => { - const { theme } = this.props; + const { theme, onLinkPress } = this.props; return ( <MarkdownLink link={href} theme={theme} + onLinkPress={onLinkPress} > {children} </MarkdownLink> diff --git a/app/containers/message/Content.js b/app/containers/message/Content.js index 2f29bf4acd1..90af48acdfe 100644 --- a/app/containers/message/Content.js +++ b/app/containers/message/Content.js @@ -45,7 +45,7 @@ const Content = React.memo((props) => { } else if (props.isEncrypted) { content = <Text style={[styles.textInfo, { color: themes[props.theme].auxiliaryText }]}>{I18n.t('Encrypted_message')}</Text>; } else { - const { baseUrl, user } = useContext(MessageContext); + const { baseUrl, user, onLinkPress } = useContext(MessageContext); content = ( <Markdown msg={props.msg} @@ -61,6 +61,7 @@ const Content = React.memo((props) => { tmid={props.tmid} useRealName={props.useRealName} theme={props.theme} + onLinkPress={onLinkPress} /> ); } diff --git a/app/containers/message/Message.js b/app/containers/message/Message.js index 1042447405b..4bc03c000e3 100644 --- a/app/containers/message/Message.js +++ b/app/containers/message/Message.js @@ -19,6 +19,7 @@ import Discussion from './Discussion'; import Content from './Content'; import ReadReceipt from './ReadReceipt'; import CallButton from './CallButton'; +import { themes } from '../../constants/colors'; const MessageInner = React.memo((props) => { if (props.type === 'discussion-created') { @@ -120,6 +121,7 @@ const MessageTouchable = React.memo((props) => { onLongPress={onLongPress} onPress={onPress} disabled={(props.isInfo && !props.isThreadReply) || props.archived || props.isTemp} + style={{ backgroundColor: props.highlighted ? themes[props.theme].headerBackground : null }} > <View> <Message {...props} /> @@ -134,7 +136,9 @@ MessageTouchable.propTypes = { isInfo: PropTypes.bool, isThreadReply: PropTypes.bool, isTemp: PropTypes.bool, - archived: PropTypes.bool + archived: PropTypes.bool, + highlighted: PropTypes.bool, + theme: PropTypes.string }; Message.propTypes = { diff --git a/app/containers/message/RepliedThread.js b/app/containers/message/RepliedThread.js index 733315485b7..46be5b1f634 100644 --- a/app/containers/message/RepliedThread.js +++ b/app/containers/message/RepliedThread.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { memo, useEffect, useState } from 'react'; import { View } from 'react-native'; import PropTypes from 'prop-types'; @@ -8,22 +8,27 @@ import { themes } from '../../constants/colors'; import I18n from '../../i18n'; import Markdown from '../markdown'; -const RepliedThread = React.memo(({ +const RepliedThread = memo(({ tmid, tmsg, isHeader, fetchThreadName, id, isEncrypted, theme }) => { if (!tmid || !isHeader) { return null; } - if (!tmsg) { - fetchThreadName(tmid, id); - return null; - } + const [msg, setMsg] = useState(isEncrypted ? I18n.t('Encrypted_message') : tmsg); + const fetch = async() => { + const threadName = await fetchThreadName(tmid, id); + setMsg(threadName); + }; - let msg = tmsg; + useEffect(() => { + if (!msg) { + fetch(); + } + }, []); - if (isEncrypted) { - msg = I18n.t('Encrypted_message'); + if (!msg) { + return null; } return ( @@ -45,23 +50,6 @@ const RepliedThread = React.memo(({ </View> </View> ); -}, (prevProps, nextProps) => { - if (prevProps.tmid !== nextProps.tmid) { - return false; - } - if (prevProps.tmsg !== nextProps.tmsg) { - return false; - } - if (prevProps.isEncrypted !== nextProps.isEncrypted) { - return false; - } - if (prevProps.isHeader !== nextProps.isHeader) { - return false; - } - if (prevProps.theme !== nextProps.theme) { - return false; - } - return true; }); RepliedThread.propTypes = { diff --git a/app/containers/message/Reply.js b/app/containers/message/Reply.js index 4acecbc42b4..5dcf0447fc9 100644 --- a/app/containers/message/Reply.js +++ b/app/containers/message/Reply.js @@ -142,10 +142,13 @@ const Reply = React.memo(({ if (!attachment) { return null; } - const { baseUrl, user } = useContext(MessageContext); + const { baseUrl, user, jumpToMessage } = useContext(MessageContext); const onPress = () => { let url = attachment.title_link || attachment.author_link; + if (attachment.message_link) { + return jumpToMessage(attachment.message_link); + } if (!url) { return; } diff --git a/app/containers/message/Urls.js b/app/containers/message/Urls.js index 742b2f4781c..b82d029afce 100644 --- a/app/containers/message/Urls.js +++ b/app/containers/message/Urls.js @@ -80,7 +80,7 @@ const UrlContent = React.memo(({ title, description, theme }) => ( }); const Url = React.memo(({ url, index, theme }) => { - if (!url) { + if (!url || url?.ignoreParse) { return null; } diff --git a/app/containers/message/index.js b/app/containers/message/index.js index b4339ff0e38..467c634a669 100644 --- a/app/containers/message/index.js +++ b/app/containers/message/index.js @@ -9,6 +9,7 @@ import { SYSTEM_MESSAGES, getMessageTranslation } from './utils'; import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/encryption/constants'; import messagesStatus from '../../constants/messagesStatus'; import { withTheme } from '../../theme'; +import openLink from '../../utils/openLink'; class MessageContainer extends React.Component { static propTypes = { @@ -33,6 +34,7 @@ class MessageContainer extends React.Component { autoTranslateLanguage: PropTypes.string, status: PropTypes.number, isIgnored: PropTypes.bool, + highlighted: PropTypes.bool, getCustomEmoji: PropTypes.func, onLongPress: PropTypes.func, onReactionPress: PropTypes.func, @@ -50,7 +52,9 @@ class MessageContainer extends React.Component { blockAction: PropTypes.func, theme: PropTypes.string, threadBadgeColor: PropTypes.string, - toggleFollowThread: PropTypes.func + toggleFollowThread: PropTypes.func, + jumpToMessage: PropTypes.func, + onPress: PropTypes.func } static defaultProps = { @@ -89,10 +93,15 @@ class MessageContainer extends React.Component { shouldComponentUpdate(nextProps, nextState) { const { isManualUnignored } = this.state; - const { theme, threadBadgeColor, isIgnored } = this.props; + const { + theme, threadBadgeColor, isIgnored, highlighted + } = this.props; if (nextProps.theme !== theme) { return true; } + if (nextProps.highlighted !== highlighted) { + return true; + } if (nextProps.threadBadgeColor !== threadBadgeColor) { return true; } @@ -112,10 +121,15 @@ class MessageContainer extends React.Component { } onPress = debounce(() => { + const { onPress } = this.props; if (this.isIgnored) { return this.onIgnoredMessagePress(); } + if (onPress) { + return onPress(); + } + const { item, isThreadRoom } = this.props; Keyboard.dismiss(); @@ -265,12 +279,69 @@ class MessageContainer extends React.Component { } } + onLinkPress = (link) => { + const { item, theme, jumpToMessage } = this.props; + const isMessageLink = item?.attachments?.findIndex(att => att?.message_link === link) !== -1; + if (isMessageLink) { + return jumpToMessage(link); + } + openLink(link, theme); + } + render() { const { - item, user, style, archived, baseUrl, useRealName, broadcast, fetchThreadName, showAttachment, timeFormat, isReadReceiptEnabled, autoTranslateRoom, autoTranslateLanguage, navToRoomInfo, getCustomEmoji, isThreadRoom, callJitsi, blockAction, rid, theme, threadBadgeColor, toggleFollowThread + item, + user, + style, + archived, + baseUrl, + useRealName, + broadcast, + fetchThreadName, + showAttachment, + timeFormat, + isReadReceiptEnabled, + autoTranslateRoom, + autoTranslateLanguage, + navToRoomInfo, + getCustomEmoji, + isThreadRoom, + callJitsi, + blockAction, + rid, + theme, + threadBadgeColor, + toggleFollowThread, + jumpToMessage, + highlighted } = this.props; const { - id, msg, ts, attachments, urls, reactions, t, avatar, emoji, u, alias, editedBy, role, drid, dcount, dlm, tmid, tcount, tlm, tmsg, mentions, channels, unread, blocks, autoTranslate: autoTranslateMessage, replies + id, + msg, + ts, + attachments, + urls, + reactions, + t, + avatar, + emoji, + u, + alias, + editedBy, + role, + drid, + dcount, + dlm, + tmid, + tcount, + tlm, + tmsg, + mentions, + channels, + unread, + blocks, + autoTranslate: autoTranslateMessage, + replies } = item; let message = msg; @@ -294,6 +365,8 @@ class MessageContainer extends React.Component { onEncryptedPress: this.onEncryptedPress, onDiscussionPress: this.onDiscussionPress, onReactionLongPress: this.onReactionLongPress, + onLinkPress: this.onLinkPress, + jumpToMessage, threadBadgeColor, toggleFollowThread, replies @@ -347,6 +420,7 @@ class MessageContainer extends React.Component { callJitsi={callJitsi} blockAction={blockAction} theme={theme} + highlighted={highlighted} /> </MessageContext.Provider> ); diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 2e839195646..1648d3bf2ac 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -735,5 +735,8 @@ "Last_owner_team_room": "You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.", "last-owner-can-not-be-removed": "Last owner cannot be removed", "leaving_team": "leaving team", - "member-does-not-exist": "Member does not exist" + "member-does-not-exist": "Member does not exist", + "Load_More": "Load More", + "Load_Newer": "Load Newer", + "Load_Older": "Load Older" } diff --git a/app/lib/database/model/Message.js b/app/lib/database/model/Message.js index bf776fc73da..52cf63f0ce5 100644 --- a/app/lib/database/model/Message.js +++ b/app/lib/database/model/Message.js @@ -5,8 +5,10 @@ import { import { sanitizer } from '../utils'; +export const TABLE_NAME = 'messages'; + export default class Message extends Model { - static table = 'messages'; + static table = TABLE_NAME; static associations = { subscriptions: { type: 'belongs_to', key: 'rid' } diff --git a/app/lib/database/model/Subscription.js b/app/lib/database/model/Subscription.js index 5b1ebd14110..275dae2175e 100644 --- a/app/lib/database/model/Subscription.js +++ b/app/lib/database/model/Subscription.js @@ -4,8 +4,10 @@ import { } from '@nozbe/watermelondb/decorators'; import { sanitizer } from '../utils'; +export const TABLE_NAME = 'subscriptions'; + export default class Subscription extends Model { - static table = 'subscriptions'; + static table = TABLE_NAME; static associations = { messages: { type: 'has_many', foreignKey: 'rid' }, diff --git a/app/lib/database/model/Thread.js b/app/lib/database/model/Thread.js index e0179fc350c..04e65839240 100644 --- a/app/lib/database/model/Thread.js +++ b/app/lib/database/model/Thread.js @@ -5,8 +5,10 @@ import { import { sanitizer } from '../utils'; +export const TABLE_NAME = 'threads'; + export default class Thread extends Model { - static table = 'threads'; + static table = TABLE_NAME; static associations = { subscriptions: { type: 'belongs_to', key: 'rid' } diff --git a/app/lib/database/model/ThreadMessage.js b/app/lib/database/model/ThreadMessage.js index b3b4216b528..687e09f96ce 100644 --- a/app/lib/database/model/ThreadMessage.js +++ b/app/lib/database/model/ThreadMessage.js @@ -5,8 +5,10 @@ import { import { sanitizer } from '../utils'; +export const TABLE_NAME = 'thread_messages'; + export default class ThreadMessage extends Model { - static table = 'thread_messages'; + static table = TABLE_NAME; static associations = { subscriptions: { type: 'belongs_to', key: 'subscription_id' } diff --git a/app/lib/database/services/Message.js b/app/lib/database/services/Message.js new file mode 100644 index 00000000000..5999446bade --- /dev/null +++ b/app/lib/database/services/Message.js @@ -0,0 +1,15 @@ +import database from '..'; +import { TABLE_NAME } from '../model/Message'; + +const getCollection = db => db.get(TABLE_NAME); + +export const getMessageById = async(messageId) => { + const db = database.active; + const messageCollection = getCollection(db); + try { + const result = await messageCollection.find(messageId); + return result; + } catch (error) { + return null; + } +}; diff --git a/app/lib/database/services/Subscription.js b/app/lib/database/services/Subscription.js new file mode 100644 index 00000000000..925bb97e448 --- /dev/null +++ b/app/lib/database/services/Subscription.js @@ -0,0 +1,15 @@ +import database from '..'; +import { TABLE_NAME } from '../model/Subscription'; + +const getCollection = db => db.get(TABLE_NAME); + +export const getSubscriptionByRoomId = async(rid) => { + const db = database.active; + const subCollection = getCollection(db); + try { + const result = await subCollection.find(rid); + return result; + } catch (error) { + return null; + } +}; diff --git a/app/lib/database/services/Thread.js b/app/lib/database/services/Thread.js new file mode 100644 index 00000000000..4c420860996 --- /dev/null +++ b/app/lib/database/services/Thread.js @@ -0,0 +1,15 @@ +import database from '..'; +import { TABLE_NAME } from '../model/Thread'; + +const getCollection = db => db.get(TABLE_NAME); + +export const getThreadById = async(tmid) => { + const db = database.active; + const threadCollection = getCollection(db); + try { + const result = await threadCollection.find(tmid); + return result; + } catch (error) { + return null; + } +}; diff --git a/app/lib/database/services/ThreadMessage.js b/app/lib/database/services/ThreadMessage.js new file mode 100644 index 00000000000..ca1e5fc833e --- /dev/null +++ b/app/lib/database/services/ThreadMessage.js @@ -0,0 +1,15 @@ +import database from '..'; +import { TABLE_NAME } from '../model/ThreadMessage'; + +const getCollection = db => db.get(TABLE_NAME); + +export const getThreadMessageById = async(messageId) => { + const db = database.active; + const threadMessageCollection = getCollection(db); + try { + const result = await threadMessageCollection.find(messageId); + return result; + } catch (error) { + return null; + } +}; diff --git a/app/lib/methods/getRoomInfo.js b/app/lib/methods/getRoomInfo.js new file mode 100644 index 00000000000..293d97c5695 --- /dev/null +++ b/app/lib/methods/getRoomInfo.js @@ -0,0 +1,29 @@ +import { getSubscriptionByRoomId } from '../database/services/Subscription'; +import RocketChat from '../rocketchat'; + +const getRoomInfo = async(rid) => { + let result; + result = await getSubscriptionByRoomId(rid); + if (result) { + return { + rid, + name: result.name, + fname: result.fname, + t: result.t + }; + } + + result = await RocketChat.getRoomInfo(rid); + if (result?.success) { + return { + rid, + name: result.room.name, + fname: result.room.fname, + t: result.room.t + }; + } + + return null; +}; + +export default getRoomInfo; diff --git a/app/lib/methods/getSingleMessage.js b/app/lib/methods/getSingleMessage.js new file mode 100644 index 00000000000..56ecb3e632d --- /dev/null +++ b/app/lib/methods/getSingleMessage.js @@ -0,0 +1,15 @@ +import RocketChat from '../rocketchat'; + +const getSingleMessage = messageId => new Promise(async(resolve, reject) => { + try { + const result = await RocketChat.getSingleMessage(messageId); + if (result.success) { + return resolve(result.message); + } + return reject(); + } catch (e) { + return reject(); + } +}); + +export default getSingleMessage; diff --git a/app/lib/methods/getThreadName.js b/app/lib/methods/getThreadName.js new file mode 100644 index 00000000000..1eb1fbc7816 --- /dev/null +++ b/app/lib/methods/getThreadName.js @@ -0,0 +1,49 @@ +import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; + +import database from '../database'; +import { getMessageById } from '../database/services/Message'; +import { getThreadById } from '../database/services/Thread'; +import log from '../../utils/log'; +import getSingleMessage from './getSingleMessage'; +import { Encryption } from '../encryption'; + +const buildThreadName = thread => thread.msg || thread?.attachments?.[0]?.title; + +const getThreadName = async(rid, tmid, messageId) => { + let tmsg; + try { + const db = database.active; + const threadCollection = db.get('threads'); + const messageRecord = await getMessageById(messageId); + const threadRecord = await getThreadById(tmid); + if (threadRecord) { + tmsg = buildThreadName(threadRecord); + await db.action(async() => { + await messageRecord?.update((m) => { + m.tmsg = tmsg; + }); + }); + } else { + let thread = await getSingleMessage(tmid); + thread = await Encryption.decryptMessage(thread); + tmsg = buildThreadName(thread); + await db.action(async() => { + await db.batch( + threadCollection?.prepareCreate((t) => { + t._raw = sanitizedRaw({ id: thread._id }, threadCollection.schema); + t.subscription.id = rid; + Object.assign(t, thread); + }), + messageRecord?.prepareUpdate((m) => { + m.tmsg = tmsg; + }) + ); + }); + } + } catch (e) { + log(e); + } + return tmsg; +}; + +export default getThreadName; diff --git a/app/lib/methods/loadMessagesForRoom.js b/app/lib/methods/loadMessagesForRoom.js index 012e1ea3275..a8dc733ac7e 100644 --- a/app/lib/methods/loadMessagesForRoom.js +++ b/app/lib/methods/loadMessagesForRoom.js @@ -1,8 +1,15 @@ +import moment from 'moment'; + +import { MESSAGE_TYPE_LOAD_MORE } from '../../constants/messageTypeLoad'; import log from '../../utils/log'; +import { getMessageById } from '../database/services/Message'; import updateMessages from './updateMessages'; +import { generateLoadMoreId } from '../utils'; + +const COUNT = 50; async function load({ rid: roomId, latest, t }) { - let params = { roomId, count: 50 }; + let params = { roomId, count: COUNT }; if (latest) { params = { ...params, latest: new Date(latest).toISOString() }; } @@ -24,9 +31,20 @@ export default function loadMessagesForRoom(args) { return new Promise(async(resolve, reject) => { try { const data = await load.call(this, args); - - if (data && data.length) { - await updateMessages({ rid: args.rid, update: data }); + if (data?.length) { + const lastMessage = data[data.length - 1]; + const lastMessageRecord = await getMessageById(lastMessage._id); + if (!lastMessageRecord && data.length === COUNT) { + const loadMoreItem = { + _id: generateLoadMoreId(lastMessage._id), + rid: lastMessage.rid, + ts: moment(lastMessage.ts).subtract(1, 'millisecond'), + t: MESSAGE_TYPE_LOAD_MORE, + msg: lastMessage.msg + }; + data.push(loadMoreItem); + } + await updateMessages({ rid: args.rid, update: data, loaderItem: args.loaderItem }); return resolve(data); } else { return resolve([]); diff --git a/app/lib/methods/loadNextMessages.js b/app/lib/methods/loadNextMessages.js new file mode 100644 index 00000000000..3a5e5e6ffec --- /dev/null +++ b/app/lib/methods/loadNextMessages.js @@ -0,0 +1,42 @@ +import EJSON from 'ejson'; +import moment from 'moment'; +import orderBy from 'lodash/orderBy'; + +import log from '../../utils/log'; +import updateMessages from './updateMessages'; +import { getMessageById } from '../database/services/Message'; +import { MESSAGE_TYPE_LOAD_NEXT_CHUNK } from '../../constants/messageTypeLoad'; +import { generateLoadMoreId } from '../utils'; + +const COUNT = 50; + +export default function loadNextMessages(args) { + return new Promise(async(resolve, reject) => { + try { + const data = await this.methodCallWrapper('loadNextMessages', args.rid, args.ts, COUNT); + let messages = EJSON.fromJSONValue(data?.messages); + messages = orderBy(messages, 'ts'); + if (messages?.length) { + const lastMessage = messages[messages.length - 1]; + const lastMessageRecord = await getMessageById(lastMessage._id); + if (!lastMessageRecord && messages.length === COUNT) { + const loadMoreItem = { + _id: generateLoadMoreId(lastMessage._id), + rid: lastMessage.rid, + tmid: args.tmid, + ts: moment(lastMessage.ts).add(1, 'millisecond'), + t: MESSAGE_TYPE_LOAD_NEXT_CHUNK + }; + messages.push(loadMoreItem); + } + await updateMessages({ rid: args.rid, update: messages, loaderItem: args.loaderItem }); + return resolve(messages); + } else { + return resolve([]); + } + } catch (e) { + log(e); + reject(e); + } + }); +} diff --git a/app/lib/methods/loadSurroundingMessages.js b/app/lib/methods/loadSurroundingMessages.js new file mode 100644 index 00000000000..74c345c2fc4 --- /dev/null +++ b/app/lib/methods/loadSurroundingMessages.js @@ -0,0 +1,65 @@ +import EJSON from 'ejson'; +import moment from 'moment'; +import orderBy from 'lodash/orderBy'; + +import log from '../../utils/log'; +import updateMessages from './updateMessages'; +import { getMessageById } from '../database/services/Message'; +import { MESSAGE_TYPE_LOAD_NEXT_CHUNK, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK } from '../../constants/messageTypeLoad'; +import { generateLoadMoreId } from '../utils'; + +const COUNT = 50; + +export default function loadSurroundingMessages({ messageId, rid }) { + return new Promise(async(resolve, reject) => { + try { + const data = await this.methodCallWrapper('loadSurroundingMessages', { _id: messageId, rid }, COUNT); + let messages = EJSON.fromJSONValue(data?.messages); + messages = orderBy(messages, 'ts'); + + const message = messages.find(m => m._id === messageId); + const { tmid } = message; + + if (messages?.length) { + if (data?.moreBefore) { + const firstMessage = messages[0]; + const firstMessageRecord = await getMessageById(firstMessage._id); + if (!firstMessageRecord) { + const loadMoreItem = { + _id: generateLoadMoreId(firstMessage._id), + rid: firstMessage.rid, + tmid, + ts: moment(firstMessage.ts).subtract(1, 'millisecond'), + t: MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK, + msg: firstMessage.msg + }; + messages.unshift(loadMoreItem); + } + } + + if (data?.moreAfter) { + const lastMessage = messages[messages.length - 1]; + const lastMessageRecord = await getMessageById(lastMessage._id); + if (!lastMessageRecord) { + const loadMoreItem = { + _id: generateLoadMoreId(lastMessage._id), + rid: lastMessage.rid, + tmid, + ts: moment(lastMessage.ts).add(1, 'millisecond'), + t: MESSAGE_TYPE_LOAD_NEXT_CHUNK, + msg: lastMessage.msg + }; + messages.push(loadMoreItem); + } + } + await updateMessages({ rid, update: messages }); + return resolve(messages); + } else { + return resolve([]); + } + } catch (e) { + log(e); + reject(e); + } + }); +} diff --git a/app/lib/methods/loadThreadMessages.js b/app/lib/methods/loadThreadMessages.js index de6f244c61c..d170635e8c2 100644 --- a/app/lib/methods/loadThreadMessages.js +++ b/app/lib/methods/loadThreadMessages.js @@ -1,5 +1,6 @@ import { Q } from '@nozbe/watermelondb'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; +import EJSON from 'ejson'; import buildMessage from './helpers/buildMessage'; import database from '../database'; @@ -7,30 +8,27 @@ import log from '../../utils/log'; import protectedFunction from './helpers/protectedFunction'; import { Encryption } from '../encryption'; -async function load({ tmid, offset }) { +async function load({ tmid }) { try { // RC 1.0 - const result = await this.sdk.get('chat.getThreadMessages', { - tmid, count: 50, offset, sort: { ts: -1 }, query: { _hidden: { $ne: true } } - }); - if (!result || !result.success) { + const result = await this.methodCallWrapper('getThreadMessages', { tmid }); + if (!result) { return []; } - return result.messages; + return EJSON.fromJSONValue(result); } catch (error) { console.log(error); return []; } } -export default function loadThreadMessages({ tmid, rid, offset = 0 }) { +export default function loadThreadMessages({ tmid, rid }) { return new Promise(async(resolve, reject) => { try { - let data = await load.call(this, { tmid, offset }); - + let data = await load.call(this, { tmid }); if (data && data.length) { try { - data = data.map(m => buildMessage(m)); + data = data.filter(m => m.tmid).map(m => buildMessage(m)); data = await Encryption.decryptMessages(data); const db = database.active; const threadMessagesCollection = db.get('thread_messages'); diff --git a/app/lib/methods/updateMessages.js b/app/lib/methods/updateMessages.js index 5f0db0f66ec..0b6b6c7c065 100644 --- a/app/lib/methods/updateMessages.js +++ b/app/lib/methods/updateMessages.js @@ -6,8 +6,12 @@ import log from '../../utils/log'; import database from '../database'; import protectedFunction from './helpers/protectedFunction'; import { Encryption } from '../encryption'; +import { MESSAGE_TYPE_ANY_LOAD } from '../../constants/messageTypeLoad'; +import { generateLoadMoreId } from '../utils'; -export default function updateMessages({ rid, update = [], remove = [] }) { +export default function updateMessages({ + rid, update = [], remove = [], loaderItem +}) { try { if (!((update && update.length) || (remove && remove.length))) { return; @@ -30,7 +34,13 @@ export default function updateMessages({ rid, update = [], remove = [] }) { const threadCollection = db.get('threads'); const threadMessagesCollection = db.get('thread_messages'); const allMessagesRecords = await msgCollection - .query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds))) + .query( + Q.where('rid', rid), + Q.or( + Q.where('id', Q.oneOf(messagesIds)), + Q.where('t', Q.oneOf(MESSAGE_TYPE_ANY_LOAD)) + ) + ) .fetch(); const allThreadsRecords = await threadCollection .query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds))) @@ -55,6 +65,9 @@ export default function updateMessages({ rid, update = [], remove = [] }) { let threadMessagesToCreate = allThreadMessages.filter(i1 => !allThreadMessagesRecords.find(i2 => i1._id === i2.id)); let threadMessagesToUpdate = allThreadMessagesRecords.filter(i1 => allThreadMessages.find(i2 => i1.id === i2._id)); + // filter loaders to delete + let loadersToDelete = allMessagesRecords.filter(i1 => update.find(i2 => i1.id === generateLoadMoreId(i2._id))); + // Create msgsToCreate = msgsToCreate.map(message => msgCollection.prepareCreate(protectedFunction((m) => { m._raw = sanitizedRaw({ id: message._id }, msgCollection.schema); @@ -121,6 +134,12 @@ export default function updateMessages({ rid, update = [], remove = [] }) { threadMessagesToDelete = threadMessagesToDelete.map(tm => tm.prepareDestroyPermanently()); } + // Delete loaders + loadersToDelete = loadersToDelete.map(m => m.prepareDestroyPermanently()); + if (loaderItem) { + loadersToDelete.push(loaderItem.prepareDestroyPermanently()); + } + const allRecords = [ ...msgsToCreate, ...msgsToUpdate, @@ -130,7 +149,8 @@ export default function updateMessages({ rid, update = [], remove = [] }) { ...threadsToDelete, ...threadMessagesToCreate, ...threadMessagesToUpdate, - ...threadMessagesToDelete + ...threadMessagesToDelete, + ...loadersToDelete ]; try { diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 3891d88cb56..561e02c7340 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -1,4 +1,5 @@ import { InteractionManager } from 'react-native'; +import EJSON from 'ejson'; import { Rocketchat as RocketchatClient, settings as RocketChatSettings @@ -41,6 +42,8 @@ import canOpenRoom from './methods/canOpenRoom'; import triggerBlockAction, { triggerSubmitView, triggerCancel } from './methods/actions'; import loadMessagesForRoom from './methods/loadMessagesForRoom'; +import loadSurroundingMessages from './methods/loadSurroundingMessages'; +import loadNextMessages from './methods/loadNextMessages'; import loadMissedMessages from './methods/loadMissedMessages'; import loadThreadMessages from './methods/loadThreadMessages'; @@ -624,6 +627,8 @@ const RocketChat = { }, loadMissedMessages, loadMessagesForRoom, + loadSurroundingMessages, + loadNextMessages, loadThreadMessages, sendMessage, getRooms, @@ -938,7 +943,7 @@ const RocketChat = { methodCallWrapper(method, ...params) { const { API_Use_REST_For_DDP_Calls } = reduxStore.getState().settings; if (API_Use_REST_For_DDP_Calls) { - return this.post(`method.call/${ method }`, { message: JSON.stringify({ method, params }) }); + return this.post(`method.call/${ method }`, { message: EJSON.stringify({ method, params }) }); } return this.methodCall(method, ...params); }, diff --git a/app/lib/utils.js b/app/lib/utils.js index 769fd6d7670..615b353ae45 100644 --- a/app/lib/utils.js +++ b/app/lib/utils.js @@ -20,3 +20,5 @@ export const methods = { }; export const compareServerVersion = (currentServerVersion, versionToCompare, func) => currentServerVersion && func(coerce(currentServerVersion), versionToCompare); + +export const generateLoadMoreId = id => `load-more-${ id }`; diff --git a/app/notifications/push/index.js b/app/notifications/push/index.js index df4ac152da3..13e92916466 100644 --- a/app/notifications/push/index.js +++ b/app/notifications/push/index.js @@ -10,7 +10,7 @@ export const onNotification = (notification) => { if (data) { try { const { - rid, name, sender, type, host, messageType + rid, name, sender, type, host, messageType, messageId } = EJSON.parse(data.ejson); const types = { @@ -24,6 +24,7 @@ export const onNotification = (notification) => { const params = { host, rid, + messageId, path: `${ types[type] }/${ roomName }`, isCall: messageType === 'jitsi_call_started' }; diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index 184a4d96e2d..985a28556fd 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -60,18 +60,19 @@ const navigate = function* navigate({ params }) { const isMasterDetail = yield select(state => state.app.isMasterDetail); const focusedRooms = yield select(state => state.room.rooms); + const jumpToMessageId = params.messageId; if (focusedRooms.includes(room.rid)) { // if there's one room on the list or last room is the one if (focusedRooms.length === 1 || focusedRooms[0] === room.rid) { - yield goRoom({ item, isMasterDetail }); + yield goRoom({ item, isMasterDetail, jumpToMessageId }); } else { popToRoot({ isMasterDetail }); - yield goRoom({ item, isMasterDetail }); + yield goRoom({ item, isMasterDetail, jumpToMessageId }); } } else { popToRoot({ isMasterDetail }); - yield goRoom({ item, isMasterDetail }); + yield goRoom({ item, isMasterDetail, jumpToMessageId }); } if (params.isCall) { diff --git a/app/utils/goRoom.js b/app/utils/goRoom.js index 94adfde4945..e9811e6515c 100644 --- a/app/utils/goRoom.js +++ b/app/utils/goRoom.js @@ -14,7 +14,6 @@ const navigate = ({ item, isMasterDetail, ...props }) => { t: item.t, prid: item.prid, room: item, - search: item.search, visitor: item.visitor, roomUserId: RocketChat.getUidDirectMessage(item), ...props diff --git a/app/views/MessagesView/index.js b/app/views/MessagesView/index.js index fc840b2d60e..f6ea9194214 100644 --- a/app/views/MessagesView/index.js +++ b/app/views/MessagesView/index.js @@ -16,6 +16,7 @@ import { withTheme } from '../../theme'; import { getUserSelector } from '../../selectors/login'; import { withActionSheet } from '../../containers/ActionSheet'; import SafeAreaView from '../../containers/SafeAreaView'; +import getThreadName from '../../lib/methods/getThreadName'; class MessagesView extends React.Component { static propTypes = { @@ -26,7 +27,8 @@ class MessagesView extends React.Component { customEmojis: PropTypes.object, theme: PropTypes.string, showActionSheet: PropTypes.func, - useRealName: PropTypes.bool + useRealName: PropTypes.bool, + isMasterDetail: PropTypes.bool } constructor(props) { @@ -81,6 +83,32 @@ class MessagesView extends React.Component { navigation.navigate('RoomInfoView', navParam); } + jumpToMessage = async({ item }) => { + const { navigation, isMasterDetail } = this.props; + let params = { + rid: this.rid, + jumpToMessageId: item._id, + t: this.t, + room: this.room + }; + if (item.tmid) { + if (isMasterDetail) { + navigation.navigate('DrawerNavigator'); + } else { + navigation.pop(2); + } + params = { + ...params, + tmid: item.tmid, + name: await getThreadName(this.rid, item.tmid, item._id), + t: 'thread' + }; + navigation.push('RoomView', params); + } else { + navigation.navigate('RoomView', params); + } + } + defineMessagesViewContent = (name) => { const { user, baseUrl, theme, useRealName @@ -93,11 +121,13 @@ class MessagesView extends React.Component { timeFormat: 'MMM Do YYYY, h:mm:ss a', isEdited: !!item.editedAt, isHeader: true, + isThreadRoom: true, attachments: item.attachments || [], useRealName, showAttachment: this.showAttachment, getCustomEmoji: this.getCustomEmoji, - navToRoomInfo: this.navToRoomInfo + navToRoomInfo: this.navToRoomInfo, + onPress: () => this.jumpToMessage({ item }) }); return ({ @@ -315,7 +345,8 @@ const mapStateToProps = state => ({ baseUrl: state.server.server, user: getUserSelector(state), customEmojis: state.customEmojis, - useRealName: state.settings.UI_Use_Real_Name + useRealName: state.settings.UI_Use_Real_Name, + isMasterDetail: state.app.isMasterDetail }); export default connect(mapStateToProps)(withTheme(withActionSheet(MessagesView))); diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 72ec2548ba3..3256dd0b976 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -636,7 +636,7 @@ class RoomActionsView extends React.Component { room, membersCount, canViewMembers, canAddUser, canInviteUser, joined, canAutoTranslate, canForwardGuest, canReturnQueue } = this.state; const { - rid, t, encrypted + rid, t } = room; const isGroupChat = RocketChat.isGroupChat(room); @@ -761,24 +761,6 @@ class RoomActionsView extends React.Component { ) : null} - {['c', 'p', 'd'].includes(t) - ? ( - <> - <List.Item - title='Search' - onPress={() => this.onPressTouchable({ - route: 'SearchMessagesView', - params: { rid, encrypted } - })} - testID='room-actions-search' - left={() => <List.Icon name='search' />} - showActionIndicator - /> - <List.Separator /> - </> - ) - : null} - {['c', 'p', 'd'].includes(t) ? ( <> diff --git a/app/views/RoomView/List/List.js b/app/views/RoomView/List/List.js new file mode 100644 index 00000000000..407dcbf10f6 --- /dev/null +++ b/app/views/RoomView/List/List.js @@ -0,0 +1,42 @@ +import React from 'react'; +import { FlatList, StyleSheet } from 'react-native'; +import Animated from 'react-native-reanimated'; +import PropTypes from 'prop-types'; + +import { isIOS } from '../../../utils/deviceInfo'; +import scrollPersistTaps from '../../../utils/scrollPersistTaps'; + +const AnimatedFlatList = Animated.createAnimatedComponent(FlatList); + +const styles = StyleSheet.create({ + list: { + flex: 1 + }, + contentContainer: { + paddingTop: 10 + } +}); + +const List = ({ listRef, ...props }) => ( + <AnimatedFlatList + testID='room-view-messages' + ref={listRef} + keyExtractor={item => item.id} + contentContainerStyle={styles.contentContainer} + style={styles.list} + inverted + removeClippedSubviews={isIOS} + initialNumToRender={7} + onEndReachedThreshold={0.5} + maxToRenderPerBatch={5} + windowSize={10} + {...props} + {...scrollPersistTaps} + /> +); + +List.propTypes = { + listRef: PropTypes.object +}; + +export default List; diff --git a/app/views/RoomView/List/NavBottomFAB.js b/app/views/RoomView/List/NavBottomFAB.js new file mode 100644 index 00000000000..5c5aee746a1 --- /dev/null +++ b/app/views/RoomView/List/NavBottomFAB.js @@ -0,0 +1,75 @@ +import React, { useCallback, useState } from 'react'; +import { View, StyleSheet } from 'react-native'; +import PropTypes from 'prop-types'; +import Animated, { + call, cond, greaterOrEq, useCode +} from 'react-native-reanimated'; + +import { themes } from '../../../constants/colors'; +import { CustomIcon } from '../../../lib/Icons'; +import { useTheme } from '../../../theme'; +import Touch from '../../../utils/touch'; +import { hasNotch } from '../../../utils/deviceInfo'; + +const SCROLL_LIMIT = 200; +const SEND_TO_CHANNEL_HEIGHT = 40; + +const styles = StyleSheet.create({ + container: { + position: 'absolute', + right: 15 + }, + button: { + borderRadius: 25 + }, + content: { + width: 50, + height: 50, + borderRadius: 25, + borderWidth: 1, + alignItems: 'center', + justifyContent: 'center' + } +}); + +const NavBottomFAB = ({ y, onPress, isThread }) => { + const { theme } = useTheme(); + const [show, setShow] = useState(false); + const handleOnPress = useCallback(() => onPress()); + const toggle = v => setShow(v); + + useCode(() => cond(greaterOrEq(y, SCROLL_LIMIT), + call([y], () => toggle(true)), + call([y], () => toggle(false))), + [y]); + + if (!show) { + return null; + } + + let bottom = hasNotch ? 100 : 60; + if (isThread) { + bottom += SEND_TO_CHANNEL_HEIGHT; + } + return ( + <Animated.View style={[styles.container, { bottom }]}> + <Touch + onPress={handleOnPress} + theme={theme} + style={[styles.button, { backgroundColor: themes[theme].backgroundColor }]} + > + <View style={[styles.content, { borderColor: themes[theme].borderColor }]}> + <CustomIcon name='chevron-down' color={themes[theme].auxiliaryTintColor} size={36} /> + </View> + </Touch> + </Animated.View> + ); +}; + +NavBottomFAB.propTypes = { + y: Animated.Value, + onPress: PropTypes.func, + isThread: PropTypes.bool +}; + +export default NavBottomFAB; diff --git a/app/views/RoomView/List.js b/app/views/RoomView/List/index.js similarity index 59% rename from app/views/RoomView/List.js rename to app/views/RoomView/List/index.js index 41d424fa305..19a8ccb901f 100644 --- a/app/views/RoomView/List.js +++ b/app/views/RoomView/List/index.js @@ -1,30 +1,39 @@ import React from 'react'; -import { FlatList, RefreshControl } from 'react-native'; +import { RefreshControl } from 'react-native'; import PropTypes from 'prop-types'; import { Q } from '@nozbe/watermelondb'; import moment from 'moment'; import { dequal } from 'dequal'; - -import styles from './styles'; -import database from '../../lib/database'; -import scrollPersistTaps from '../../utils/scrollPersistTaps'; -import RocketChat from '../../lib/rocketchat'; -import log from '../../utils/log'; -import EmptyRoom from './EmptyRoom'; -import { isIOS } from '../../utils/deviceInfo'; -import { animateNextTransition } from '../../utils/layoutAnimation'; -import ActivityIndicator from '../../containers/ActivityIndicator'; -import { themes } from '../../constants/colors'; +import { Value, event } from 'react-native-reanimated'; + +import database from '../../../lib/database'; +import RocketChat from '../../../lib/rocketchat'; +import log from '../../../utils/log'; +import EmptyRoom from '../EmptyRoom'; +import { animateNextTransition } from '../../../utils/layoutAnimation'; +import ActivityIndicator from '../../../containers/ActivityIndicator'; +import { themes } from '../../../constants/colors'; +import List from './List'; +import NavBottomFAB from './NavBottomFAB'; +import debounce from '../../../utils/debounce'; const QUERY_SIZE = 50; -class List extends React.Component { +const onScroll = ({ y }) => event( + [ + { + nativeEvent: { + contentOffset: { y } + } + } + ], + { useNativeDriver: true } +); + +class ListContainer extends React.Component { static propTypes = { - onEndReached: PropTypes.func, - renderFooter: PropTypes.func, renderRow: PropTypes.func, rid: PropTypes.string, - t: PropTypes.string, tmid: PropTypes.string, theme: PropTypes.string, loading: PropTypes.bool, @@ -36,34 +45,28 @@ class List extends React.Component { showMessageInMainThread: PropTypes.bool }; - // this.state.loading works for this.onEndReached and RoomView.init - static getDerivedStateFromProps(props, state) { - if (props.loading !== state.loading) { - return { - loading: props.loading - }; - } - return null; - } - constructor(props) { super(props); console.time(`${ this.constructor.name } init`); console.time(`${ this.constructor.name } mount`); this.count = 0; - this.needsFetch = false; this.mounted = false; this.animated = false; + this.jumping = false; this.state = { - loading: true, - end: false, messages: [], - refreshing: false + refreshing: false, + highlightedMessage: null }; + this.y = new Value(0); + this.onScroll = onScroll({ y: this.y }); this.query(); this.unsubscribeFocus = props.navigation.addListener('focus', () => { this.animated = true; }); + this.viewabilityConfig = { + itemVisiblePercentThreshold: 10 + }; console.timeEnd(`${ this.constructor.name } init`); } @@ -73,17 +76,17 @@ class List extends React.Component { } shouldComponentUpdate(nextProps, nextState) { - const { loading, end, refreshing } = this.state; + const { refreshing, highlightedMessage } = this.state; const { - hideSystemMessages, theme, tunread, ignored + hideSystemMessages, theme, tunread, ignored, loading } = this.props; if (theme !== nextProps.theme) { return true; } - if (loading !== nextState.loading) { + if (loading !== nextProps.loading) { return true; } - if (end !== nextState.end) { + if (highlightedMessage !== nextState.highlightedMessage) { return true; } if (refreshing !== nextState.refreshing) { @@ -116,32 +119,14 @@ class List extends React.Component { if (this.unsubscribeFocus) { this.unsubscribeFocus(); } + this.clearHighlightedMessageTimeout(); console.countReset(`${ this.constructor.name }.render calls`); } - fetchData = async() => { - const { - loading, end, messages, latest = messages[messages.length - 1]?.ts - } = this.state; - if (loading || end) { - return; - } - - this.setState({ loading: true }); - const { rid, t, tmid } = this.props; - try { - let result; - if (tmid) { - // `offset` is `messages.length - 1` because we append thread start to `messages` obj - result = await RocketChat.loadThreadMessages({ tmid, rid, offset: messages.length - 1 }); - } else { - result = await RocketChat.loadMessagesForRoom({ rid, t, latest }); - } - - this.setState({ end: result.length < QUERY_SIZE, loading: false, latest: result[result.length - 1]?.ts }, () => this.loadMoreMessages(result)); - } catch (e) { - this.setState({ loading: false }); - log(e); + clearHighlightedMessageTimeout = () => { + if (this.highlightedMessageTimeout) { + clearTimeout(this.highlightedMessageTimeout); + this.highlightedMessageTimeout = false; } } @@ -198,9 +183,6 @@ class List extends React.Component { this.unsubscribeMessages(); this.messagesSubscription = this.messagesObservable .subscribe((messages) => { - if (messages.length <= this.count) { - this.needsFetch = true; - } if (tmid && this.thread) { messages = [...messages, this.thread]; } @@ -211,6 +193,7 @@ class List extends React.Component { } else { this.state.messages = messages; } + // TODO: move it away from here this.readThreads(); }); } @@ -221,7 +204,7 @@ class List extends React.Component { this.query(); } - readThreads = async() => { + readThreads = debounce(async() => { const { tmid } = this.props; if (tmid) { @@ -231,39 +214,9 @@ class List extends React.Component { // Do nothing } } - } - - onEndReached = async() => { - if (this.needsFetch) { - this.needsFetch = false; - await this.fetchData(); - } - this.query(); - } - - loadMoreMessages = (result) => { - const { end } = this.state; - - if (end) { - return; - } - - // handle servers with version < 3.0.0 - let { hideSystemMessages = [] } = this.props; - if (!Array.isArray(hideSystemMessages)) { - hideSystemMessages = []; - } - - if (!hideSystemMessages.length) { - return; - } + }, 300) - const hasReadableMessages = result.filter(message => !message.t || (message.t && !hideSystemMessages.includes(message.t))).length > 0; - // if this batch doesn't contain any messages that will be displayed, we'll request a new batch - if (!hasReadableMessages) { - this.onEndReached(); - } - } + onEndReached = () => this.query() onRefresh = () => this.setState({ refreshing: true }, async() => { const { messages } = this.state; @@ -272,7 +225,7 @@ class List extends React.Component { if (messages.length) { try { if (tmid) { - await RocketChat.loadThreadMessages({ tmid, rid, offset: messages.length - 1 }); + await RocketChat.loadThreadMessages({ tmid, rid }); } else { await RocketChat.loadMissedMessages({ rid, lastOpen: moment().subtract(7, 'days').toDate() }); } @@ -284,7 +237,6 @@ class List extends React.Component { this.setState({ refreshing: false }); }) - // eslint-disable-next-line react/sort-comp update = () => { if (this.animated) { animateNextTransition(); @@ -306,9 +258,53 @@ class List extends React.Component { return null; } + handleScrollToIndexFailed = (params) => { + const { listRef } = this.props; + listRef.current.getNode().scrollToIndex({ index: params.highestMeasuredFrameIndex, animated: false }); + } + + jumpToMessage = messageId => new Promise(async(resolve) => { + this.jumping = true; + const { messages } = this.state; + const { listRef } = this.props; + const index = messages.findIndex(item => item.id === messageId); + if (index > -1) { + listRef.current.getNode().scrollToIndex({ index, viewPosition: 0.5 }); + await new Promise(res => setTimeout(res, 300)); + if (!this.viewableItems.map(vi => vi.key).includes(messageId)) { + if (!this.jumping) { + return resolve(); + } + await setTimeout(() => resolve(this.jumpToMessage(messageId)), 300); + return; + } + this.setState({ highlightedMessage: messageId }); + this.clearHighlightedMessageTimeout(); + this.highlightedMessageTimeout = setTimeout(() => { + this.setState({ highlightedMessage: null }); + }, 10000); + await setTimeout(() => resolve(), 300); + } else { + listRef.current.getNode().scrollToIndex({ index: messages.length - 1, animated: false }); + if (!this.jumping) { + return resolve(); + } + await setTimeout(() => resolve(this.jumpToMessage(messageId)), 300); + } + }); + + // this.jumping is checked in between operations to make sure we're not stuck + cancelJumpToMessage = () => { + this.jumping = false; + } + + jumpToBottom = () => { + const { listRef } = this.props; + listRef.current.getNode().scrollToOffset({ offset: -100 }); + } + renderFooter = () => { - const { loading } = this.state; - const { rid, theme } = this.props; + const { rid, theme, loading } = this.props; if (loading && rid) { return <ActivityIndicator theme={theme} />; } @@ -316,36 +312,34 @@ class List extends React.Component { } renderItem = ({ item, index }) => { - const { messages } = this.state; + const { messages, highlightedMessage } = this.state; const { renderRow } = this.props; - return renderRow(item, messages[index + 1]); + return renderRow(item, messages[index + 1], highlightedMessage); + } + + onViewableItemsChanged = ({ viewableItems }) => { + this.viewableItems = viewableItems; } render() { console.count(`${ this.constructor.name }.render calls`); - const { rid, listRef } = this.props; + const { rid, tmid, listRef } = this.props; const { messages, refreshing } = this.state; const { theme } = this.props; return ( <> <EmptyRoom rid={rid} length={messages.length} mounted={this.mounted} theme={theme} /> - <FlatList - testID='room-view-messages' - ref={listRef} - keyExtractor={item => item.id} + <List + onScroll={this.onScroll} + scrollEventThrottle={16} + listRef={listRef} data={messages} - extraData={this.state} renderItem={this.renderItem} - contentContainerStyle={styles.contentContainer} - style={styles.list} - inverted - removeClippedSubviews={isIOS} - initialNumToRender={7} onEndReached={this.onEndReached} - onEndReachedThreshold={0.5} - maxToRenderPerBatch={5} - windowSize={10} ListFooterComponent={this.renderFooter} + onScrollToIndexFailed={this.handleScrollToIndexFailed} + onViewableItemsChanged={this.onViewableItemsChanged} + viewabilityConfig={this.viewabilityConfig} refreshControl={( <RefreshControl refreshing={refreshing} @@ -353,11 +347,11 @@ class List extends React.Component { tintColor={themes[theme].auxiliaryText} /> )} - {...scrollPersistTaps} /> + <NavBottomFAB y={this.y} onPress={this.jumpToBottom} isThread={!!tmid} /> </> ); } } -export default List; +export default ListContainer; diff --git a/app/views/RoomView/LoadMore/LoadMore.stories.js b/app/views/RoomView/LoadMore/LoadMore.stories.js new file mode 100644 index 00000000000..1f110a9cf27 --- /dev/null +++ b/app/views/RoomView/LoadMore/LoadMore.stories.js @@ -0,0 +1,62 @@ +/* eslint-disable import/no-extraneous-dependencies, import/no-unresolved, import/extensions, react/prop-types, react/destructuring-assignment */ +import React from 'react'; +import { ScrollView } from 'react-native'; +import { storiesOf } from '@storybook/react-native'; + +import LoadMore from './index'; +import { longText } from '../../../../storybook/utils'; +import { ThemeContext } from '../../../theme'; +import { + Message, StoryProvider, MessageDecorator +} from '../../../../storybook/stories/Message'; +import { themes } from '../../../constants/colors'; +import { MESSAGE_TYPE_LOAD_MORE, MESSAGE_TYPE_LOAD_NEXT_CHUNK, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK } from '../../../constants/messageTypeLoad'; + +const stories = storiesOf('LoadMore', module); + +// FIXME: for some reason, this promise never resolves on Storybook (it works on the app, so maybe the issue isn't on the component) +const load = () => new Promise(res => setTimeout(res, 1000)); + +stories.add('basic', () => ( + <> + <LoadMore load={load} /> + <LoadMore load={load} runOnRender /> + <LoadMore load={load} type={MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK} /> + <LoadMore load={load} type={MESSAGE_TYPE_LOAD_NEXT_CHUNK} /> + </> +)); + +const ThemeStory = ({ theme }) => ( + <ThemeContext.Provider + value={{ theme }} + > + <ScrollView style={{ backgroundColor: themes[theme].backgroundColor }}> + <LoadMore load={load} type={MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK} /> + <Message msg='Hey!' theme={theme} /> + <Message msg={longText} theme={theme} isHeader={false} /> + <Message msg='Older message' theme={theme} isHeader={false} /> + <LoadMore load={load} type={MESSAGE_TYPE_LOAD_NEXT_CHUNK} /> + <LoadMore load={load} type={MESSAGE_TYPE_LOAD_MORE} /> + <Message msg={longText} theme={theme} /> + <Message msg='This is the third message' isHeader={false} theme={theme} /> + <Message msg='This is the second message' isHeader={false} theme={theme} /> + <Message msg='This is the first message' theme={theme} /> + </ScrollView> + </ThemeContext.Provider> +); + +stories + .addDecorator(StoryProvider) + .addDecorator(MessageDecorator) + .add('light theme', () => <ThemeStory theme='light' />); + +stories + .addDecorator(StoryProvider) + .addDecorator(MessageDecorator) + .add('dark theme', () => <ThemeStory theme='dark' />); + +stories + .addDecorator(StoryProvider) + .addDecorator(MessageDecorator) + .add('black theme', () => <ThemeStory theme='black' />); + diff --git a/app/views/RoomView/LoadMore/index.js b/app/views/RoomView/LoadMore/index.js new file mode 100644 index 00000000000..04b9228352c --- /dev/null +++ b/app/views/RoomView/LoadMore/index.js @@ -0,0 +1,76 @@ +import React, { useEffect, useCallback, useState } from 'react'; +import { Text, StyleSheet, ActivityIndicator } from 'react-native'; +import PropTypes from 'prop-types'; + +import { themes } from '../../../constants/colors'; +import { MESSAGE_TYPE_LOAD_NEXT_CHUNK, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK } from '../../../constants/messageTypeLoad'; +import { useTheme } from '../../../theme'; +import Touch from '../../../utils/touch'; +import sharedStyles from '../../Styles'; +import I18n from '../../../i18n'; + +const styles = StyleSheet.create({ + button: { + paddingVertical: 16, + alignItems: 'center', + justifyContent: 'center' + }, + text: { + fontSize: 16, + ...sharedStyles.textMedium + } +}); + +const LoadMore = ({ load, type, runOnRender }) => { + const { theme } = useTheme(); + const [loading, setLoading] = useState(false); + + const handleLoad = useCallback(async() => { + try { + if (loading) { + return; + } + setLoading(true); + await load(); + } finally { + setLoading(false); + } + }, [loading]); + + useEffect(() => { + if (runOnRender) { + handleLoad(); + } + }, []); + + let text = 'Load_More'; + if (type === MESSAGE_TYPE_LOAD_NEXT_CHUNK) { + text = 'Load_Newer'; + } + if (type === MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK) { + text = 'Load_Older'; + } + + return ( + <Touch + onPress={handleLoad} + style={styles.button} + theme={theme} + enabled={!loading} + > + { + loading + ? <ActivityIndicator color={themes[theme].auxiliaryText} /> + : <Text style={[styles.text, { color: themes[theme].titleText }]}>{I18n.t(text)}</Text> + } + </Touch> + ); +}; + +LoadMore.propTypes = { + load: PropTypes.func, + type: PropTypes.string, + runOnRender: PropTypes.bool +}; + +export default LoadMore; diff --git a/app/views/RoomView/RightButtons.js b/app/views/RoomView/RightButtons.js index 81b8f153b0c..f61488b5bbc 100644 --- a/app/views/RoomView/RightButtons.js +++ b/app/views/RoomView/RightButtons.js @@ -142,12 +142,12 @@ class RightButtonsContainer extends Component { goSearchView = () => { logEvent(events.ROOM_GO_SEARCH); const { - rid, navigation, isMasterDetail + rid, t, navigation, isMasterDetail } = this.props; if (isMasterDetail) { navigation.navigate('ModalStackNavigator', { screen: 'SearchMessagesView', params: { rid, showCloseModal: true } }); } else { - navigation.navigate('SearchMessagesView', { rid }); + navigation.navigate('SearchMessagesView', { rid, t }); } } diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index b6b700db35d..18d123ec412 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -2,8 +2,8 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Text, View, InteractionManager } from 'react-native'; import { connect } from 'react-redux'; +import parse from 'url-parse'; -import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import moment from 'moment'; import * as Haptics from 'expo-haptics'; import { Q } from '@nozbe/watermelondb'; @@ -17,7 +17,6 @@ import { import List from './List'; import database from '../../lib/database'; import RocketChat from '../../lib/rocketchat'; -import { Encryption } from '../../lib/encryption'; import Message from '../../containers/message'; import MessageActions from '../../containers/MessageActions'; import MessageErrorActions from '../../containers/MessageErrorActions'; @@ -35,6 +34,7 @@ import RightButtons from './RightButtons'; import StatusBar from '../../containers/StatusBar'; import Separator from './Separator'; import { themes } from '../../constants/colors'; +import { MESSAGE_TYPE_ANY_LOAD, MESSAGE_TYPE_LOAD_MORE } from '../../constants/messageTypeLoad'; import debounce from '../../utils/debounce'; import ReactionsModal from '../../containers/ReactionsModal'; import { LISTENER } from '../../containers/Toast'; @@ -64,6 +64,12 @@ import { getHeaderTitlePosition } from '../../containers/Header'; import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/encryption/constants'; import { takeInquiry } from '../../ee/omnichannel/lib'; +import Loading from '../../containers/Loading'; +import LoadMore from './LoadMore'; +import RoomServices from './services'; +import { goRoom } from '../../utils/goRoom'; +import getThreadName from '../../lib/methods/getThreadName'; +import getRoomInfo from '../../lib/methods/getRoomInfo'; const stateAttrsUpdate = [ 'joined', @@ -76,7 +82,8 @@ const stateAttrsUpdate = [ 'replying', 'reacting', 'readOnly', - 'member' + 'member', + 'showingBlockingLoader' ]; const roomAttrsUpdate = ['f', 'ro', 'blocked', 'blocker', 'archived', 'tunread', 'muted', 'ignored', 'jitsiTimeout', 'announcement', 'sysMes', 'topic', 'name', 'fname', 'roles', 'bannerClosed', 'visitor', 'joinCodeRequired']; @@ -117,11 +124,11 @@ class RoomView extends React.Component { const selectedMessage = props.route.params?.message; const name = props.route.params?.name; const fname = props.route.params?.fname; - const search = props.route.params?.search; const prid = props.route.params?.prid; const room = props.route.params?.room ?? { rid: this.rid, t: this.t, name, fname, prid }; + this.jumpToMessageId = props.route.params?.jumpToMessageId; const roomUserId = props.route.params?.roomUserId ?? RocketChat.getUidDirectMessage(room); this.state = { joined: true, @@ -133,6 +140,7 @@ class RoomView extends React.Component { selectedMessage: selectedMessage || {}, canAutoTranslate: false, loading: true, + showingBlockingLoader: false, editing: false, replying: !!selectedMessage, replyWithMention: false, @@ -151,13 +159,10 @@ class RoomView extends React.Component { this.setReadOnly(); - if (search) { - this.updateRoom(); - } - this.messagebox = React.createRef(); this.list = React.createRef(); this.joinCode = React.createRef(); + this.flatList = React.createRef(); this.mounted = false; // we don't need to subscribe to threads @@ -181,6 +186,9 @@ class RoomView extends React.Component { EventEmitter.addEventListener('connected', this.handleConnected); } } + if (this.jumpToMessageId) { + this.jumpToMessage(this.jumpToMessageId); + } if (isIOS && this.rid) { this.updateUnreadCount(); } @@ -195,7 +203,9 @@ class RoomView extends React.Component { shouldComponentUpdate(nextProps, nextState) { const { state } = this; const { roomUpdate, member } = state; - const { appState, theme, insets } = this.props; + const { + appState, theme, insets, route + } = this.props; if (theme !== nextProps.theme) { return true; } @@ -212,12 +222,19 @@ class RoomView extends React.Component { if (!dequal(nextProps.insets, insets)) { return true; } + if (!dequal(nextProps.route?.params, route?.params)) { + return true; + } return roomAttrsUpdate.some(key => !dequal(nextState.roomUpdate[key], roomUpdate[key])); } componentDidUpdate(prevProps, prevState) { const { roomUpdate } = this.state; - const { appState, insets } = this.props; + const { appState, insets, route } = this.props; + + if (route?.params?.jumpToMessageId !== prevProps.route?.params?.jumpToMessageId) { + this.jumpToMessage(route?.params?.jumpToMessageId); + } if (appState === 'foreground' && appState !== prevProps.appState && this.rid) { // Fire List.query() just to keep observables working @@ -417,34 +434,15 @@ class RoomView extends React.Component { this.setState({ readOnly }); } - updateRoom = async() => { - const db = database.active; - - try { - const subCollection = db.get('subscriptions'); - const sub = await subCollection.find(this.rid); - - const { room } = await RocketChat.getRoomInfo(this.rid); - - await db.action(async() => { - await sub.update((s) => { - Object.assign(s, room); - }); - }); - } catch { - // do nothing - } - } - init = async() => { try { this.setState({ loading: true }); const { room, joined } = this.state; if (this.tmid) { - await this.getThreadMessages(); + await RoomServices.getThreadMessages(this.tmid, this.rid); } else { const newLastOpen = new Date(); - await this.getMessages(room); + await RoomServices.getMessages(room); // if room is joined if (joined) { @@ -453,7 +451,7 @@ class RoomView extends React.Component { } else { this.setLastOpen(null); } - RocketChat.readMessages(room.rid, newLastOpen, true).catch(e => console.log(e)); + RoomServices.readMessages(room.rid, newLastOpen, true).catch(e => console.log(e)); } } @@ -660,26 +658,69 @@ class RoomView extends React.Component { }); }; - onThreadPress = debounce(async(item) => { - const { roomUserId } = this.state; - const { navigation } = this.props; - if (item.tmid) { - if (!item.tmsg) { - await this.fetchThreadName(item.tmid, item.id); + onThreadPress = debounce(item => this.navToThread(item), 1000, true) + + shouldNavigateToRoom = (message) => { + if (message.tmid && message.tmid === this.tmid) { + return false; + } + if (!message.tmid && message.rid === this.rid) { + return false; + } + return true; + } + + jumpToMessageByUrl = async(messageUrl) => { + if (!messageUrl) { + return; + } + try { + this.setState({ showingBlockingLoader: true }); + const parsedUrl = parse(messageUrl, true); + const messageId = parsedUrl.query.msg; + await this.jumpToMessage(messageId); + this.setState({ showingBlockingLoader: false }); + } catch (e) { + this.setState({ showingBlockingLoader: false }); + log(e); + } + } + + jumpToMessage = async(messageId) => { + try { + this.setState({ showingBlockingLoader: true }); + const message = await RoomServices.getMessageInfo(messageId); + + if (!message) { + return; } - let name = item.tmsg; - if (item.t === E2E_MESSAGE_TYPE && item.e2e !== E2E_STATUS.DONE) { - name = I18n.t('Encrypted_message'); + + if (this.shouldNavigateToRoom(message)) { + if (message.rid !== this.rid) { + this.navToRoom(message); + } else { + this.navToThread(message); + } + } else { + /** + * if it's from server, we don't have it saved locally and so we fetch surroundings + * we test if it's not from threads because we're fetching from threads currently with `getThreadMessages` + */ + if (message.fromServer && !message.tmid) { + await RocketChat.loadSurroundingMessages({ messageId, rid: this.rid }); + } + await Promise.race([ + this.list.current.jumpToMessage(message.id), + new Promise(res => setTimeout(res, 5000)) + ]); + this.list.current.cancelJumpToMessage(); } - navigation.push('RoomView', { - rid: item.subscription.id, tmid: item.tmid, name, t: 'thread', roomUserId - }); - } else if (item.tlm) { - navigation.push('RoomView', { - rid: item.subscription.id, tmid: item.id, name: makeThreadName(item), t: 'thread', roomUserId - }); + } catch (e) { + log(e); + } finally { + this.setState({ showingBlockingLoader: false }); } - }, 1000, true) + } replyBroadcast = (message) => { const { replyBroadcast } = this.props; @@ -718,17 +759,6 @@ class RoomView extends React.Component { }); }; - getMessages = () => { - const { room } = this.state; - if (room.lastOpen) { - return RocketChat.loadMissedMessages(room); - } else { - return RocketChat.loadMessagesForRoom(room); - } - } - - getThreadMessages = () => RocketChat.loadThreadMessages({ tmid: this.tmid, rid: this.rid }) - getCustomEmoji = (name) => { const { customEmojis } = this.props; const emoji = customEmojis[name]; @@ -767,45 +797,7 @@ class RoomView extends React.Component { } } - // eslint-disable-next-line react/sort-comp - fetchThreadName = async(tmid, messageId) => { - try { - const db = database.active; - const threadCollection = db.get('threads'); - const messageCollection = db.get('messages'); - const messageRecord = await messageCollection.find(messageId); - let threadRecord; - try { - threadRecord = await threadCollection.find(tmid); - } catch (error) { - console.log('Thread not found. We have to search for it.'); - } - if (threadRecord) { - await db.action(async() => { - await messageRecord.update((m) => { - m.tmsg = threadRecord.msg || (threadRecord.attachments && threadRecord.attachments.length && threadRecord.attachments[0].title); - }); - }); - } else { - let { message: thread } = await RocketChat.getSingleMessage(tmid); - thread = await Encryption.decryptMessage(thread); - await db.action(async() => { - await db.batch( - threadCollection.prepareCreate((t) => { - t._raw = sanitizedRaw({ id: thread._id }, threadCollection.schema); - t.subscription.id = this.rid; - Object.assign(t, thread); - }), - messageRecord.prepareUpdate((m) => { - m.tmsg = thread.msg || (thread.attachments && thread.attachments.length && thread.attachments[0].title); - }) - ); - }); - } - } catch (e) { - // log(e); - } - } + getThreadName = (tmid, messageId) => getThreadName(this.rid, tmid, messageId) toggleFollowThread = async(isFollowingThread, tmid) => { try { @@ -836,6 +828,38 @@ class RoomView extends React.Component { } } + navToThread = async(item) => { + const { roomUserId } = this.state; + const { navigation } = this.props; + + if (item.tmid) { + let name = item.tmsg; + if (!name) { + name = await this.getThreadName(item.tmid, item.id); + } + if (item.t === E2E_MESSAGE_TYPE && item.e2e !== E2E_STATUS.DONE) { + name = I18n.t('Encrypted_message'); + } + return navigation.push('RoomView', { + rid: this.rid, tmid: item.tmid, name, t: 'thread', roomUserId, jumpToMessageId: item.id + }); + } + + if (item.tlm) { + return navigation.push('RoomView', { + rid: this.rid, tmid: item.id, name: makeThreadName(item), t: 'thread', roomUserId + }); + } + } + + navToRoom = async(message) => { + const { navigation, isMasterDetail } = this.props; + const roomInfo = await getRoomInfo(message.rid); + return goRoom({ + item: roomInfo, isMasterDetail, navigationMethod: navigation.push, jumpToMessageId: message.id + }); + } + callJitsi = () => { const { room } = this.state; const { jitsiTimeout } = room; @@ -900,7 +924,11 @@ class RoomView extends React.Component { return room?.ignored?.includes?.(message?.u?._id) ?? false; } - renderItem = (item, previousItem) => { + onLoadMoreMessages = loaderItem => RoomServices.getMoreMessages({ + rid: this.rid, tmid: this.tmid, t: this.t, loaderItem + }) + + renderItem = (item, previousItem, highlightedMessage) => { const { room, lastOpen, canAutoTranslate } = this.state; const { user, Message_GroupingPeriod, Message_TimeFormat, useRealName, baseUrl, Message_Read_Receipt_Enabled, theme @@ -920,48 +948,55 @@ class RoomView extends React.Component { } } - const message = ( - <Message - item={item} - user={user} - rid={room.rid} - archived={room.archived} - broadcast={room.broadcast} - status={item.status} - isThreadRoom={!!this.tmid} - isIgnored={this.isIgnored(item)} - previousItem={previousItem} - fetchThreadName={this.fetchThreadName} - onReactionPress={this.onReactionPress} - onReactionLongPress={this.onReactionLongPress} - onLongPress={this.onMessageLongPress} - onEncryptedPress={this.onEncryptedPress} - onDiscussionPress={this.onDiscussionPress} - onThreadPress={this.onThreadPress} - showAttachment={this.showAttachment} - reactionInit={this.onReactionInit} - replyBroadcast={this.replyBroadcast} - errorActionsShow={this.errorActionsShow} - baseUrl={baseUrl} - Message_GroupingPeriod={Message_GroupingPeriod} - timeFormat={Message_TimeFormat} - useRealName={useRealName} - isReadReceiptEnabled={Message_Read_Receipt_Enabled} - autoTranslateRoom={canAutoTranslate && room.autoTranslate} - autoTranslateLanguage={room.autoTranslateLanguage} - navToRoomInfo={this.navToRoomInfo} - getCustomEmoji={this.getCustomEmoji} - callJitsi={this.callJitsi} - blockAction={this.blockAction} - threadBadgeColor={this.getBadgeColor(item?.id)} - toggleFollowThread={this.toggleFollowThread} - /> - ); + let content = null; + if (MESSAGE_TYPE_ANY_LOAD.includes(item.t)) { + content = <LoadMore load={() => this.onLoadMoreMessages(item)} type={item.t} runOnRender={item.t === MESSAGE_TYPE_LOAD_MORE && !previousItem} />; + } else { + content = ( + <Message + item={item} + user={user} + rid={room.rid} + archived={room.archived} + broadcast={room.broadcast} + status={item.status} + isThreadRoom={!!this.tmid} + isIgnored={this.isIgnored(item)} + previousItem={previousItem} + fetchThreadName={this.getThreadName} + onReactionPress={this.onReactionPress} + onReactionLongPress={this.onReactionLongPress} + onLongPress={this.onMessageLongPress} + onEncryptedPress={this.onEncryptedPress} + onDiscussionPress={this.onDiscussionPress} + onThreadPress={this.onThreadPress} + showAttachment={this.showAttachment} + reactionInit={this.onReactionInit} + replyBroadcast={this.replyBroadcast} + errorActionsShow={this.errorActionsShow} + baseUrl={baseUrl} + Message_GroupingPeriod={Message_GroupingPeriod} + timeFormat={Message_TimeFormat} + useRealName={useRealName} + isReadReceiptEnabled={Message_Read_Receipt_Enabled} + autoTranslateRoom={canAutoTranslate && room.autoTranslate} + autoTranslateLanguage={room.autoTranslateLanguage} + navToRoomInfo={this.navToRoomInfo} + getCustomEmoji={this.getCustomEmoji} + callJitsi={this.callJitsi} + blockAction={this.blockAction} + threadBadgeColor={this.getBadgeColor(item?.id)} + toggleFollowThread={this.toggleFollowThread} + jumpToMessage={this.jumpToMessageByUrl} + highlighted={highlightedMessage === item.id} + /> + ); + } if (showUnreadSeparator || dateSeparator) { return ( <> - {message} + {content} <Separator ts={dateSeparator} unread={showUnreadSeparator} @@ -971,7 +1006,7 @@ class RoomView extends React.Component { ); } - return message; + return content; } renderFooter = () => { @@ -1057,12 +1092,10 @@ class RoomView extends React.Component { ); } - setListRef = ref => this.flatList = ref; - render() { console.count(`${ this.constructor.name }.render calls`); const { - room, reactionsModalVisible, selectedMessage, loading, reacting + room, reactionsModalVisible, selectedMessage, loading, reacting, showingBlockingLoader } = this.state; const { user, baseUrl, theme, navigation, Hide_System_Messages, width, height @@ -1087,7 +1120,7 @@ class RoomView extends React.Component { /> <List ref={this.list} - listRef={this.setListRef} + listRef={this.flatList} rid={rid} t={t} tmid={this.tmid} @@ -1127,6 +1160,7 @@ class RoomView extends React.Component { t={t} theme={theme} /> + <Loading visible={showingBlockingLoader} /> </SafeAreaView> ); } diff --git a/app/views/RoomView/services/getMessageInfo.js b/app/views/RoomView/services/getMessageInfo.js new file mode 100644 index 00000000000..f7f008c4687 --- /dev/null +++ b/app/views/RoomView/services/getMessageInfo.js @@ -0,0 +1,41 @@ +import { getMessageById } from '../../../lib/database/services/Message'; +import { getThreadMessageById } from '../../../lib/database/services/ThreadMessage'; +import getSingleMessage from '../../../lib/methods/getSingleMessage'; + +const getMessageInfo = async(messageId) => { + let result; + result = await getMessageById(messageId); + if (result) { + return { + id: result.id, + rid: result.subscription.id, + tmid: result.tmid, + msg: result.msg + }; + } + + result = await getThreadMessageById(messageId); + if (result) { + return { + id: result.id, + rid: result.subscription.id, + tmid: result.rid, + msg: result.msg + }; + } + + result = await getSingleMessage(messageId); + if (result) { + return { + id: result._id, + rid: result.rid, + tmid: result.tmid, + msg: result.msg, + fromServer: true + }; + } + + return null; +}; + +export default getMessageInfo; diff --git a/app/views/RoomView/services/getMessages.js b/app/views/RoomView/services/getMessages.js new file mode 100644 index 00000000000..7e9c03de0cd --- /dev/null +++ b/app/views/RoomView/services/getMessages.js @@ -0,0 +1,10 @@ +import RocketChat from '../../../lib/rocketchat'; + +const getMessages = (room) => { + if (room.lastOpen) { + return RocketChat.loadMissedMessages(room); + } else { + return RocketChat.loadMessagesForRoom(room); + } +}; +export default getMessages; diff --git a/app/views/RoomView/services/getMoreMessages.js b/app/views/RoomView/services/getMoreMessages.js new file mode 100644 index 00000000000..6d16f69c2d3 --- /dev/null +++ b/app/views/RoomView/services/getMoreMessages.js @@ -0,0 +1,19 @@ +import { MESSAGE_TYPE_LOAD_MORE, MESSAGE_TYPE_LOAD_NEXT_CHUNK, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK } from '../../../constants/messageTypeLoad'; +import RocketChat from '../../../lib/rocketchat'; + +const getMoreMessages = ({ + rid, t, tmid, loaderItem +}) => { + if ([MESSAGE_TYPE_LOAD_MORE, MESSAGE_TYPE_LOAD_PREVIOUS_CHUNK].includes(loaderItem.t)) { + return RocketChat.loadMessagesForRoom({ + rid, t, latest: loaderItem.ts, loaderItem + }); + } + + if (loaderItem.t === MESSAGE_TYPE_LOAD_NEXT_CHUNK) { + return RocketChat.loadNextMessages({ + rid, tmid, ts: loaderItem.ts, loaderItem + }); + } +}; +export default getMoreMessages; diff --git a/app/views/RoomView/services/getThreadMessages.js b/app/views/RoomView/services/getThreadMessages.js new file mode 100644 index 00000000000..0f9529cfcc8 --- /dev/null +++ b/app/views/RoomView/services/getThreadMessages.js @@ -0,0 +1,6 @@ +import RocketChat from '../../../lib/rocketchat'; + +// unlike getMessages, sync isn't required for threads, because loadMissedMessages does it already +const getThreadMessages = (tmid, rid) => RocketChat.loadThreadMessages({ tmid, rid }); + +export default getThreadMessages; diff --git a/app/views/RoomView/services/index.js b/app/views/RoomView/services/index.js new file mode 100644 index 00000000000..f8799cda829 --- /dev/null +++ b/app/views/RoomView/services/index.js @@ -0,0 +1,13 @@ +import getMessages from './getMessages'; +import getMoreMessages from './getMoreMessages'; +import getThreadMessages from './getThreadMessages'; +import readMessages from './readMessages'; +import getMessageInfo from './getMessageInfo'; + +export default { + getMessages, + getMoreMessages, + getThreadMessages, + readMessages, + getMessageInfo +}; diff --git a/app/views/RoomView/services/readMessages.js b/app/views/RoomView/services/readMessages.js new file mode 100644 index 00000000000..060d9aa7e46 --- /dev/null +++ b/app/views/RoomView/services/readMessages.js @@ -0,0 +1,5 @@ +import RocketChat from '../../../lib/rocketchat'; + +const readMessages = (rid, newLastOpen) => RocketChat.readMessages(rid, newLastOpen, true); + +export default readMessages; diff --git a/app/views/RoomView/styles.js b/app/views/RoomView/styles.js index fdbb61a7b57..4f84d8f7a33 100644 --- a/app/views/RoomView/styles.js +++ b/app/views/RoomView/styles.js @@ -9,12 +9,6 @@ export default StyleSheet.create({ safeAreaView: { flex: 1 }, - list: { - flex: 1 - }, - contentContainer: { - paddingTop: 10 - }, readOnly: { justifyContent: 'flex-end', alignItems: 'center', diff --git a/app/views/SearchMessagesView/index.js b/app/views/SearchMessagesView/index.js index e11a5b83d34..09c9e6c15c8 100644 --- a/app/views/SearchMessagesView/index.js +++ b/app/views/SearchMessagesView/index.js @@ -23,6 +23,8 @@ import SafeAreaView from '../../containers/SafeAreaView'; import * as HeaderButton from '../../containers/HeaderButton'; import database from '../../lib/database'; import { sanitizeLikeString } from '../../lib/database/utils'; +import getThreadName from '../../lib/methods/getThreadName'; +import getRoomInfo from '../../lib/methods/getRoomInfo'; class SearchMessagesView extends React.Component { static navigationOptions = ({ navigation, route }) => { @@ -54,9 +56,14 @@ class SearchMessagesView extends React.Component { searchText: '' }; this.rid = props.route.params?.rid; + this.t = props.route.params?.t; this.encrypted = props.route.params?.encrypted; } + async componentDidMount() { + this.room = await getRoomInfo(this.rid); + } + shouldComponentUpdate(nextProps, nextState) { const { loading, searchText, messages } = this.state; const { theme } = this.props; @@ -126,6 +133,11 @@ class SearchMessagesView extends React.Component { return null; } + showAttachment = (attachment) => { + const { navigation } = this.props; + navigation.navigate('AttachmentView', { attachment }); + } + navToRoomInfo = (navParam) => { const { navigation, user } = this.props; if (navParam.rid === user.id) { @@ -134,6 +146,28 @@ class SearchMessagesView extends React.Component { navigation.navigate('RoomInfoView', navParam); } + jumpToMessage = async({ item }) => { + const { navigation } = this.props; + let params = { + rid: this.rid, + jumpToMessageId: item._id, + t: this.t, + room: this.room + }; + if (item.tmid) { + navigation.pop(); + params = { + ...params, + tmid: item.tmid, + name: await getThreadName(this.rid, item.tmid, item._id), + t: 'thread' + }; + navigation.push('RoomView', params); + } else { + navigation.navigate('RoomView', params); + } + } + renderEmpty = () => { const { theme } = this.props; return ( @@ -152,13 +186,16 @@ class SearchMessagesView extends React.Component { item={item} baseUrl={baseUrl} user={user} - timeFormat='LLL' + timeFormat='MMM Do YYYY, h:mm:ss a' isHeader - showAttachment={() => {}} + isThreadRoom + showAttachment={this.showAttachment} getCustomEmoji={this.getCustomEmoji} navToRoomInfo={this.navToRoomInfo} useRealName={useRealName} theme={theme} + onPress={() => this.jumpToMessage({ item })} + jumpToMessage={() => this.jumpToMessage({ item })} /> ); } diff --git a/storybook/stories/Message.js b/storybook/stories/Message.js index 82cfa1b0300..6d6d2b4f11a 100644 --- a/storybook/stories/Message.js +++ b/storybook/stories/Message.js @@ -40,7 +40,7 @@ const getCustomEmoji = (content) => { return customEmoji; }; -const messageDecorator = story => ( +export const MessageDecorator = story => ( <MessageContext.Provider value={{ user, @@ -60,7 +60,7 @@ const messageDecorator = story => ( </MessageContext.Provider> ); -const Message = props => ( +export const Message = props => ( <MessageComponent baseUrl={baseUrl} user={user} @@ -74,12 +74,14 @@ const Message = props => ( /> ); +export const StoryProvider = story => <Provider store={store}>{story()}</Provider>; +const MessageScrollView = story => <ScrollView style={{ backgroundColor: themes[_theme].backgroundColor }}>{story()}</ScrollView>; const stories = storiesOf('Message', module) - .addDecorator(story => <Provider store={store}>{story()}</Provider>) - .addDecorator(story => <ScrollView style={{ backgroundColor: themes[_theme].backgroundColor }}>{story()}</ScrollView>) - .addDecorator(messageDecorator); + .addDecorator(StoryProvider) + .addDecorator(MessageScrollView) + .addDecorator(MessageDecorator); stories.add('Basic', () => ( <> diff --git a/storybook/stories/index.js b/storybook/stories/index.js index 20bfc4f2598..b695d49d6f5 100644 --- a/storybook/stories/index.js +++ b/storybook/stories/index.js @@ -14,6 +14,7 @@ import '../../app/views/ThreadMessagesView/Item.stories.js'; import './Avatar'; import '../../app/containers/BackgroundContainer/index.stories.js'; import '../../app/containers/RoomHeader/RoomHeader.stories.js'; +import '../../app/views/RoomView/LoadMore/LoadMore.stories'; // Change here to see themed storybook export const theme = 'light'; From 6d3bcfbd67658abeb33c70bc2eb8e8b9cc2119c6 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Wed, 26 May 2021 16:32:30 -0300 Subject: [PATCH 122/177] [FIX] Method calls not sending date params as EJSON (#3159) --- app/lib/rocketchat.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 561e02c7340..c1a7655f486 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -945,7 +945,13 @@ const RocketChat = { if (API_Use_REST_For_DDP_Calls) { return this.post(`method.call/${ method }`, { message: EJSON.stringify({ method, params }) }); } - return this.methodCall(method, ...params); + const parsedParams = params.map((param) => { + if (param instanceof Date) { + return { $date: new Date(param).getTime() }; + } + return param; + }); + return this.methodCall(method, ...parsedParams); }, getUserRoles() { From 17c28e0b1b931b623ebb0127389fdf5e372ac270 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 26 May 2021 17:40:46 -0300 Subject: [PATCH 123/177] [FIX] Read receipt not displaying full date (#3133) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/ReadReceiptView/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/ReadReceiptView/index.js b/app/views/ReadReceiptView/index.js index f41d7c873eb..b413a76745d 100644 --- a/app/views/ReadReceiptView/index.js +++ b/app/views/ReadReceiptView/index.js @@ -30,7 +30,7 @@ class ReadReceiptView extends React.Component { static propTypes = { route: PropTypes.object, - Message_TimeFormat: PropTypes.string, + Message_TimeAndDateFormat: PropTypes.string, theme: PropTypes.string } @@ -94,8 +94,8 @@ class ReadReceiptView extends React.Component { } renderItem = ({ item }) => { - const { Message_TimeFormat, theme } = this.props; - const time = moment(item.ts).format(Message_TimeFormat); + const { theme, Message_TimeAndDateFormat } = this.props; + const time = moment(item.ts).format(Message_TimeAndDateFormat); if (!item?.user?.username) { return null; } @@ -156,7 +156,7 @@ class ReadReceiptView extends React.Component { } const mapStateToProps = state => ({ - Message_TimeFormat: state.settings.Message_TimeFormat + Message_TimeAndDateFormat: state.settings.Message_TimeAndDateFormat }); export default connect(mapStateToProps)(withTheme(ReadReceiptView)); From 6dcb9a51f182b76a0cac35ec74e244c529704a80 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 26 May 2021 17:01:06 -0400 Subject: [PATCH 124/177] [NEW] Remove member from team (#3117) * Added Create Team * Added actionTypes, actions, ENG strings for Teams and updated NewMessageView * Added createTeam sagas, createTeam reducer, new Team string and update CreateChannelView * Remove unnecessary actionTypes, reducers and sagas, e2e tests and navigation to team view * Minor tweaks * Show TeamChannelsView only if joined the team * Minor tweak * Added AddChannelTeamView * Added permissions, translations strings for teams, deleteTeamRoom and addTeamRooms, AddExistingChannelView, updated CreateChannelView, TeamChannelsView * Refactor touch component and update removeRoom and deleteRoom methods * Minor tweaks * Minor tweaks for removing channels and addExistingChannelView * Added missing events and fixed channels list * Minor tweaks for refactored touch component * Added SelectListView and logic for leaving team * Added addTeamMember and removeTeamMember * Minor tweak * Minor tweak * Minor tweaks * Remove unnecesary changes, update TeamChannelsView, AddExistingChannelView, AddChannelTeamView, createChannel, goRoom and Touchable * Remove unnecesary prop * Add screens to ModalStack, events, autoJoin, update createChannel, addRoomsToTeam and Touchable * Minor tweak * Update loadMessagesForRoom.js * Updated schema, tag component, touch, AddChannelTeamView, AddExistingChannelView, ActionSheet Item * Fix unnecessary changes * Add i18n, update createChannel, AddExistingChannelTeamView, AddChannelTeamView, RightButton and TeamChannelsView * Updated styles, added tag story * Minor tweak * Minor tweaks * Auto-join tweak * Minor tweaks * Minor tweak on search * Minor refactor to ListItem, add SelectListView to ModalStack, update handleLeaveTeam * Minor tweaks * Update SelectListView * Update handleLeaveTeam, remove unnecessary method, add story * Minor tweak * Minor visual tweaks * Update SelectListView.js * Update RoomMembersView * Updated SelectListView, RoomActionsView, leaveTeam method and string translations * Update SelectListVIew * Minor tweak * Update SelectListView * Minor tweak * Minor tweaks * Fix for List.Item subtitles being pushed down by title's flex * Minor tweaks * Update RoomActionsView * Use showConfirmationAlert and showErrorAlert * Remove addTeamMember, update removeTeamMember * Update Alert * Minor tweaks * Minor tweaks * Minor tweak * Update showActionSheet on RoomMembersView * Remove team main from query and move code around * Fetch roles * Update RoomMembersView and SelectListView * Updated leaveTeam and handleRemoveFromTeam * Fix validation * Remove unnecessary function * Added confirmationAlert for missing permissions case Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/en.json | 14 ++- app/lib/methods/getPermissions.js | 1 + app/lib/rocketchat.js | 12 ++ app/views/RoomActionsView/index.js | 24 ++-- app/views/RoomMembersView/index.js | 180 ++++++++++++++++++++++------- app/views/SelectListView.js | 15 +-- 6 files changed, 180 insertions(+), 66 deletions(-) diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 1648d3bf2ac..71403821ac9 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -683,12 +683,9 @@ "No_threads_following": "You are not following any threads", "No_threads_unread": "There are no unread threads", "Messagebox_Send_to_channel": "Send to channel", - "Set_as_leader": "Set as leader", - "Set_as_moderator": "Set as moderator", - "Set_as_owner": "Set as owner", - "Remove_as_leader": "Remove as leader", - "Remove_as_moderator": "Remove as moderator", - "Remove_as_owner": "Remove as owner", + "Leader": "Leader", + "Moderator": "Moderator", + "Owner": "Owner", "Remove_from_room": "Remove from room", "Ignore": "Ignore", "Unignore": "Unignore", @@ -732,9 +729,14 @@ "Leave_Team": "Leave Team", "Select_Team_Channels": "Select the Team's channels you would like to leave.", "Cannot_leave": "Cannot leave", + "Cannot_remove": "Cannot remove", "Last_owner_team_room": "You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.", "last-owner-can-not-be-removed": "Last owner cannot be removed", + "Removing_user_from_this_team": "You are removing {{user}} from this team", + "Remove_User_Team_Channels": "Select the channels you want the user to be removed from.", + "Remove_Member": "Remove Member", "leaving_team": "leaving team", + "removing_team": "removing from team", "member-does-not-exist": "Member does not exist", "Load_More": "Load More", "Load_Newer": "Load Newer", diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 1f4bcb9cb1c..cc1dd46e0e6 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -22,6 +22,7 @@ const PERMISSIONS = [ 'delete-p', 'edit-message', 'edit-room', + 'edit-team-member', 'edit-team-channel', 'force-delete-message', 'mute-user', diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index c1a7655f486..3660b31955b 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -778,10 +778,22 @@ const RocketChat = { // RC 3.13.0 return this.post('teams.leave', { teamName, rooms }); }, + removeTeamMember({ + teamId, teamName, userId, rooms + }) { + // RC 3.13.0 + return this.post('teams.removeMember', { + teamId, teamName, userId, rooms + }); + }, updateTeamRoom({ roomId, isDefault }) { // RC 3.13.0 return this.post('teams.updateRoom', { roomId, isDefault }); }, + teamListRoomsOfUser({ teamId, userId }) { + // RC 3.13.0 + return this.sdk.get('teams.listRoomsOfUser', { teamId, userId }); + }, joinRoom(roomId, joinCode, type) { // TODO: join code // RC 0.48.0 diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 3256dd0b976..89d34ed0747 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -5,7 +5,6 @@ import { } from 'react-native'; import { connect } from 'react-redux'; import isEmpty from 'lodash/isEmpty'; -import { Q } from '@nozbe/watermelondb'; import { compareServerVersion, methods } from '../../lib/utils'; import Touch from '../../utils/touch'; @@ -433,14 +432,15 @@ class RoomActionsView extends React.Component { const { navigation } = this.props; try { - const db = database.active; - const subCollection = db.get('subscriptions'); - const teamChannels = await subCollection.query( - Q.where('team_id', room.teamId), - Q.where('team_main', null) - ); - - if (teamChannels.length) { + const result = await RocketChat.teamListRoomsOfUser({ teamId: room.teamId, userId: room.u._id }); + + if (result.rooms?.length) { + const teamChannels = result.rooms.map(r => ({ + rid: r._id, + name: r.name, + teamId: r.teamId, + alert: r.isLastOwner + })); navigation.navigate('SelectListView', { title: 'Leave_Team', data: teamChannels, @@ -456,7 +456,11 @@ class RoomActionsView extends React.Component { }); } } catch (e) { - log(e); + showConfirmationAlert({ + message: I18n.t('You_are_leaving_the_team', { team: RocketChat.getRoomTitle(room) }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('leave') }), + onPress: () => this.handleLeaveTeam() + }); } } diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index 9a47b60f74b..59d298d94a7 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -23,9 +23,10 @@ import { withTheme } from '../../theme'; import { themes } from '../../constants/colors'; import { getUserSelector } from '../../selectors/login'; import { withActionSheet } from '../../containers/ActionSheet'; -import { showConfirmationAlert } from '../../utils/info'; +import { showConfirmationAlert, showErrorAlert } from '../../utils/info'; import SafeAreaView from '../../containers/SafeAreaView'; import { goRoom } from '../../utils/goRoom'; +import { CustomIcon } from '../../lib/Icons'; const PAGE_SIZE = 25; @@ -34,6 +35,9 @@ const PERMISSION_SET_LEADER = 'set-leader'; const PERMISSION_SET_OWNER = 'set-owner'; const PERMISSION_SET_MODERATOR = 'set-moderator'; const PERMISSION_REMOVE_USER = 'remove-user'; +const PERMISSION_EDIT_TEAM_MEMBER = 'edit-team-member'; +const PERMISION_VIEW_ALL_TEAMS = 'view-all-teams'; +const PERMISSION_VIEW_ALL_TEAM_CHANNELS = 'view-all-team-channels'; class RoomMembersView extends React.Component { static propTypes = { @@ -55,7 +59,10 @@ class RoomMembersView extends React.Component { setLeaderPermission: PropTypes.array, setOwnerPermission: PropTypes.array, setModeratorPermission: PropTypes.array, - removeUserPermission: PropTypes.array + removeUserPermission: PropTypes.array, + editTeamMemberPermission: PropTypes.array, + viewAllTeamChannelsPermission: PropTypes.array, + viewAllTeamsPermission: PropTypes.array } constructor(props) { @@ -94,10 +101,11 @@ class RoomMembersView extends React.Component { const { room } = this.state; const { - muteUserPermission, setLeaderPermission, setOwnerPermission, setModeratorPermission, removeUserPermission + muteUserPermission, setLeaderPermission, setOwnerPermission, setModeratorPermission, removeUserPermission, editTeamMemberPermission, viewAllTeamChannelsPermission, viewAllTeamsPermission } = this.props; + const result = await RocketChat.hasPermission([ - muteUserPermission, setLeaderPermission, setOwnerPermission, setModeratorPermission, removeUserPermission + muteUserPermission, setLeaderPermission, setOwnerPermission, setModeratorPermission, removeUserPermission, ...(room.teamMain ? [editTeamMemberPermission, viewAllTeamChannelsPermission, viewAllTeamsPermission] : []) ], room.rid); this.permissions = { @@ -105,7 +113,12 @@ class RoomMembersView extends React.Component { [PERMISSION_SET_LEADER]: result[1], [PERMISSION_SET_OWNER]: result[2], [PERMISSION_SET_MODERATOR]: result[3], - [PERMISSION_REMOVE_USER]: result[4] + [PERMISSION_REMOVE_USER]: result[4], + ...(room.teamMain ? { + [PERMISSION_EDIT_TEAM_MEMBER]: result[5], + [PERMISSION_VIEW_ALL_TEAM_CHANNELS]: result[6], + [PERMISION_VIEW_ALL_TEAMS]: result[7] + } : {}) }; const hasSinglePermission = Object.values(this.permissions).some(p => !!p); @@ -163,9 +176,80 @@ class RoomMembersView extends React.Component { } } + handleRemoveFromTeam = async(selectedUser) => { + try { + const { navigation } = this.props; + const { room } = this.state; + + const result = await RocketChat.teamListRoomsOfUser({ teamId: room.teamId, userId: selectedUser._id }); + + if (result.rooms?.length) { + const teamChannels = result.rooms.map(r => ({ + rid: r._id, + name: r.name, + teamId: r.teamId, + alert: r.isLastOwner + })); + navigation.navigate('SelectListView', { + title: 'Remove_Member', + infoText: 'Remove_User_Team_Channels', + data: teamChannels, + nextAction: selected => this.removeFromTeam(selectedUser, selected), + showAlert: () => showErrorAlert(I18n.t('Last_owner_team_room'), I18n.t('Cannot_remove')) + }); + } else { + showConfirmationAlert({ + message: I18n.t('Removing_user_from_this_team', { user: selectedUser.username }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('remove') }), + onPress: () => this.removeFromTeam(selectedUser) + }); + } + } catch (e) { + showConfirmationAlert({ + message: I18n.t('Removing_user_from_this_team', { user: selectedUser.username }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('remove') }), + onPress: () => this.removeFromTeam(selectedUser) + }); + } + } + + removeFromTeam = async(selectedUser, selected) => { + try { + const { members, membersFiltered, room } = this.state; + const { navigation } = this.props; + + const userId = selectedUser._id; + const result = await RocketChat.removeTeamMember({ + teamId: room.teamId, + teamName: room.name, + userId, + ...(selected && { rooms: selected }) + }); + if (result.success) { + const message = I18n.t('User_has_been_removed_from_s', { s: RocketChat.getRoomTitle(room) }); + EventEmitter.emit(LISTENER, { message }); + const newMembers = members.filter(member => member._id !== userId); + const newMembersFiltered = membersFiltered.filter(member => member._id !== userId); + this.setState({ + members: newMembers, + membersFiltered: newMembersFiltered + }); + navigation.navigate('RoomMembersView'); + } + } catch (e) { + log(e); + showErrorAlert( + e.data.error + ? I18n.t(e.data.error) + : I18n.t('There_was_an_error_while_action', { action: I18n.t('removing_team') }), + I18n.t('Cannot_remove') + ); + } + } + onPressUser = (selectedUser) => { const { room } = this.state; - const { showActionSheet, user } = this.props; + const { showActionSheet, user, theme } = this.props; const options = [{ icon: 'message', @@ -173,14 +257,45 @@ class RoomMembersView extends React.Component { onPress: () => this.navToDirectMessage(selectedUser) }]; + // Ignore + if (selectedUser._id !== user.id) { + const { ignored } = room; + const isIgnored = ignored?.includes?.(selectedUser._id); + options.push({ + icon: 'ignore', + title: I18n.t(isIgnored ? 'Unignore' : 'Ignore'), + onPress: () => this.handleIgnore(selectedUser, !isIgnored) + }); + } + + if (this.permissions['mute-user']) { + const { muted = [] } = room; + const userIsMuted = muted.find?.(m => m === selectedUser.username); + selectedUser.muted = !!userIsMuted; + options.push({ + icon: userIsMuted ? 'audio' : 'audio-disabled', + title: I18n.t(userIsMuted ? 'Unmute' : 'Mute'), + onPress: () => { + showConfirmationAlert({ + message: I18n.t(`The_user_${ userIsMuted ? 'will' : 'wont' }_be_able_to_type_in_roomName`, { + roomName: RocketChat.getRoomTitle(room) + }), + confirmationText: I18n.t(userIsMuted ? 'Unmute' : 'Mute'), + onPress: () => this.handleMute(selectedUser) + }); + } + }); + } + // Owner if (this.permissions['set-owner']) { const userRoleResult = this.roomRoles.find(r => r.u._id === selectedUser._id); const isOwner = userRoleResult?.roles.includes('owner'); options.push({ icon: 'shield-check', - title: I18n.t(isOwner ? 'Remove_as_owner' : 'Set_as_owner'), - onPress: () => this.handleOwner(selectedUser, !isOwner) + title: I18n.t('Owner'), + onPress: () => this.handleOwner(selectedUser, !isOwner), + right: () => <CustomIcon name={isOwner ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isOwner ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} /> }); } @@ -190,8 +305,9 @@ class RoomMembersView extends React.Component { const isLeader = userRoleResult?.roles.includes('leader'); options.push({ icon: 'shield-alt', - title: I18n.t(isLeader ? 'Remove_as_leader' : 'Set_as_leader'), - onPress: () => this.handleLeader(selectedUser, !isLeader) + title: I18n.t('Leader'), + onPress: () => this.handleLeader(selectedUser, !isLeader), + right: () => <CustomIcon name={isLeader ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isLeader ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} /> }); } @@ -201,43 +317,24 @@ class RoomMembersView extends React.Component { const isModerator = userRoleResult?.roles.includes('moderator'); options.push({ icon: 'shield', - title: I18n.t(isModerator ? 'Remove_as_moderator' : 'Set_as_moderator'), - onPress: () => this.handleModerator(selectedUser, !isModerator) + title: I18n.t('Moderator'), + onPress: () => this.handleModerator(selectedUser, !isModerator), + right: () => <CustomIcon name={isModerator ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isModerator ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} /> }); } - // Ignore - if (selectedUser._id !== user.id) { - const { ignored } = room; - const isIgnored = ignored?.includes?.(selectedUser._id); + // Remove from team + if (this.permissions['edit-team-member']) { options.push({ - icon: 'ignore', - title: I18n.t(isIgnored ? 'Unignore' : 'Ignore'), - onPress: () => this.handleIgnore(selectedUser, !isIgnored) - }); - } - - if (this.permissions['mute-user']) { - const { muted = [] } = room; - const userIsMuted = muted.find?.(m => m === selectedUser.username); - selectedUser.muted = !!userIsMuted; - options.push({ - icon: userIsMuted ? 'audio' : 'audio-disabled', - title: I18n.t(userIsMuted ? 'Unmute' : 'Mute'), - onPress: () => { - showConfirmationAlert({ - message: I18n.t(`The_user_${ userIsMuted ? 'will' : 'wont' }_be_able_to_type_in_roomName`, { - roomName: RocketChat.getRoomTitle(room) - }), - confirmationText: I18n.t(userIsMuted ? 'Unmute' : 'Mute'), - onPress: () => this.handleMute(selectedUser) - }); - } + icon: 'logout', + danger: true, + title: I18n.t('Remove_from_Team'), + onPress: () => this.handleRemoveFromTeam(selectedUser) }); } // Remove from room - if (this.permissions['remove-user']) { + if (this.permissions['remove-user'] && !room.teamMain) { options.push({ icon: 'logout', title: I18n.t('Remove_from_room'), @@ -477,7 +574,10 @@ const mapStateToProps = state => ({ setLeaderPermission: state.permissions[PERMISSION_SET_LEADER], setOwnerPermission: state.permissions[PERMISSION_SET_OWNER], setModeratorPermission: state.permissions[PERMISSION_SET_MODERATOR], - removeUserPermission: state.permissions[PERMISSION_REMOVE_USER] + removeUserPermission: state.permissions[PERMISSION_REMOVE_USER], + editTeamMemberPermission: state.permissions[PERMISSION_EDIT_TEAM_MEMBER], + viewAllTeamChannelsPermission: state.permissions[PERMISSION_VIEW_ALL_TEAM_CHANNELS], + viewAllTeamsPermission: state.permissions[PERMISION_VIEW_ALL_TEAMS] }); export default connect(mapStateToProps)(withActionSheet(withTheme(RoomMembersView))); diff --git a/app/views/SelectListView.js b/app/views/SelectListView.js index 9c886da8042..bcbb0923f7f 100644 --- a/app/views/SelectListView.js +++ b/app/views/SelectListView.js @@ -14,7 +14,6 @@ import { themes } from '../constants/colors'; import { withTheme } from '../theme'; import SafeAreaView from '../containers/SafeAreaView'; import { animateNextTransition } from '../utils/layoutAnimation'; -import Loading from '../containers/Loading'; const styles = StyleSheet.create({ buttonText: { @@ -41,8 +40,7 @@ class SelectListView extends React.Component { this.showAlert = props.route?.params?.showAlert; this.state = { data, - selected: [], - loading: false + selected: [] }; this.setHeader(); } @@ -96,10 +94,8 @@ class SelectListView extends React.Component { renderItem = ({ item }) => { const { theme } = this.props; - const alert = item.roles.length; - const icon = item.t === 'p' ? 'channel-private' : 'channel-public'; - const checked = this.isChecked(item.rid, item.roles) ? 'check' : null; + const checked = this.isChecked(item.rid) ? 'check' : null; return ( <> @@ -108,8 +104,8 @@ class SelectListView extends React.Component { title={item.name} translateTitle={false} testID={`select-list-view-item-${ item.name }`} - onPress={() => (alert ? this.showAlert() : this.toggleItem(item.rid))} - alert={alert} + onPress={() => (item.alert ? this.showAlert() : this.toggleItem(item.rid))} + alert={item.alert} left={() => <List.Icon name={icon} color={themes[theme].controlText} />} right={() => (checked ? <List.Icon name={checked} color={themes[theme].actionTintColor} /> : null)} /> @@ -118,7 +114,7 @@ class SelectListView extends React.Component { } render() { - const { loading, data } = this.state; + const { data } = this.state; const { theme } = this.props; return ( @@ -133,7 +129,6 @@ class SelectListView extends React.Component { contentContainerStyle={{ backgroundColor: themes[theme].backgroundColor }} keyboardShouldPersistTaps='always' /> - <Loading visible={loading} /> </SafeAreaView> ); } From 5c4772427a9d9195ba1bce2597168baaf41ee1e2 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 26 May 2021 18:10:20 -0300 Subject: [PATCH 125/177] [FIX] Add Existing Channel screen showing discussions and channels without permission (#3151) * [Fix] the filter to show the existing channel * [Refactor] the function that filter to isolate it * Refactor how to wsearch properly Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/AddExistingChannelView.js | 46 ++++++++++++++++------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/app/views/AddExistingChannelView.js b/app/views/AddExistingChannelView.js index a3acf9e239f..03cfaa4f1f1 100644 --- a/app/views/AddExistingChannelView.js +++ b/app/views/AddExistingChannelView.js @@ -17,9 +17,10 @@ import StatusBar from '../containers/StatusBar'; import { themes } from '../constants/colors'; import { withTheme } from '../theme'; import SafeAreaView from '../containers/SafeAreaView'; +import Loading from '../containers/Loading'; import { animateNextTransition } from '../utils/layoutAnimation'; import { goRoom } from '../utils/goRoom'; -import Loading from '../containers/Loading'; +import debounce from '../utils/debounce'; const QUERY_SIZE = 50; @@ -34,7 +35,7 @@ class AddExistingChannelView extends React.Component { constructor(props) { super(props); - this.init(); + this.query(); this.teamId = props.route?.params?.teamId; this.state = { search: [], @@ -66,7 +67,7 @@ class AddExistingChannelView extends React.Component { navigation.setOptions(options); } - init = async() => { + query = async(stringToSearch = '') => { try { const { addTeamChannelPermission } = this.props; const db = database.active; @@ -75,39 +76,42 @@ class AddExistingChannelView extends React.Component { .query( Q.where('team_id', ''), Q.where('t', Q.oneOf(['c', 'p'])), + Q.where('name', Q.like(`%${ stringToSearch }%`)), Q.experimentalTake(QUERY_SIZE), Q.experimentalSortBy('room_updated_at', Q.desc) ) .fetch(); - const filteredChannels = channels.filter(async(channel) => { - const permissions = await RocketChat.hasPermission([addTeamChannelPermission], channel.rid); - if (!permissions[0]) { - return; - } - return channel; - }); - this.setState({ channels: filteredChannels }); + + const asyncFilter = async(channelsArray) => { + const results = await Promise.all(channelsArray.map(async(channel) => { + if (channel.prid) { + return false; + } + const permissions = await RocketChat.hasPermission([addTeamChannelPermission], channel.rid); + if (!permissions[0]) { + return false; + } + return true; + })); + + return channelsArray.filter((_v, index) => results[index]); + }; + const channelFiltered = await asyncFilter(channels); + this.setState({ channels: channelFiltered }); } catch (e) { log(e); } } - onSearchChangeText(text) { - this.search(text); - } + onSearchChangeText = debounce((text) => { + this.query(text); + }, 300) dismiss = () => { const { navigation } = this.props; return navigation.pop(); } - search = async(text) => { - const result = await RocketChat.search({ text, filterUsers: false }); - this.setState({ - search: result - }); - } - submit = async() => { const { selected } = this.state; const { isMasterDetail } = this.props; From c10bd5fd9332bcb76f6e04e3eaa088149fa25837 Mon Sep 17 00:00:00 2001 From: Arkadyuti Bandyopadhyay <bandyopadhyayarkadyuti@gmail.com> Date: Thu, 27 May 2021 02:44:42 +0530 Subject: [PATCH 126/177] [FIX] Member search not trimming search text (#3129) * Fixed logout toast bug for the iOS * Removing callToAction and replacing with confirmationText * Handling member search with spaces to the left and right of name/username * Changing location of string trimmer Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomMembersView/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index 59d298d94a7..5819cf5126f 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -150,6 +150,7 @@ class RoomMembersView extends React.Component { onSearchChangeText = protectedFunction((text) => { const { members } = this.state; let membersFiltered = []; + text = text.trim(); if (members && members.length > 0 && text) { membersFiltered = members.filter(m => m.username.toLowerCase().match(text.toLowerCase()) || m.name.toLowerCase().match(text.toLowerCase())); From 0bbeb422711c71e35e0c74b8ac1c3a0f157579ee Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 27 May 2021 14:23:17 -0300 Subject: [PATCH 127/177] [FIX] Discussions not subscribing properly to messages when opened from inside the room (#3149) * [FIX] Promise at subscription Room * E2E - Update previous roomView count after send msg in discussion * Not needed rn Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/lib/methods/subscriptions/room.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/methods/subscriptions/room.js b/app/lib/methods/subscriptions/room.js index 885c2469ab6..2d9ba8f9091 100644 --- a/app/lib/methods/subscriptions/room.js +++ b/app/lib/methods/subscriptions/room.js @@ -159,7 +159,7 @@ export default class RoomSubscription { updateMessage = message => ( new Promise(async(resolve) => { if (this.rid !== message.rid) { - return; + return resolve(); } const db = database.active; From 981b3688f1912d5c8b41567f34687769a34c1b68 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 27 May 2021 14:27:24 -0300 Subject: [PATCH 128/177] [FIX] Team creation not raising error if something unexpected happens (#3152) * [IMPROVEMENT] Add error to AddExistingChannel * Fix the alert error when create a channel * Fix the error alert box when create channel and teams Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/actions/createChannel.js | 5 +++-- app/i18n/locales/en.json | 1 + app/i18n/locales/pt-BR.json | 3 ++- app/sagas/createChannel.js | 8 ++++---- app/views/AddExistingChannelView.js | 2 ++ 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/actions/createChannel.js b/app/actions/createChannel.js index 60a8cca3047..c93b47ef445 100644 --- a/app/actions/createChannel.js +++ b/app/actions/createChannel.js @@ -14,9 +14,10 @@ export function createChannelSuccess(data) { }; } -export function createChannelFailure(err) { +export function createChannelFailure(err, isTeam) { return { type: types.CREATE_CHANNEL.FAILURE, - err + err, + isTeam }; } diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 71403821ac9..76d60f21fe5 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -61,6 +61,7 @@ "error-message-editing-blocked": "Message editing is blocked", "error-message-size-exceeded": "Message size exceeds Message_MaxAllowedSize", "error-missing-unsubscribe-link": "You must provide the [unsubscribe] link.", + "error-no-owner-channel":"You don't own the channel", "error-no-tokens-for-this-user": "There are no tokens for this user", "error-not-allowed": "Not allowed", "error-not-authorized": "Not authorized", diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 64369e78110..7eca8b04989 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -667,5 +667,6 @@ "Teams": "Times", "No_team_channels_found": "Nenhum canal encontrado", "Team_not_found": "Time não encontrado", - "Private_Team": "Equipe Privada" + "Private_Team": "Equipe Privada", + "Add_Existing_Channel": "Adicionar Canal Existente" } \ No newline at end of file diff --git a/app/sagas/createChannel.js b/app/sagas/createChannel.js index 8979e230eb3..a768916c8be 100644 --- a/app/sagas/createChannel.js +++ b/app/sagas/createChannel.js @@ -96,7 +96,7 @@ const handleRequest = function* handleRequest({ data }) { yield put(createChannelSuccess(sub)); } catch (err) { logEvent(events[data.group ? 'SELECTED_USERS_CREATE_GROUP_F' : 'CR_CREATE_F']); - yield put(createChannelFailure(err)); + yield put(createChannelFailure(err, data.isTeam)); } }; @@ -108,10 +108,10 @@ const handleSuccess = function* handleSuccess({ data }) { goRoom({ item: data, isMasterDetail }); }; -const handleFailure = function handleFailure({ err }) { +const handleFailure = function handleFailure({ err, isTeam }) { setTimeout(() => { - const msg = err.data ? I18n.t(err.data.error) : err.reason || I18n.t('There_was_an_error_while_action', { action: I18n.t('creating_channel') }); - showErrorAlert(msg); + const msg = err.data.errorType ? I18n.t(err.data.errorType, { room_name: err.data.details.channel_name }) : err.reason || I18n.t('There_was_an_error_while_action', { action: isTeam ? I18n.t('creating_team') : I18n.t('creating_channel') }); + showErrorAlert(msg, isTeam ? I18n.t('Create_Team') : I18n.t('Create_Channel')); }, 300); }; diff --git a/app/views/AddExistingChannelView.js b/app/views/AddExistingChannelView.js index 03cfaa4f1f1..c1c94fec82a 100644 --- a/app/views/AddExistingChannelView.js +++ b/app/views/AddExistingChannelView.js @@ -20,6 +20,7 @@ import SafeAreaView from '../containers/SafeAreaView'; import Loading from '../containers/Loading'; import { animateNextTransition } from '../utils/layoutAnimation'; import { goRoom } from '../utils/goRoom'; +import { showErrorAlert } from '../utils/info'; import debounce from '../utils/debounce'; const QUERY_SIZE = 50; @@ -125,6 +126,7 @@ class AddExistingChannelView extends React.Component { goRoom({ item: result, isMasterDetail }); } } catch (e) { + showErrorAlert(I18n.t(e.data.error), I18n.t('Add_Existing_Channel'), () => {}); logEvent(events.CT_ADD_ROOM_TO_TEAM_F); this.setState({ loading: false }); } From 6e32d1dc6c699f83ff1f31732d401cc6a7cda7a9 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 27 May 2021 15:07:21 -0300 Subject: [PATCH 129/177] [FIX] Check permissions on team channels action sheet (#3155) * [IMPROVEMENT] Show only the option that user can manage in TeamChannelsView * Refactor the showActionSheet function * Added remove team channel permission * Cleanup Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/TeamChannelsView.js | 87 ++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index 03398edc90a..1d4b09246a0 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -32,6 +32,12 @@ import { CustomIcon } from '../lib/Icons'; import { themes } from '../constants/colors'; const API_FETCH_COUNT = 25; +const PERMISSION_DELETE_C = 'delete-c'; +const PERMISSION_DELETE_P = 'delete-p'; +const PERMISSION_EDIT_TEAM_CHANNEL = 'edit-team-channel'; +const PERMISSION_REMOVE_TEAM_CHANNEL = 'remove-team-channel'; +const PERMISSION_ADD_TEAM_CHANNEL = 'add-team-channel'; + const getItemLayout = (data, index) => ({ length: data.length, @@ -51,7 +57,10 @@ class TeamChannelsView extends React.Component { width: PropTypes.number, StoreLastMessage: PropTypes.bool, addTeamChannelPermission: PropTypes.array, + editTeamChannelPermission: PropTypes.array, removeTeamChannelPermission: PropTypes.array, + deleteCPermission: PropTypes.array, + deletePPermission: PropTypes.array, showActionSheet: PropTypes.func, deleteRoom: PropTypes.func } @@ -291,33 +300,6 @@ class TeamChannelsView extends React.Component { } }, 1000, true); - options = (item) => { - const { theme } = this.props; - const isAutoJoinChecked = item.teamDefault; - const autoJoinIcon = isAutoJoinChecked ? 'checkbox-checked' : 'checkbox-unchecked'; - const autoJoinIconColor = isAutoJoinChecked ? themes[theme].tintActive : themes[theme].auxiliaryTintColor; - return ([ - { - title: I18n.t('Auto-join'), - icon: item.t === 'p' ? 'channel-private' : 'channel-public', - onPress: () => this.toggleAutoJoin(item), - right: () => <CustomIcon name={autoJoinIcon} size={20} color={autoJoinIconColor} /> - }, - { - title: I18n.t('Remove_from_Team'), - icon: 'close', - danger: true, - onPress: () => this.remove(item) - }, - { - title: I18n.t('Delete'), - icon: 'delete', - danger: true, - onPress: () => this.delete(item) - } - ]); - } - toggleAutoJoin = async(item) => { try { const { data } = this.state; @@ -391,13 +373,49 @@ class TeamChannelsView extends React.Component { showChannelActions = async(item) => { logEvent(events.ROOM_SHOW_BOX_ACTIONS); - const { showActionSheet, removeTeamChannelPermission } = this.props; + const { + showActionSheet, editTeamChannelPermission, deleteCPermission, deletePPermission, theme, removeTeamChannelPermission + } = this.props; + const isAutoJoinChecked = item.teamDefault; + const autoJoinIcon = isAutoJoinChecked ? 'checkbox-checked' : 'checkbox-unchecked'; + const autoJoinIconColor = isAutoJoinChecked ? themes[theme].tintActive : themes[theme].auxiliaryTintColor; + + const options = []; + + const permissionsTeam = await RocketChat.hasPermission([editTeamChannelPermission], this.team.rid); + if (permissionsTeam[0]) { + options.push({ + title: I18n.t('Auto-join'), + icon: item.t === 'p' ? 'channel-private' : 'channel-public', + onPress: () => this.toggleAutoJoin(item), + right: () => <CustomIcon name={autoJoinIcon} size={20} color={autoJoinIconColor} /> + }); + } + + const permissionsRemoveTeam = await RocketChat.hasPermission([removeTeamChannelPermission], this.team.rid); + if (permissionsRemoveTeam[0]) { + options.push({ + title: I18n.t('Remove_from_Team'), + icon: 'close', + danger: true, + onPress: () => this.remove(item) + }); + } + + const permissionsChannel = await RocketChat.hasPermission([item.t === 'c' ? deleteCPermission : deletePPermission], item._id); + if (permissionsChannel[0]) { + options.push({ + title: I18n.t('Delete'), + icon: 'delete', + danger: true, + onPress: () => this.delete(item) + }); + } - const permissions = await RocketChat.hasPermission([removeTeamChannelPermission], this.team.rid); - if (!permissions[0]) { + if (options.length === 0) { return; } - showActionSheet({ options: this.options(item) }); + showActionSheet({ options }); } renderItem = ({ item }) => { @@ -481,8 +499,11 @@ const mapStateToProps = state => ({ useRealName: state.settings.UI_Use_Real_Name, isMasterDetail: state.app.isMasterDetail, StoreLastMessage: state.settings.Store_Last_Message, - addTeamChannelPermission: state.permissions['add-team-channel'], - removeTeamChannelPermission: state.permissions['remove-team-channel'] + addTeamChannelPermission: state.permissions[PERMISSION_ADD_TEAM_CHANNEL], + editTeamChannelPermission: state.permissions[PERMISSION_EDIT_TEAM_CHANNEL], + removeTeamChannelPermission: state.permissions[PERMISSION_REMOVE_TEAM_CHANNEL], + deleteCPermission: state.permissions[PERMISSION_DELETE_C], + deletePPermission: state.permissions[PERMISSION_DELETE_P] }); const mapDispatchToProps = dispatch => ({ From 5697a136c23c3ae03d31fa40cf9dda1e98d1c95c Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 27 May 2021 17:41:33 -0300 Subject: [PATCH 130/177] [FIX] Add channels to team's flow using different navigators (#3157) * [FIX] the navigation to AddChannelTeamView and next screens * Fix the order inside the NewMessageStackNavigator * Delete spaces after arrow function in onPress * Adjusted InsideStackNavigator to a conditional animation * Fixed route for iPad * Small change Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/stacks/InsideStack.js | 5 +++++ app/views/AddChannelTeamView.js | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/stacks/InsideStack.js b/app/stacks/InsideStack.js index 18517368c7b..83fc22240b1 100644 --- a/app/stacks/InsideStack.js +++ b/app/stacks/InsideStack.js @@ -182,6 +182,11 @@ const ChatsStackNavigator = () => { component={TeamChannelsView} options={TeamChannelsView.navigationOptions} /> + <ChatsStack.Screen + name='CreateChannelView' + component={CreateChannelView} + options={CreateChannelView.navigationOptions} + /> <ChatsStack.Screen name='AddChannelTeamView' component={AddChannelTeamView} diff --git a/app/views/AddChannelTeamView.js b/app/views/AddChannelTeamView.js index 229e0045723..fdb166caf17 100644 --- a/app/views/AddChannelTeamView.js +++ b/app/views/AddChannelTeamView.js @@ -38,7 +38,10 @@ const AddChannelTeamView = ({ <List.Separator /> <List.Item title='Create_New' - onPress={() => navigation.navigate('NewMessageStackNavigator', { screen: 'SelectedUsersViewCreateChannel', params: { nextAction: () => navigation.navigate('CreateChannelView', { teamId }) } })} + onPress={() => (isMasterDetail + ? navigation.navigate('SelectedUsersViewCreateChannel', { nextAction: () => navigation.navigate('CreateChannelView', { teamId }) }) + : navigation.navigate('SelectedUsersView', { nextAction: () => navigation.navigate('ChatsStackNavigator', { screen: 'CreateChannelView', params: { teamId } }) })) + } testID='add-channel-team-view-create-channel' left={() => <List.Icon name='team' />} right={() => <List.Icon name='chevron-right' />} From b833a2f8aaf4ced12d18cbe7b48552fe77db7137 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 27 May 2021 17:44:35 -0300 Subject: [PATCH 131/177] [IMPROVEMENT] Allow discussions to be edited (#3137) * Refactored the filter to work the edit for channel and discussion * Removed the filter which type of room can be edit Co-authored-by: Diego Mello <diegolmello@gmail.com> * Fix tests Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomInfoView/index.js | 2 +- e2e/tests/room/04-discussion.spec.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index a49aab5b15d..93a7e3a16fe 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -214,7 +214,7 @@ class RoomInfoView extends React.Component { } const permissions = await RocketChat.hasPermission([editRoomPermission], room.rid); - if (permissions[0] && !room.prid) { + if (permissions[0]) { this.setState({ showEdit: true }, () => this.setHeader()); } } diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js index 0a0bc8e755f..e5705b26bec 100644 --- a/e2e/tests/room/04-discussion.spec.js +++ b/e2e/tests/room/04-discussion.spec.js @@ -131,8 +131,8 @@ describe('Discussion', () => { await expect(element(by.id('room-info-view'))).toExist(); }); - it('should not have edit button', async() => { - await expect(element(by.id('room-info-view-edit-button'))).toBeNotVisible(); + it('should have edit button', async() => { + await expect(element(by.id('room-info-view-edit-button'))).toBeVisible(); }); }); }); From 69c39b14af42ea95ad4d48626eb872512025ddb4 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Fri, 28 May 2021 10:22:41 -0400 Subject: [PATCH 132/177] [NEW] Delete Teams (#3123) * Added Create Team * Added actionTypes, actions, ENG strings for Teams and updated NewMessageView * Added createTeam sagas, createTeam reducer, new Team string and update CreateChannelView * Remove unnecessary actionTypes, reducers and sagas, e2e tests and navigation to team view * Minor tweaks * Show TeamChannelsView only if joined the team * Minor tweak * Added AddChannelTeamView * Added permissions, translations strings for teams, deleteTeamRoom and addTeamRooms, AddExistingChannelView, updated CreateChannelView, TeamChannelsView * Refactor touch component and update removeRoom and deleteRoom methods * Minor tweaks * Minor tweaks for removing channels and addExistingChannelView * Added missing events and fixed channels list * Minor tweaks for refactored touch component * Added SelectListView and logic for leaving team * Added addTeamMember and removeTeamMember * Minor tweak * Added deleteTeam function * Minor tweak * Minor tweaks * Remove unnecesary changes, update TeamChannelsView, AddExistingChannelView, AddChannelTeamView, createChannel, goRoom and Touchable * Remove unnecesary prop * Add screens to ModalStack, events, autoJoin, update createChannel, addRoomsToTeam and Touchable * Minor tweak * Update loadMessagesForRoom.js * Updated schema, tag component, touch, AddChannelTeamView, AddExistingChannelView, ActionSheet Item * Fix unnecessary changes * Add i18n, update createChannel, AddExistingChannelTeamView, AddChannelTeamView, RightButton and TeamChannelsView * Updated styles, added tag story * Minor tweak * Minor tweaks * Auto-join tweak * Minor tweaks * Minor tweak on search * Minor refactor to ListItem, add SelectListView to ModalStack, update handleLeaveTeam * Minor tweaks * Update SelectListView * Update handleLeaveTeam, remove unnecessary method, add story * Minor tweak * Minor visual tweaks * Update SelectListView.js * Update index.js * Update RoomMembersView * Updated SelectListView, RoomActionsView, leaveTeam method and string translations * Update SelectListVIew * Minor tweak * Update SelectListView * Minor tweak * Minor tweaks * Fix for List.Item subtitles being pushed down by title's flex * Minor tweaks * Update RoomActionsView * Use showConfirmationAlert and showErrorAlert * Remove addTeamMember, update removeTeamMember * Update Alert * Minor tweaks * Minor tweaks * Minor tweak * Update showActionSheet on RoomMembersView * Remove team main from query and move code around * Fetch roles * Update RoomMembersView and SelectListView * Update rocketchat.js * Updated leaveTeam and handleRemoveFromTeam * Fix validation * Remove unnecessary function * Update RoomActionsView * Update en.json * updated deleteTeam function and permissions * Added showConfirmationAlert * Added string translations for teams * Fix permission * Minor tweaks * Typo Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/en.json | 11 ++- app/lib/methods/getPermissions.js | 1 + app/lib/rocketchat.js | 4 + app/views/RoomInfoEditView/index.js | 111 ++++++++++++++++++++++++---- app/views/TeamChannelsView.js | 2 +- 5 files changed, 113 insertions(+), 16 deletions(-) diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 76d60f21fe5..29a3b2422f0 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -91,6 +91,7 @@ "alert": "alert", "alerts": "alerts", "All_users_in_the_channel_can_write_new_messages": "All users in the channel can write new messages", + "All_users_in_the_team_can_write_new_messages": "All users in the team can write new messages", "A_meaningful_name_for_the_discussion_room": "A meaningful name for the discussion room", "All": "All", "All_Messages": "All Messages", @@ -226,6 +227,7 @@ "Encryption_error_title": "Your encryption password seems wrong", "Encryption_error_desc": "It wasn't possible to decode your encryption key to be imported.", "Everyone_can_access_this_channel": "Everyone can access this channel", + "Everyone_can_access_this_team": "Everyone can access this team", "Error_uploading": "Error uploading", "Expiration_Days": "Expiration (Days)", "Favorite": "Favorite", @@ -287,6 +289,7 @@ "Join_our_open_workspace": "Join our open workspace", "Join_your_workspace": "Join your workspace", "Just_invited_people_can_access_this_channel": "Just invited people can access this channel", + "Just_invited_people_can_access_this_team": "Just invited people can access this team", "Language": "Language", "last_message": "last message", "Leave_channel": "Leave channel", @@ -723,7 +726,7 @@ "Add_Existing_Channel": "Add Existing Channel", "Remove_from_Team": "Remove from Team", "Auto-join": "Auto-join", - "Delete_Team_Room_Warning": "Woud you like to remove this channel from the team? The channel will be moved back to the workspace", + "Remove_Team_Room_Warning": "Woud you like to remove this channel from the team? The channel will be moved back to the workspace", "Confirmation": "Confirmation", "invalid-room": "Invalid room", "You_are_leaving_the_team": "You are leaving the team '{{team}}'", @@ -731,13 +734,19 @@ "Select_Team_Channels": "Select the Team's channels you would like to leave.", "Cannot_leave": "Cannot leave", "Cannot_remove": "Cannot remove", + "Cannot_delete": "Cannot delete", "Last_owner_team_room": "You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.", "last-owner-can-not-be-removed": "Last owner cannot be removed", + "Remove_User_Teams": "Select channels you want the user to be removed from.", + "Delete_Team": "Delete Team", + "Select_channels_to_delete": "This can't be undone. Once you delete a team, all chat content and configuration will be deleted. \n\nSelect the channels you would like to delete. The ones you decide to keep will be available on your workspace. Notice that public channels will still be public and visible to everyone.", + "You_are_deleting_the_team": "You are deleting this team.", "Removing_user_from_this_team": "You are removing {{user}} from this team", "Remove_User_Team_Channels": "Select the channels you want the user to be removed from.", "Remove_Member": "Remove Member", "leaving_team": "leaving team", "removing_team": "removing from team", + "deleting_team": "deleting team", "member-does-not-exist": "Member does not exist", "Load_More": "Load More", "Load_Newer": "Load Newer", diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index cc1dd46e0e6..99a18a6c089 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -20,6 +20,7 @@ const PERMISSIONS = [ 'delete-c', 'delete-message', 'delete-p', + 'delete-team', 'edit-message', 'edit-room', 'edit-team-member', diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 3660b31955b..4774b427225 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -790,6 +790,10 @@ const RocketChat = { // RC 3.13.0 return this.post('teams.updateRoom', { roomId, isDefault }); }, + deleteTeam({ teamId, roomsToRemove }) { + // RC 3.13.0 + return this.post('teams.delete', { teamId, roomsToRemove }); + }, teamListRoomsOfUser({ teamId, userId }) { // RC 3.13.0 return this.sdk.get('teams.listRoomsOfUser', { teamId, userId }); diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index 7552b093ad2..90d8b28f5e2 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -8,15 +8,16 @@ import { BLOCK_CONTEXT } from '@rocket.chat/ui-kit'; import ImagePicker from 'react-native-image-crop-picker'; import { dequal } from 'dequal'; import isEmpty from 'lodash/isEmpty'; -import { compareServerVersion, methods } from '../../lib/utils'; +import { Q } from '@nozbe/watermelondb'; +import { compareServerVersion, methods } from '../../lib/utils'; import database from '../../lib/database'; import { deleteRoom as deleteRoomAction } from '../../actions/room'; import KeyboardView from '../../presentation/KeyboardView'; import sharedStyles from '../Styles'; import styles from './styles'; import scrollPersistTaps from '../../utils/scrollPersistTaps'; -import { showErrorAlert } from '../../utils/info'; +import { showConfirmationAlert, showErrorAlert } from '../../utils/info'; import { LISTENER } from '../../containers/Toast'; import EventEmitter from '../../utils/events'; import RocketChat from '../../lib/rocketchat'; @@ -41,6 +42,7 @@ const PERMISSION_ARCHIVE = 'archive-room'; const PERMISSION_UNARCHIVE = 'unarchive-room'; const PERMISSION_DELETE_C = 'delete-c'; const PERMISSION_DELETE_P = 'delete-p'; +const PERMISSION_DELETE_TEAM = 'delete-team'; class RoomInfoEditView extends React.Component { static navigationOptions = () => ({ @@ -48,6 +50,7 @@ class RoomInfoEditView extends React.Component { }) static propTypes = { + navigation: PropTypes.object, route: PropTypes.object, deleteRoom: PropTypes.func, serverVersion: PropTypes.string, @@ -58,7 +61,9 @@ class RoomInfoEditView extends React.Component { archiveRoomPermission: PropTypes.array, unarchiveRoomPermission: PropTypes.array, deleteCPermission: PropTypes.array, - deletePPermission: PropTypes.array + deletePPermission: PropTypes.array, + deleteTeamPermission: PropTypes.array, + isMasterDetail: PropTypes.bool }; constructor(props) { @@ -100,7 +105,8 @@ class RoomInfoEditView extends React.Component { archiveRoomPermission, unarchiveRoomPermission, deleteCPermission, - deletePPermission + deletePPermission, + deleteTeamPermission } = this.props; const rid = route.params?.rid; if (!rid) { @@ -122,7 +128,8 @@ class RoomInfoEditView extends React.Component { archiveRoomPermission, unarchiveRoomPermission, deleteCPermission, - deletePPermission + deletePPermission, + ...(this.room.teamMain ? [deleteTeamPermission] : []) ], rid); this.setState({ @@ -132,7 +139,8 @@ class RoomInfoEditView extends React.Component { [PERMISSION_ARCHIVE]: result[2], [PERMISSION_UNARCHIVE]: result[3], [PERMISSION_DELETE_C]: result[4], - [PERMISSION_DELETE_P]: result[5] + [PERMISSION_DELETE_P]: result[5], + ...(this.room.teamMain && { [PERMISSION_DELETE_TEAM]: result[6] }) } }); } catch (e) { @@ -284,6 +292,72 @@ class RoomInfoEditView extends React.Component { }, 100); } + handleDeleteTeam = async(selected) => { + const { navigation, isMasterDetail } = this.props; + const { room } = this.state; + try { + const result = await RocketChat.deleteTeam({ teamId: room.teamId, ...(selected && { roomsToRemove: selected }) }); + if (result.success) { + if (isMasterDetail) { + navigation.navigate('DrawerNavigator'); + } else { + navigation.navigate('RoomsListView'); + } + } + } catch (e) { + log(e); + showErrorAlert( + e.data.error + ? I18n.t(e.data.error) + : I18n.t('There_was_an_error_while_action', { action: I18n.t('deleting_team') }), + I18n.t('Cannot_delete') + ); + } + } + + deleteTeam = async() => { + const { room } = this.state; + const { navigation } = this.props; + + try { + const db = database.active; + const subCollection = db.get('subscriptions'); + const teamChannels = await subCollection.query( + Q.where('team_id', room.teamId), + Q.where('team_main', null) + ); + + if (teamChannels.length) { + navigation.navigate('SelectListView', { + title: 'Delete_Team', + data: teamChannels, + infoText: 'Select_channels_to_delete', + nextAction: (selected) => { + showConfirmationAlert({ + message: I18n.t('You_are_deleting_the_team', { team: RocketChat.getRoomTitle(room) }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('delete') }), + onPress: () => this.handleDeleteTeam(selected) + }); + } + }); + } else { + showConfirmationAlert({ + message: I18n.t('You_are_deleting_the_team', { team: RocketChat.getRoomTitle(room) }), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('delete') }), + onPress: () => this.handleDeleteTeam() + }); + } + } catch (e) { + log(e); + showErrorAlert( + e.data.error + ? I18n.t(e.data.error) + : I18n.t('There_was_an_error_while_action', { action: I18n.t('deleting_team') }), + I18n.t('Cannot_delete') + ); + } + } + delete = () => { const { room } = this.state; const { deleteRoom } = this.props; @@ -339,9 +413,16 @@ class RoomInfoEditView extends React.Component { hasDeletePermission = () => { const { room, permissions } = this.state; - return ( - room.t === 'p' ? permissions[PERMISSION_DELETE_P] : permissions[PERMISSION_DELETE_C] - ); + + if (room.teamMain) { + return permissions[PERMISSION_DELETE_TEAM]; + } + + if (room.t === 'p') { + return permissions[PERMISSION_DELETE_P]; + } + + return permissions[PERMISSION_DELETE_C]; } hasArchivePermission = () => { @@ -513,9 +594,9 @@ class RoomInfoEditView extends React.Component { <SwitchContainer value={t} leftLabelPrimary={I18n.t('Public')} - leftLabelSecondary={I18n.t('Everyone_can_access_this_channel')} + leftLabelSecondary={room.teamMain ? I18n.t('Everyone_can_access_this_team') : I18n.t('Everyone_can_access_this_channel')} rightLabelPrimary={I18n.t('Private')} - rightLabelSecondary={I18n.t('Just_invited_people_can_access_this_channel')} + rightLabelSecondary={room.teamMain ? I18n.t('Just_invited_people_can_access_this_team') : I18n.t('Just_invited_people_can_access_this_channel')} onValueChange={this.toggleRoomType} theme={theme} testID='room-info-edit-view-t' @@ -523,7 +604,7 @@ class RoomInfoEditView extends React.Component { <SwitchContainer value={ro} leftLabelPrimary={I18n.t('Collaborative')} - leftLabelSecondary={I18n.t('All_users_in_the_channel_can_write_new_messages')} + leftLabelSecondary={room.teamMain ? I18n.t('All_users_in_the_team_can_write_new_messages') : I18n.t('All_users_in_the_channel_can_write_new_messages')} rightLabelPrimary={I18n.t('Read_Only')} rightLabelSecondary={I18n.t('Only_authorized_users_can_write_new_messages')} onValueChange={this.toggleReadOnly} @@ -647,7 +728,7 @@ class RoomInfoEditView extends React.Component { { borderColor: dangerColor }, !this.hasDeletePermission() && sharedStyles.opacity5 ]} - onPress={this.delete} + onPress={room.teamMain ? this.deleteTeam : this.delete} disabled={!this.hasDeletePermission()} testID='room-info-edit-view-delete' > @@ -678,7 +759,9 @@ const mapStateToProps = state => ({ archiveRoomPermission: state.permissions[PERMISSION_ARCHIVE], unarchiveRoomPermission: state.permissions[PERMISSION_UNARCHIVE], deleteCPermission: state.permissions[PERMISSION_DELETE_C], - deletePPermission: state.permissions[PERMISSION_DELETE_P] + deletePPermission: state.permissions[PERMISSION_DELETE_P], + deleteTeamPermission: state.permissions[PERMISSION_DELETE_TEAM], + isMasterDetail: state.app.isMasterDetail }); const mapDispatchToProps = dispatch => ({ diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index 1d4b09246a0..15905a9eed2 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -321,7 +321,7 @@ class TeamChannelsView extends React.Component { remove = (item) => { Alert.alert( I18n.t('Confirmation'), - I18n.t('Delete_Team_Room_Warning'), + I18n.t('Remove_Team_Room_Warning'), [ { text: I18n.t('Cancel'), From 852a893a00a59ea5b8355a31142381f54f527a5d Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 28 May 2021 15:29:21 -0300 Subject: [PATCH 133/177] [FIX] Android navigation bar color when Loading modal appears (#3165) * [FIX] Modal appearance * Undo and only add android:navigationBarColor Co-authored-by: Diego Mello <diegolmello@gmail.com> --- android/app/src/main/res/values/styles.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 1377b4820ec..5b3a9bbdd57 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -26,4 +26,14 @@ <item name="colorPrimaryDark">@color/splashBackground</item> <item name="android:navigationBarColor">@color/splashBackground</item> </style> + + <!-- https://github.com/facebook/react-native/blob/d1ab03235cb4b93304150878d2b9057ab45bba77/ReactAndroid/src/main/res/views/modal/values/themes.xml#L5 --> + <style name="Theme.FullScreenDialog"> + <item name="android:windowNoTitle">true</item> + <item name="android:windowIsFloating">false</item> + <item name="android:windowBackground">@android:color/transparent</item> + <item name="android:windowDrawsSystemBarBackgrounds">true</item> + <item name="android:statusBarColor">@android:color/transparent</item> + <item name="android:navigationBarColor">@android:color/transparent</item> + </style> </resources> From 2b51f37384a78b5cecde448188dd1cde5aa5b64f Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Fri, 28 May 2021 15:06:20 -0400 Subject: [PATCH 134/177] [FIX] Check for old servers for Teams (#3171) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/NewMessageView.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/views/NewMessageView.js b/app/views/NewMessageView.js index cca5d584286..8d5f62ceb10 100644 --- a/app/views/NewMessageView.js +++ b/app/views/NewMessageView.js @@ -25,6 +25,7 @@ import Navigation from '../lib/Navigation'; import { createChannelRequest } from '../actions/createChannel'; import { goRoom } from '../utils/goRoom'; import SafeAreaView from '../containers/SafeAreaView'; +import { compareServerVersion, methods } from '../lib/utils'; const QUERY_SIZE = 50; @@ -63,7 +64,8 @@ class NewMessageView extends React.Component { create: PropTypes.func, maxUsers: PropTypes.number, theme: PropTypes.string, - isMasterDetail: PropTypes.bool + isMasterDetail: PropTypes.bool, + serverVersion: PropTypes.string }; constructor(props) { @@ -166,7 +168,7 @@ class NewMessageView extends React.Component { } renderHeader = () => { - const { maxUsers, theme } = this.props; + const { maxUsers, theme, serverVersion } = this.props; return ( <View style={{ backgroundColor: themes[theme].auxiliaryBackground }}> <SearchBox onChangeText={text => this.onSearchChangeText(text)} testID='new-message-view-search' /> @@ -178,12 +180,13 @@ class NewMessageView extends React.Component { testID: 'new-message-view-create-channel', first: true })} - {this.renderButton({ - onPress: this.createTeam, - title: I18n.t('Create_Team'), - icon: 'teams', - testID: 'new-message-view-create-team' - })} + {compareServerVersion(serverVersion, '3.13.0', methods.greaterThanOrEqualTo) + ? (this.renderButton({ + onPress: this.createTeam, + title: I18n.t('Create_Team'), + icon: 'teams', + testID: 'new-message-view-create-team' + })) : null} {maxUsers > 2 ? this.renderButton({ onPress: this.createGroupChat, title: I18n.t('Create_Direct_Messages'), @@ -258,6 +261,7 @@ class NewMessageView extends React.Component { } const mapStateToProps = state => ({ + serverVersion: state.server.version, isMasterDetail: state.app.isMasterDetail, baseUrl: state.server.server, maxUsers: state.settings.DirectMesssage_maxUsers || 1, From 5fd7981d07f64e17c251415e7963d9463033936c Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Wed, 2 Jun 2021 09:44:19 -0400 Subject: [PATCH 135/177] [NEW] Convert/Move Channel to Team (#3164) * Added Create Team * Added actionTypes, actions, ENG strings for Teams and updated NewMessageView * Added createTeam sagas, createTeam reducer, new Team string and update CreateChannelView * Remove unnecessary actionTypes, reducers and sagas, e2e tests and navigation to team view * Minor tweaks * Show TeamChannelsView only if joined the team * Minor tweak * Added AddChannelTeamView * Added permissions, translations strings for teams, deleteTeamRoom and addTeamRooms, AddExistingChannelView, updated CreateChannelView, TeamChannelsView * Refactor touch component and update removeRoom and deleteRoom methods * Minor tweaks * Minor tweaks for removing channels and addExistingChannelView * Added missing events and fixed channels list * Minor tweaks for refactored touch component * Added SelectListView and logic for leaving team * Added addTeamMember and removeTeamMember * Minor tweak * Added deleteTeam function * Minor tweak * Minor tweaks * Remove unnecesary changes, update TeamChannelsView, AddExistingChannelView, AddChannelTeamView, createChannel, goRoom and Touchable * Remove unnecesary prop * Add screens to ModalStack, events, autoJoin, update createChannel, addRoomsToTeam and Touchable * Minor tweak * Update loadMessagesForRoom.js * Updated schema, tag component, touch, AddChannelTeamView, AddExistingChannelView, ActionSheet Item * Fix unnecessary changes * Add i18n, update createChannel, AddExistingChannelTeamView, AddChannelTeamView, RightButton and TeamChannelsView * Updated styles, added tag story * Minor tweak * Minor tweaks * Auto-join tweak * Minor tweaks * Minor tweak on search * Minor refactor to ListItem, add SelectListView to ModalStack, update handleLeaveTeam * Minor tweaks * Update SelectListView * Update handleLeaveTeam, remove unnecessary method, add story * Minor tweak * Minor visual tweaks * Update SelectListView.js * Update index.js * Update RoomMembersView * Updated SelectListView, RoomActionsView, leaveTeam method and string translations * Update SelectListVIew * Minor tweak * Update SelectListView * Minor tweak * Minor tweaks * Fix for List.Item subtitles being pushed down by title's flex * Minor tweaks * Update RoomActionsView * Use showConfirmationAlert and showErrorAlert * Remove addTeamMember, update removeTeamMember * Update Alert * Minor tweaks * Minor tweaks * Minor tweak * Update showActionSheet on RoomMembersView * Remove team main from query and move code around * Fetch roles * Update RoomMembersView and SelectListView * Update rocketchat.js * Updated leaveTeam and handleRemoveFromTeam * Fix validation * Remove unnecessary function * Update RoomActionsView * Update en.json * updated deleteTeam function and permissions * Added showConfirmationAlert * Added string translations for teams * Fix permission * Added moveChannelToTeam and convertToTeam functionality * Fix SelectListView RadioButton * Fix moveToTeam * Added searchBar to SelectListVIew * Update RoomView , SelectListVIew and string translation for error Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/RoomHeader/index.js | 5 +- app/i18n/locales/en.json | 12 +- app/lib/methods/getPermissions.js | 1 + app/lib/rocketchat.js | 14 +++ app/views/RoomActionsView/index.js | 190 ++++++++++++++++++++++++++++- app/views/RoomView/RightButtons.js | 4 + app/views/RoomView/index.js | 7 +- app/views/SelectListView.js | 53 ++++++-- 8 files changed, 270 insertions(+), 16 deletions(-) diff --git a/app/containers/RoomHeader/index.js b/app/containers/RoomHeader/index.js index 4eeab701f29..7d4d22de879 100644 --- a/app/containers/RoomHeader/index.js +++ b/app/containers/RoomHeader/index.js @@ -32,7 +32,7 @@ class RoomHeaderContainer extends Component { shouldComponentUpdate(nextProps) { const { - type, title, subtitle, status, statusText, connecting, connected, onPress, usersTyping, width, height + type, title, subtitle, status, statusText, connecting, connected, onPress, usersTyping, width, height, teamMain } = this.props; if (nextProps.type !== type) { return true; @@ -67,6 +67,9 @@ class RoomHeaderContainer extends Component { if (nextProps.onPress !== onPress) { return true; } + if (nextProps.teamMain !== teamMain) { + return true; + } return false; } diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 29a3b2422f0..090bf5cd059 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -14,7 +14,7 @@ "error-delete-protected-role": "Cannot delete a protected role", "error-department-not-found": "Department not found", "error-direct-message-file-upload-not-allowed": "File sharing not allowed in direct messages", - "error-duplicate-channel-name": "A channel with name {{channel_name}} exists", + "error-duplicate-channel-name": "A channel with name {{room_name}} exists", "error-email-domain-blacklisted": "The email domain is blacklisted", "error-email-send-failed": "Error trying to send email: {{message}}", "error-save-image": "Error while saving image", @@ -182,6 +182,7 @@ "delete": "delete", "Delete": "Delete", "DELETE": "DELETE", + "move": "move", "deleting_room": "deleting room", "description": "description", "Description": "Description", @@ -731,6 +732,7 @@ "invalid-room": "Invalid room", "You_are_leaving_the_team": "You are leaving the team '{{team}}'", "Leave_Team": "Leave Team", + "Select_Team": "Select Team", "Select_Team_Channels": "Select the Team's channels you would like to leave.", "Cannot_leave": "Cannot leave", "Cannot_remove": "Cannot remove", @@ -746,8 +748,16 @@ "Remove_Member": "Remove Member", "leaving_team": "leaving team", "removing_team": "removing from team", + "moving_channel_to_team": "moving channel to team", "deleting_team": "deleting team", "member-does-not-exist": "Member does not exist", + "Convert": "Convert", + "Convert_to_Team": "Convert to Team", + "Convert_to_Team_Warning": "This can't be undone. Once you convert a channel to a team, you can not turn it back to a channel.", + "Move_to_Team": "Move to Team", + "Move_Channel_to_Team": "Move Channel to Team", + "Move_Channel_Paragraph": "Moving a channel inside a team means that this channel will be added in the team’s context, however, all channel’s members, which are not members of the respective team, will still have access to this channel, but will not be added as team’s members. \n\nAll channel’s management will still be made by the owners of this channel.\n\nTeam’s members and even team’s owners, if not a member of this channel, can not have access to the channel’s content. \n\nPlease notice that the Team’s owner will be able remove members from the Channel.", + "Move_to_Team_Warning": "After reading the previous intructions about this behavior, do you still want to move this channel to the selected team?", "Load_More": "Load More", "Load_Newer": "Load Newer", "Load_Older": "Load Older" diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 99a18a6c089..2b7da47652a 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -17,6 +17,7 @@ const PERMISSIONS = [ 'archive-room', 'auto-translate', 'create-invite-links', + 'create-team', 'delete-c', 'delete-message', 'delete-p', diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 4774b427225..f174aa1eb41 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -798,6 +798,20 @@ const RocketChat = { // RC 3.13.0 return this.sdk.get('teams.listRoomsOfUser', { teamId, userId }); }, + convertChannelToTeam({ rid, name, type }) { + const params = { + ...(type === 'c' + ? { + channelId: rid, + channelName: name + } + : { + roomId: rid, + roomName: name + }) + }; + return this.sdk.post(type === 'c' ? 'channels.convertToTeam' : 'groups.convertToTeam', params); + }, joinRoom(roomId, joinCode, type) { // TODO: join code // RC 0.48.0 diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 89d34ed0747..7199843c8cf 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -5,8 +5,9 @@ import { } from 'react-native'; import { connect } from 'react-redux'; import isEmpty from 'lodash/isEmpty'; -import { compareServerVersion, methods } from '../../lib/utils'; +import { Q } from '@nozbe/watermelondb'; +import { compareServerVersion, methods } from '../../lib/utils'; import Touch from '../../utils/touch'; import { setLoading as setLoadingAction } from '../../actions/selectedUsers'; import { leaveRoom as leaveRoomAction, closeRoom as closeRoomAction } from '../../actions/room'; @@ -61,7 +62,9 @@ class RoomActionsView extends React.Component { editRoomPermission: PropTypes.array, toggleRoomE2EEncryptionPermission: PropTypes.array, viewBroadcastMemberListPermission: PropTypes.array, - transferLivechatGuestPermission: PropTypes.array + transferLivechatGuestPermission: PropTypes.array, + createTeamPermission: PropTypes.array, + addTeamChannelPermission: PropTypes.array } constructor(props) { @@ -83,7 +86,9 @@ class RoomActionsView extends React.Component { canForwardGuest: false, canReturnQueue: false, canEdit: false, - canToggleEncryption: false + canToggleEncryption: false, + canCreateTeam: false, + canAddChannelToTeam: false }; if (room && room.observe && room.rid) { this.roomObservable = room.observe(); @@ -132,9 +137,11 @@ class RoomActionsView extends React.Component { const canEdit = await this.canEdit(); const canToggleEncryption = await this.canToggleEncryption(); const canViewMembers = await this.canViewMembers(); + const canCreateTeam = await this.canCreateTeam(); + const canAddChannelToTeam = await this.canAddChannelToTeam(); this.setState({ - canAutoTranslate, canAddUser, canInviteUser, canEdit, canToggleEncryption, canViewMembers + canAutoTranslate, canAddUser, canInviteUser, canEdit, canToggleEncryption, canViewMembers, canCreateTeam, canAddChannelToTeam }); // livechat permissions @@ -210,6 +217,26 @@ class RoomActionsView extends React.Component { return canEdit; } + canCreateTeam = async() => { + const { room } = this.state; + const { createTeamPermission } = this.props; + const { rid } = room; + const permissions = await RocketChat.hasPermission([createTeamPermission], rid); + + const canCreateTeam = permissions[0]; + return canCreateTeam; + } + + canAddChannelToTeam = async() => { + const { room } = this.state; + const { addTeamChannelPermission } = this.props; + const { rid } = room; + const permissions = await RocketChat.hasPermission([addTeamChannelPermission], rid); + + const canAddChannelToTeam = permissions[0]; + return canAddChannelToTeam; + } + canToggleEncryption = async() => { const { room } = this.state; const { toggleRoomE2EEncryptionPermission } = this.props; @@ -464,6 +491,111 @@ class RoomActionsView extends React.Component { } } + handleConvertToTeam = async() => { + try { + const { room } = this.state; + const { navigation } = this.props; + const result = await RocketChat.convertChannelToTeam({ rid: room.rid, name: room.name, type: room.t }); + + if (result.success) { + navigation.navigate('RoomView'); + } + } catch (e) { + log(e); + } + } + + convertToTeam = () => { + showConfirmationAlert({ + title: I18n.t('Confirmation'), + message: I18n.t('Convert_to_Team_Warning'), + confirmationText: I18n.t('Convert'), + onPress: () => this.handleConvertToTeam() + }); + } + + handleMoveToTeam = async(selected) => { + try { + const { room } = this.state; + const { navigation } = this.props; + const result = await RocketChat.addRoomsToTeam({ teamId: selected.teamId, rooms: [room.rid] }); + if (result.success) { + navigation.navigate('RoomView'); + } + } catch (e) { + log(e); + showErrorAlert(I18n.t('There_was_an_error_while_action', { action: I18n.t('moving_channel_to_team') })); + } + } + + moveToTeam = async() => { + try { + const { navigation } = this.props; + const db = database.active; + const subCollection = db.get('subscriptions'); + const teamRooms = await subCollection.query( + Q.where('team_main', Q.notEq(null)) + ); + + if (teamRooms.length) { + navigation.navigate('SelectListView', { + title: 'Move_to_Team', + infoText: 'Move_Channel_Paragraph', + nextAction: () => { + navigation.push('SelectListView', { + title: 'Select_Team', + data: teamRooms, + isRadio: true, + isSearch: true, + onSearch: onChangeText => this.searchTeam(onChangeText), + nextAction: selected => showConfirmationAlert({ + title: I18n.t('Confirmation'), + message: I18n.t('Move_to_Team_Warning'), + confirmationText: I18n.t('Yes_action_it', { action: I18n.t('move') }), + onPress: () => this.handleMoveToTeam(selected) + }) + + }); + } + }); + } + } catch (e) { + log(e); + } + } + + searchTeam = async(onChangeText) => { + try { + const { addTeamChannelPermission, createTeamPermission } = this.props; + const QUERY_SIZE = 50; + const db = database.active; + const teams = await db.collections + .get('subscriptions') + .query( + Q.where('team_main', Q.notEq(null)), + Q.where('name', Q.like(`%${ onChangeText }%`)), + Q.experimentalTake(QUERY_SIZE), + Q.experimentalSortBy('room_updated_at', Q.desc) + ); + + const asyncFilter = async(teamArray) => { + const results = await Promise.all(teamArray.map(async(team) => { + const permissions = await RocketChat.hasPermission([addTeamChannelPermission, createTeamPermission], team.rid); + if (!permissions[0]) { + return false; + } + return true; + })); + + return teamArray.filter((_v, index) => results[index]); + }; + const teamsFiltered = await asyncFilter(teams); + return teamsFiltered; + } catch (e) { + log(e); + } + } + renderRoomInfo = () => { const { room, member } = this.state; const { @@ -635,6 +767,50 @@ class RoomActionsView extends React.Component { } } + teamChannelActions = (t, room) => { + const { canEdit, canCreateTeam, canAddChannelToTeam } = this.state; + const canConvertToTeam = canEdit && canCreateTeam && !room.teamMain; + const canMoveToTeam = canEdit && canAddChannelToTeam && !room.teamId; + + return ( + <> + {['c', 'p'].includes(t) && canConvertToTeam + ? ( + <> + <List.Item + title='Convert_to_Team' + onPress={() => this.onPressTouchable({ + event: this.convertToTeam + })} + testID='room-actions-convert-to-team' + left={() => <List.Icon name='teams' />} + showActionIndicator + /> + <List.Separator /> + </> + ) + : null} + + {['c', 'p'].includes(t) && canMoveToTeam + ? ( + <> + <List.Item + title='Move_Channel_to_Team' + onPress={() => this.onPressTouchable({ + event: this.moveToTeam + })} + testID='room-actions-convert-to-team' + left={() => <List.Icon name='channel-move-to-team' />} + showActionIndicator + /> + <List.Separator /> + </> + ) + : null} + </> + ); + } + render() { const { room, membersCount, canViewMembers, canAddUser, canInviteUser, joined, canAutoTranslate, canForwardGuest, canReturnQueue @@ -836,6 +1012,8 @@ class RoomActionsView extends React.Component { ) : null} + { this.teamChannelActions(t, room) } + {['l'].includes(t) && !this.isOmnichannelPreview ? ( <> @@ -922,7 +1100,9 @@ const mapStateToProps = state => ({ editRoomPermission: state.permissions['edit-room'], toggleRoomE2EEncryptionPermission: state.permissions['toggle-room-e2e-encryption'], viewBroadcastMemberListPermission: state.permissions['view-broadcast-member-list'], - transferLivechatGuestPermission: state.permissions['transfer-livechat-guest'] + transferLivechatGuestPermission: state.permissions['transfer-livechat-guest'], + createTeamPermission: state.permissions['create-team'], + addTeamChannelPermission: state.permissions['add-team-channel'] }); const mapDispatchToProps = dispatch => ({ diff --git a/app/views/RoomView/RightButtons.js b/app/views/RoomView/RightButtons.js index f61488b5bbc..5b283b4ad06 100644 --- a/app/views/RoomView/RightButtons.js +++ b/app/views/RoomView/RightButtons.js @@ -59,6 +59,10 @@ class RightButtonsContainer extends Component { const { isFollowingThread, tunread, tunreadUser, tunreadGroup } = this.state; + const { teamId } = this.props; + if (nextProps.teamId !== teamId) { + return true; + } if (nextState.isFollowingThread !== isFollowingThread) { return true; } diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 18d123ec412..13de89c87d9 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -85,7 +85,7 @@ const stateAttrsUpdate = [ 'member', 'showingBlockingLoader' ]; -const roomAttrsUpdate = ['f', 'ro', 'blocked', 'blocker', 'archived', 'tunread', 'muted', 'ignored', 'jitsiTimeout', 'announcement', 'sysMes', 'topic', 'name', 'fname', 'roles', 'bannerClosed', 'visitor', 'joinCodeRequired']; +const roomAttrsUpdate = ['f', 'ro', 'blocked', 'blocker', 'archived', 'tunread', 'muted', 'ignored', 'jitsiTimeout', 'announcement', 'sysMes', 'topic', 'name', 'fname', 'roles', 'bannerClosed', 'visitor', 'joinCodeRequired', 'teamMain', 'teamId']; class RoomView extends React.Component { static propTypes = { @@ -254,7 +254,10 @@ class RoomView extends React.Component { this.setHeader(); } } - if (((roomUpdate.fname !== prevState.roomUpdate.fname) || (roomUpdate.name !== prevState.roomUpdate.name)) && !this.tmid) { + if ((roomUpdate.teamMain !== prevState.roomUpdate.teamMain) || (roomUpdate.teamId !== prevState.roomUpdate.teamId)) { + this.setHeader(); + } + if (((roomUpdate.fname !== prevState.roomUpdate.fname) || (roomUpdate.name !== prevState.roomUpdate.name) || (roomUpdate.teamMain !== prevState.roomUpdate.teamMain) || (roomUpdate.teamId !== prevState.roomUpdate.teamId)) && !this.tmid) { this.setHeader(); } if (insets.left !== prevProps.insets.left || insets.right !== prevProps.insets.right) { diff --git a/app/views/SelectListView.js b/app/views/SelectListView.js index bcbb0923f7f..a3ad3f8898c 100644 --- a/app/views/SelectListView.js +++ b/app/views/SelectListView.js @@ -4,7 +4,9 @@ import { View, StyleSheet, FlatList, Text } from 'react-native'; import { connect } from 'react-redux'; +import { RadioButton } from 'react-native-ui-lib'; +import log from '../utils/log'; import * as List from '../containers/List'; import sharedStyles from './Styles'; import I18n from '../i18n'; @@ -14,6 +16,9 @@ import { themes } from '../constants/colors'; import { withTheme } from '../theme'; import SafeAreaView from '../containers/SafeAreaView'; import { animateNextTransition } from '../utils/layoutAnimation'; +import { ICON_SIZE } from '../containers/List/constants'; +import SearchBox from '../containers/SearchBox'; + const styles = StyleSheet.create({ buttonText: { @@ -38,8 +43,13 @@ class SelectListView extends React.Component { this.infoText = props.route?.params?.infoText; this.nextAction = props.route?.params?.nextAction; this.showAlert = props.route?.params?.showAlert; + this.isSearch = props.route?.params?.isSearch; + this.onSearch = props.route?.params?.onSearch; + this.isRadio = props.route?.params?.isRadio; this.state = { data, + dataFiltered: [], + isSearching: false, selected: [] }; this.setHeader(); @@ -75,6 +85,25 @@ class SelectListView extends React.Component { ); } + renderSearch = () => { + const { theme } = this.props; + return ( + <View style={{ backgroundColor: themes[theme].auxiliaryBackground }}> + <SearchBox onChangeText={text => this.search(text)} testID='select-list-view-search' onCancelPress={() => this.setState({ isSearching: false })} /> + </View> + ); + } + + search = async(text) => { + try { + this.setState({ isSearching: true }); + const result = await this.onSearch(text); + this.setState({ dataFiltered: result }); + } catch (e) { + log(e); + } + } + isChecked = (rid) => { const { selected } = this.state; return selected.includes(rid); @@ -84,7 +113,11 @@ class SelectListView extends React.Component { const { selected } = this.state; animateNextTransition(); - if (!this.isChecked(rid)) { + if (this.isRadio) { + if (!this.isChecked(rid)) { + this.setState({ selected: [rid] }, () => this.setHeader()); + } + } else if (!this.isChecked(rid)) { this.setState({ selected: [...selected, rid] }, () => this.setHeader()); } else { const filterSelected = selected.filter(el => el !== rid); @@ -94,9 +127,16 @@ class SelectListView extends React.Component { renderItem = ({ item }) => { const { theme } = this.props; - const icon = item.t === 'p' ? 'channel-private' : 'channel-public'; + const { selected } = this.state; + + const channelIcon = item.t === 'p' ? 'channel-private' : 'channel-public'; + const teamIcon = item.t === 'p' ? 'teams-private' : 'teams'; + const icon = item.teamMain ? teamIcon : channelIcon; const checked = this.isChecked(item.rid) ? 'check' : null; + const showRadio = () => <RadioButton selected={selected.includes(item.rid)} color={themes[theme].actionTintColor} size={ICON_SIZE} />; + const showCheck = () => <List.Icon name={checked} color={themes[theme].actionTintColor} />; + return ( <> <List.Separator /> @@ -107,25 +147,24 @@ class SelectListView extends React.Component { onPress={() => (item.alert ? this.showAlert() : this.toggleItem(item.rid))} alert={item.alert} left={() => <List.Icon name={icon} color={themes[theme].controlText} />} - right={() => (checked ? <List.Icon name={checked} color={themes[theme].actionTintColor} /> : null)} + right={() => (this.isRadio ? showRadio() : showCheck())} /> </> ); } render() { - const { data } = this.state; + const { data, isSearching, dataFiltered } = this.state; const { theme } = this.props; - return ( <SafeAreaView testID='select-list-view'> <StatusBar /> <FlatList - data={data} + data={!isSearching ? data : dataFiltered} extraData={this.state} keyExtractor={item => item.rid} renderItem={this.renderItem} - ListHeaderComponent={this.renderInfoText} + ListHeaderComponent={this.isSearch ? this.renderSearch : this.renderInfoText} contentContainerStyle={{ backgroundColor: themes[theme].backgroundColor }} keyboardShouldPersistTaps='always' /> From c087780ccfa848be8ce744b8607195f510209e35 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Fri, 4 Jun 2021 12:16:05 -0400 Subject: [PATCH 136/177] [TEST] E2E Tests for Teams (#3178) * Added Create Team * Added actionTypes, actions, ENG strings for Teams and updated NewMessageView * Added createTeam sagas, createTeam reducer, new Team string and update CreateChannelView * Remove unnecessary actionTypes, reducers and sagas, e2e tests and navigation to team view * Minor tweaks * Show TeamChannelsView only if joined the team * Minor tweak * Added AddChannelTeamView * Added permissions, translations strings for teams, deleteTeamRoom and addTeamRooms, AddExistingChannelView, updated CreateChannelView, TeamChannelsView * Refactor touch component and update removeRoom and deleteRoom methods * Minor tweaks * Minor tweaks for removing channels and addExistingChannelView * Added missing events and fixed channels list * Minor tweaks for refactored touch component * Added SelectListView and logic for leaving team * Added addTeamMember and removeTeamMember * Minor tweak * Added deleteTeam function * Minor tweak * Minor tweaks * Remove unnecesary changes, update TeamChannelsView, AddExistingChannelView, AddChannelTeamView, createChannel, goRoom and Touchable * Remove unnecesary prop * Add screens to ModalStack, events, autoJoin, update createChannel, addRoomsToTeam and Touchable * Minor tweak * Update loadMessagesForRoom.js * Updated schema, tag component, touch, AddChannelTeamView, AddExistingChannelView, ActionSheet Item * Fix unnecessary changes * Add i18n, update createChannel, AddExistingChannelTeamView, AddChannelTeamView, RightButton and TeamChannelsView * Updated styles, added tag story * Minor tweak * Minor tweaks * Auto-join tweak * Minor tweaks * Minor tweak on search * Minor refactor to ListItem, add SelectListView to ModalStack, update handleLeaveTeam * Minor tweaks * Update SelectListView * Update handleLeaveTeam, remove unnecessary method, add story * Minor tweak * Minor visual tweaks * Update SelectListView.js * Update index.js * Update RoomMembersView * Updated SelectListView, RoomActionsView, leaveTeam method and string translations * Update SelectListVIew * Minor tweak * Update SelectListView * Minor tweak * Minor tweaks * Fix for List.Item subtitles being pushed down by title's flex * Minor tweaks * Update RoomActionsView * Use showConfirmationAlert and showErrorAlert * Remove addTeamMember, update removeTeamMember * Update Alert * Minor tweaks * Minor tweaks * Minor tweak * Update showActionSheet on RoomMembersView * Remove team main from query and move code around * Fetch roles * Update RoomMembersView and SelectListView * Update rocketchat.js * Updated leaveTeam and handleRemoveFromTeam * Fix validation * Remove unnecessary function * Update RoomActionsView * Update en.json * updated deleteTeam function and permissions * Added showConfirmationAlert * Added string translations for teams * Fix permission * Added moveChannelToTeam and convertToTeam functionality * Fix SelectListView RadioButton * Fix moveToTeam * Added searchBar to SelectListVIew * Update RoomView , SelectListVIew and string translation for error * E2E for Teams * Fix tests and cleanup * Minor refactor * Wrong label * Move/convert * Fix convert Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 2 + app/containers/ActionSheet/Item.js | 4 +- app/containers/List/ListIcon.js | 7 +- app/i18n/locales/en.json | 1 - app/presentation/RoomItem/RoomItem.js | 2 +- app/presentation/RoomItem/Tag.js | 6 +- app/views/AddChannelTeamView.js | 2 +- app/views/AddExistingChannelView.js | 4 +- app/views/CreateChannelView.js | 4 +- app/views/RoomActionsView/index.js | 14 +- app/views/RoomMembersView/index.js | 21 +- app/views/SelectListView.js | 4 +- app/views/TeamChannelsView.js | 13 +- e2e/data/data.cloud.js | 10 + e2e/data/data.docker.js | 10 + e2e/helpers/app.js | 4 +- e2e/tests/assorted/05-joinpublicroom.spec.js | 5 - e2e/tests/room/02-room.spec.js | 12 +- e2e/tests/room/03-roomactions.spec.js | 64 ++-- e2e/tests/room/04-discussion.spec.js | 4 - e2e/tests/team/01-createteam.spec.js | 70 ++--- e2e/tests/team/02-team.spec.js | 296 ++++++++++++++++++ e2e/tests/team/03-moveconvert.spec.js | 89 ++++++ 23 files changed, 526 insertions(+), 122 deletions(-) create mode 100644 e2e/tests/team/02-team.spec.js create mode 100644 e2e/tests/team/03-moveconvert.spec.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index eec5b535ac0..52fa5d01d5d 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -58119,6 +58119,7 @@ exports[`Storyshots Room Item Tag 1`] = ` }, ] } + testID="auto-join-tag" > Auto-join </Text> @@ -59020,6 +59021,7 @@ exports[`Storyshots Room Item Tag 1`] = ` }, ] } + testID="auto-join-tag" > Auto-join </Text> diff --git a/app/containers/ActionSheet/Item.js b/app/containers/ActionSheet/Item.js index aa76da8bb55..2cacd0855b3 100644 --- a/app/containers/ActionSheet/Item.js +++ b/app/containers/ActionSheet/Item.js @@ -18,6 +18,7 @@ export const Item = React.memo(({ item, hide, theme }) => { onPress={onPress} style={[styles.item, { backgroundColor: themes[theme].focusedBackground }]} theme={theme} + testID={item.testID} > <CustomIcon name={item.icon} size={20} color={item.danger ? themes[theme].dangerColor : themes[theme].bodyText} /> <View style={styles.titleContainer}> @@ -42,7 +43,8 @@ Item.propTypes = { icon: PropTypes.string, danger: PropTypes.bool, onPress: PropTypes.func, - right: PropTypes.func + right: PropTypes.func, + testID: PropTypes.string }), hide: PropTypes.func, theme: PropTypes.string diff --git a/app/containers/List/ListIcon.js b/app/containers/List/ListIcon.js index 5ab6c3bc9af..44941f2ca5c 100644 --- a/app/containers/List/ListIcon.js +++ b/app/containers/List/ListIcon.js @@ -18,13 +18,15 @@ const ListIcon = React.memo(({ theme, name, color, - style + style, + testID }) => ( <View style={[styles.icon, style]}> <CustomIcon name={name} color={color ?? themes[theme].auxiliaryText} size={ICON_SIZE} + testID={testID} /> </View> )); @@ -33,7 +35,8 @@ ListIcon.propTypes = { theme: PropTypes.string, name: PropTypes.string, color: PropTypes.string, - style: PropTypes.object + style: PropTypes.object, + testID: PropTypes.string }; ListIcon.displayName = 'List.Icon'; diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 090bf5cd059..a8f8d9635e4 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -755,7 +755,6 @@ "Convert_to_Team": "Convert to Team", "Convert_to_Team_Warning": "This can't be undone. Once you convert a channel to a team, you can not turn it back to a channel.", "Move_to_Team": "Move to Team", - "Move_Channel_to_Team": "Move Channel to Team", "Move_Channel_Paragraph": "Moving a channel inside a team means that this channel will be added in the team’s context, however, all channel’s members, which are not members of the respective team, will still have access to this channel, but will not be added as team’s members. \n\nAll channel’s management will still be made by the owners of this channel.\n\nTeam’s members and even team’s owners, if not a member of this channel, can not have access to the channel’s content. \n\nPlease notice that the Team’s owner will be able remove members from the Channel.", "Move_to_Team_Warning": "After reading the previous intructions about this behavior, do you still want to move this channel to the selected team?", "Load_More": "Load More", diff --git a/app/presentation/RoomItem/RoomItem.js b/app/presentation/RoomItem/RoomItem.js index 065e9133193..2ac73a0bb82 100644 --- a/app/presentation/RoomItem/RoomItem.js +++ b/app/presentation/RoomItem/RoomItem.js @@ -94,7 +94,7 @@ const RoomItem = ({ alert={alert} /> { - autoJoin ? <Tag name={I18n.t('Auto-join')} /> : null + autoJoin ? <Tag testID='auto-join-tag' name={I18n.t('Auto-join')} /> : null } <UpdatedAt date={date} diff --git a/app/presentation/RoomItem/Tag.js b/app/presentation/RoomItem/Tag.js index 131541fe6d2..6484b30859b 100644 --- a/app/presentation/RoomItem/Tag.js +++ b/app/presentation/RoomItem/Tag.js @@ -6,7 +6,7 @@ import { themes } from '../../constants/colors'; import { useTheme } from '../../theme'; import styles from './styles'; -const Tag = React.memo(({ name }) => { +const Tag = React.memo(({ name, testID }) => { const { theme } = useTheme(); return ( @@ -16,6 +16,7 @@ const Tag = React.memo(({ name }) => { styles.tagText, { color: themes[theme].infoText } ]} numberOfLines={1} + testID={testID} > {name} </Text> @@ -24,7 +25,8 @@ const Tag = React.memo(({ name }) => { }); Tag.propTypes = { - name: PropTypes.string + name: PropTypes.string, + testID: PropTypes.string }; export default Tag; diff --git a/app/views/AddChannelTeamView.js b/app/views/AddChannelTeamView.js index fdb166caf17..76439b412d0 100644 --- a/app/views/AddChannelTeamView.js +++ b/app/views/AddChannelTeamView.js @@ -51,7 +51,7 @@ const AddChannelTeamView = ({ <List.Item title='Add_Existing' onPress={() => navigation.navigate('AddExistingChannelView', { teamId, teamChannels })} - testID='add-channel-team-view-create-channel' + testID='add-channel-team-view-add-existing' left={() => <List.Icon name='channel-public' />} right={() => <List.Icon name='chevron-right' />} theme={theme} diff --git a/app/views/AddExistingChannelView.js b/app/views/AddExistingChannelView.js index c1c94fec82a..e7a590a5481 100644 --- a/app/views/AddExistingChannelView.js +++ b/app/views/AddExistingChannelView.js @@ -61,7 +61,7 @@ class AddExistingChannelView extends React.Component { options.headerRight = () => selected.length > 0 && ( <HeaderButton.Container> - <HeaderButton.Item title={I18n.t('Create')} onPress={this.submit} testID='add-existing-channel-view-submit' /> + <HeaderButton.Item title={I18n.t('Next')} onPress={this.submit} testID='add-existing-channel-view-submit' /> </HeaderButton.Container> ); @@ -169,7 +169,7 @@ class AddExistingChannelView extends React.Component { title={RocketChat.getRoomTitle(item)} translateTitle={false} onPress={() => this.toggleChannel(item.rid)} - testID='add-existing-channel-view-item' + testID={`add-existing-channel-view-item-${ item.name }`} left={() => <List.Icon name={icon} />} right={() => (isChecked ? <List.Icon name='check' /> : null)} /> diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 54f402c635e..78f4ea42a53 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -334,7 +334,7 @@ class CreateChannelView extends React.Component { keyboardVerticalOffset={128} > <StatusBar /> - <SafeAreaView testID={isTeam ? 'create-team-view' : 'create-channel-view'}> + <SafeAreaView testID='create-channel-view'> <ScrollView {...scrollPersistTaps}> <View style={[sharedStyles.separatorVertical, { borderColor: themes[theme].separatorColor }]}> <TextInput @@ -345,7 +345,7 @@ class CreateChannelView extends React.Component { onChangeText={this.onChangeText} placeholder={isTeam ? I18n.t('Team_Name') : I18n.t('Channel_Name')} returnKeyType='done' - testID={isTeam ? 'create-team-name' : 'create-channel-name'} + testID='create-channel-name' autoCorrect={false} autoCapitalize='none' theme={theme} diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 7199843c8cf..74dc308fa9b 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -518,7 +518,7 @@ class RoomActionsView extends React.Component { try { const { room } = this.state; const { navigation } = this.props; - const result = await RocketChat.addRoomsToTeam({ teamId: selected.teamId, rooms: [room.rid] }); + const result = await RocketChat.addRoomsToTeam({ teamId: selected?.[0], rooms: [room.rid] }); if (result.success) { navigation.navigate('RoomView'); } @@ -538,13 +538,18 @@ class RoomActionsView extends React.Component { ); if (teamRooms.length) { + const data = teamRooms.map(team => ({ + rid: team.teamId, + t: team.t, + name: team.name + })); navigation.navigate('SelectListView', { title: 'Move_to_Team', infoText: 'Move_Channel_Paragraph', nextAction: () => { navigation.push('SelectListView', { title: 'Select_Team', - data: teamRooms, + data, isRadio: true, isSearch: true, onSearch: onChangeText => this.searchTeam(onChangeText), @@ -554,7 +559,6 @@ class RoomActionsView extends React.Component { confirmationText: I18n.t('Yes_action_it', { action: I18n.t('move') }), onPress: () => this.handleMoveToTeam(selected) }) - }); } }); @@ -795,11 +799,11 @@ class RoomActionsView extends React.Component { ? ( <> <List.Item - title='Move_Channel_to_Team' + title='Move_to_Team' onPress={() => this.onPressTouchable({ event: this.moveToTeam })} - testID='room-actions-convert-to-team' + testID='room-actions-move-to-team' left={() => <List.Icon name='channel-move-to-team' />} showActionIndicator /> diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index 5819cf5126f..5f0deb32695 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -265,7 +265,8 @@ class RoomMembersView extends React.Component { options.push({ icon: 'ignore', title: I18n.t(isIgnored ? 'Unignore' : 'Ignore'), - onPress: () => this.handleIgnore(selectedUser, !isIgnored) + onPress: () => this.handleIgnore(selectedUser, !isIgnored), + testID: 'action-sheet-ignore-user' }); } @@ -284,7 +285,8 @@ class RoomMembersView extends React.Component { confirmationText: I18n.t(userIsMuted ? 'Unmute' : 'Mute'), onPress: () => this.handleMute(selectedUser) }); - } + }, + testID: 'action-sheet-mute-user' }); } @@ -296,7 +298,8 @@ class RoomMembersView extends React.Component { icon: 'shield-check', title: I18n.t('Owner'), onPress: () => this.handleOwner(selectedUser, !isOwner), - right: () => <CustomIcon name={isOwner ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isOwner ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} /> + right: () => <CustomIcon testID={isOwner ? 'action-sheet-set-owner-checked' : 'action-sheet-set-owner-unchecked'} name={isOwner ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isOwner ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} />, + testID: 'action-sheet-set-owner' }); } @@ -308,7 +311,8 @@ class RoomMembersView extends React.Component { icon: 'shield-alt', title: I18n.t('Leader'), onPress: () => this.handleLeader(selectedUser, !isLeader), - right: () => <CustomIcon name={isLeader ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isLeader ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} /> + right: () => <CustomIcon testID={isLeader ? 'action-sheet-set-leader-checked' : 'action-sheet-set-leader-unchecked'} name={isLeader ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isLeader ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} />, + testID: 'action-sheet-set-leader' }); } @@ -320,7 +324,8 @@ class RoomMembersView extends React.Component { icon: 'shield', title: I18n.t('Moderator'), onPress: () => this.handleModerator(selectedUser, !isModerator), - right: () => <CustomIcon name={isModerator ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isModerator ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} /> + right: () => <CustomIcon testID={isModerator ? 'action-sheet-set-moderator-checked' : 'action-sheet-set-moderator-unchecked'} name={isModerator ? 'checkbox-checked' : 'checkbox-unchecked'} size={20} color={isModerator ? themes[theme].tintActive : themes[theme].auxiliaryTintColor} />, + testID: 'action-sheet-set-moderator' }); } @@ -330,7 +335,8 @@ class RoomMembersView extends React.Component { icon: 'logout', danger: true, title: I18n.t('Remove_from_Team'), - onPress: () => this.handleRemoveFromTeam(selectedUser) + onPress: () => this.handleRemoveFromTeam(selectedUser), + testID: 'action-sheet-remove-from-team' }); } @@ -346,7 +352,8 @@ class RoomMembersView extends React.Component { confirmationText: I18n.t('Yes_remove_user'), onPress: () => this.handleRemoveUserFromRoom(selectedUser) }); - } + }, + testID: 'action-sheet-remove-from-room' }); } diff --git a/app/views/SelectListView.js b/app/views/SelectListView.js index a3ad3f8898c..5767df3f249 100644 --- a/app/views/SelectListView.js +++ b/app/views/SelectListView.js @@ -134,8 +134,8 @@ class SelectListView extends React.Component { const icon = item.teamMain ? teamIcon : channelIcon; const checked = this.isChecked(item.rid) ? 'check' : null; - const showRadio = () => <RadioButton selected={selected.includes(item.rid)} color={themes[theme].actionTintColor} size={ICON_SIZE} />; - const showCheck = () => <List.Icon name={checked} color={themes[theme].actionTintColor} />; + const showRadio = () => <RadioButton testID={selected ? `radio-button-selected-${ item.name }` : `radio-button-unselected-${ item.name }`} selected={selected.includes(item.rid)} color={themes[theme].actionTintColor} size={ICON_SIZE} />; + const showCheck = () => <List.Icon testID={checked ? `${ item.name }-checked` : `${ item.name }-unchecked`} name={checked} color={themes[theme].actionTintColor} />; return ( <> diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index 15905a9eed2..cee7fe13cfa 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -217,9 +217,9 @@ class TeamChannelsView extends React.Component { options.headerRight = () => ( <HeaderButton.Container> { showCreate - ? <HeaderButton.Item iconName='create' onPress={() => navigation.navigate('AddChannelTeamView', { teamId: this.teamId, teamChannels: data })} /> + ? <HeaderButton.Item iconName='create' testID='team-channels-view-create' onPress={() => navigation.navigate('AddChannelTeamView', { teamId: this.teamId, teamChannels: data })} /> : null} - <HeaderButton.Item iconName='search' onPress={this.onSearchPress} /> + <HeaderButton.Item iconName='search' testID='team-channels-view-search' onPress={this.onSearchPress} /> </HeaderButton.Container> ); navigation.setOptions(options); @@ -388,7 +388,8 @@ class TeamChannelsView extends React.Component { title: I18n.t('Auto-join'), icon: item.t === 'p' ? 'channel-private' : 'channel-public', onPress: () => this.toggleAutoJoin(item), - right: () => <CustomIcon name={autoJoinIcon} size={20} color={autoJoinIconColor} /> + right: () => <CustomIcon testID={isAutoJoinChecked ? 'auto-join-checked' : 'auto-join-unchecked'} name={autoJoinIcon} size={20} color={autoJoinIconColor} />, + testID: 'action-sheet-auto-join' }); } @@ -398,7 +399,8 @@ class TeamChannelsView extends React.Component { title: I18n.t('Remove_from_Team'), icon: 'close', danger: true, - onPress: () => this.remove(item) + onPress: () => this.remove(item), + testID: 'action-sheet-remove-from-team' }); } @@ -408,7 +410,8 @@ class TeamChannelsView extends React.Component { title: I18n.t('Delete'), icon: 'delete', danger: true, - onPress: () => this.delete(item) + onPress: () => this.delete(item), + testID: 'action-sheet-delete' }); } diff --git a/e2e/data/data.cloud.js b/e2e/data/data.cloud.js index 381d939f10d..c69b72515bd 100644 --- a/e2e/data/data.cloud.js +++ b/e2e/data/data.cloud.js @@ -42,6 +42,11 @@ const data = { name: `detox-private-${ value }` } }, + teams: { + private: { + name: `detox-team-${ value }` + } + }, registeringUser: { username: `newuser${ value }`, password: `password${ value }`, @@ -57,6 +62,11 @@ const data = { password: `passwordthree${ value }`, email: `mobile+registeringthree${ value }@rocket.chat` }, + registeringUser4: { + username: `newuserfour${ value }`, + password: `passwordfour${ value }`, + email: `mobile+registeringfour${ value }@rocket.chat` + }, random: value } module.exports = data; diff --git a/e2e/data/data.docker.js b/e2e/data/data.docker.js index 77f9f82c055..1a6bb156997 100644 --- a/e2e/data/data.docker.js +++ b/e2e/data/data.docker.js @@ -42,6 +42,11 @@ const data = { name: `detox-private-${ value }` } }, + teams: { + private: { + name: `detox-team-${ value }` + } + }, registeringUser: { username: `newuser${ value }`, password: `password${ value }`, @@ -57,6 +62,11 @@ const data = { password: `passwordthree${ value }`, email: `mobile+registeringthree${ value }@rocket.chat` }, + registeringUser4: { + username: `newuserfour${ value }`, + password: `passwordfour${ value }`, + email: `mobile+registeringfour${ value }@rocket.chat` + }, random: value } module.exports = data; diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index af72f73d1d6..7c71c9f3e17 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -67,7 +67,7 @@ async function starMessage(message){ await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Star')).tap(); + await element(by.label('Star')).atIndex(0).tap(); await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); }; @@ -78,7 +78,7 @@ async function pinMessage(message){ await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Pin')).tap(); + await element(by.label('Pin')).atIndex(0).tap(); await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); } diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 9b92d33b397..15acbda9ce3 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -98,10 +98,6 @@ describe('Join public room', () => { await expect(element(by.id('room-actions-starred'))).toBeVisible(); }); - it('should have search', async() => { - await expect(element(by.id('room-actions-search'))).toBeVisible(); - }); - it('should have share', async() => { await expect(element(by.id('room-actions-share'))).toBeVisible(); }); @@ -150,7 +146,6 @@ describe('Join public room', () => { await expect(element(by.id('room-actions-files'))).toBeVisible(); await expect(element(by.id('room-actions-mentioned'))).toBeVisible(); await expect(element(by.id('room-actions-starred'))).toBeVisible(); - await expect(element(by.id('room-actions-search'))).toBeVisible(); await element(by.type('UIScrollView')).atIndex(1).swipe('down'); await expect(element(by.id('room-actions-share'))).toBeVisible(); await expect(element(by.id('room-actions-pinned'))).toBeVisible(); diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index 820536fb8f9..02d87496380 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -168,7 +168,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Permalink')).tap(); + await element(by.label('Permalink')).atIndex(0).tap(); // TODO: test clipboard }); @@ -178,7 +178,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Copy')).tap(); + await element(by.label('Copy')).atIndex(0).tap(); // TODO: test clipboard }); @@ -191,7 +191,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'slow', 0.5); - await waitFor(element(by.label('Unstar'))).toBeVisible().withTimeout(6000); + await waitFor(element(by.label('Unstar')).atIndex(0)).toBeVisible().withTimeout(6000); await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8); }); @@ -243,7 +243,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Edit')).tap(); + await element(by.label('Edit')).atIndex(0).tap(); await element(by.id('messagebox-input')).typeText('ed'); await element(by.id('messagebox-send-message')).tap(); await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toExist().withTimeout(60000); @@ -255,7 +255,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Quote')).tap(); + await element(by.label('Quote')).atIndex(0).tap(); await element(by.id('messagebox-input')).typeText(`${ data.random }quoted`); await element(by.id('messagebox-send-message')).tap(); @@ -285,7 +285,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await waitFor(element(by.label('Delete'))).toExist().withTimeout(1000); - await element(by.label('Delete')).tap(); + await element(by.label('Delete')).atIndex(0).tap(); const deleteAlertMessage = 'You will not be able to recover this message!'; await waitFor(element(by.text(deleteAlertMessage)).atIndex(0)).toExist().withTimeout(10000); diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index fcfc8671194..20423570530 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -77,10 +77,6 @@ describe('Room actions screen', () => { await expect(element(by.id('room-actions-starred'))).toExist(); }); - it('should have search', async() => { - await expect(element(by.id('room-actions-search'))).toExist(); - }); - it('should have share', async() => { await waitFor(element(by.id('room-actions-share'))).toExist(); await expect(element(by.id('room-actions-share'))).toExist(); @@ -147,10 +143,6 @@ describe('Room actions screen', () => { await expect(element(by.id('room-actions-starred'))).toExist(); }); - it('should have search', async() => { - await expect(element(by.id('room-actions-search'))).toExist(); - }); - it('should have share', async() => { await waitFor(element(by.id('room-actions-share'))).toExist(); await expect(element(by.id('room-actions-share'))).toExist(); @@ -229,7 +221,7 @@ describe('Room actions screen', () => { await element(by.label(`${ data.random }messageToStar`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - await element(by.label('Unstar')).tap(); + await element(by.label('Unstar')).atIndex(0).tap(); await waitFor(element(by.label(`${ data.random }messageToStar`).withAncestor(by.id('starred-messages-view')))).toBeNotVisible().withTimeout(60000); await backToActions(); @@ -256,29 +248,29 @@ describe('Room actions screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - await element(by.label('Unpin')).tap(); + await element(by.label('Unpin')).atIndex(0).tap(); await waitFor(element(by.label(`${ data.random }messageToPin`).withAncestor(by.id('pinned-messages-view')))).not.toExist().withTimeout(6000); await backToActions(); }); - it('should search and find a message', async() => { + // it('should search and find a message', async() => { - //Go back to room and send a message - await tapBack(); - await mockMessage('messageToFind'); + // //Go back to room and send a message + // await tapBack(); + // await mockMessage('messageToFind'); - //Back into Room Actions - await element(by.id('room-header')).tap(); - await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); + // //Back into Room Actions + // await element(by.id('room-header')).tap(); + // await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); - await element(by.id('room-actions-search')).tap(); - await waitFor(element(by.id('search-messages-view'))).toExist().withTimeout(2000); - await expect(element(by.id('search-message-view-input'))).toExist(); - await element(by.id('search-message-view-input')).replaceText(`/${ data.random }messageToFind/`); - await waitFor(element(by.label(`${ data.random }messageToFind`).withAncestor(by.id('search-messages-view')))).toExist().withTimeout(60000); - await backToActions(); - }); + // await element(by.id('room-actions-search')).tap(); + // await waitFor(element(by.id('search-messages-view'))).toExist().withTimeout(2000); + // await expect(element(by.id('search-message-view-input'))).toExist(); + // await element(by.id('search-message-view-input')).replaceText(`/${ data.random }messageToFind/`); + // await waitFor(element(by.label(`${ data.random }messageToFind`).withAncestor(by.id('search-messages-view')))).toExist().withTimeout(60000); + // await backToActions(); + // }); }); describe('Notification', async() => { @@ -419,46 +411,46 @@ describe('Room actions screen', () => { it('should set/remove as owner', async() => { await openActionSheet(user.username); - await element(by.label('Set as owner')).tap(); + await element(by.id('action-sheet-set-owner')).tap(); await waitForToast(); await openActionSheet(user.username); - await element(by.label('Remove as owner')).tap(); + await waitFor(element(by.id('action-sheet-set-owner-checked'))).toBeVisible().withTimeout(6000); + await element(by.id('action-sheet-set-owner')).tap(); await waitForToast(); await openActionSheet(user.username); - // Tests if Remove as owner worked - await waitFor(element(by.label('Set as owner'))).toExist().withTimeout(5000); + await waitFor(element(by.id('action-sheet-set-owner-unchecked'))).toBeVisible().withTimeout(60000); await closeActionSheet(); }); it('should set/remove as leader', async() => { await openActionSheet(user.username); - await element(by.label('Set as leader')).tap(); + await element(by.id('action-sheet-set-leader')).tap(); await waitForToast(); await openActionSheet(user.username); - await element(by.label('Remove as leader')).tap(); + await waitFor(element(by.id('action-sheet-set-leader-checked'))).toBeVisible().withTimeout(6000); + await element(by.id('action-sheet-set-leader')).tap(); await waitForToast(); await openActionSheet(user.username); - // Tests if Remove as leader worked - await waitFor(element(by.label('Set as leader'))).toExist().withTimeout(5000); + await waitFor(element(by.id('action-sheet-set-owner-unchecked'))).toBeVisible().withTimeout(60000); await closeActionSheet(); }); it('should set/remove as moderator', async() => { await openActionSheet(user.username); - await element(by.label('Set as moderator')).tap(); + await element(by.id('action-sheet-set-moderator')).tap(); await waitForToast(); await openActionSheet(user.username); - await element(by.label('Remove as moderator')).tap(); + await waitFor(element(by.id('action-sheet-set-moderator-checked'))).toBeVisible().withTimeout(6000); + await element(by.id('action-sheet-set-moderator')).tap(); await waitForToast(); await openActionSheet(user.username); - // Tests if Remove as moderator worked - await waitFor(element(by.label('Set as moderator'))).toExist().withTimeout(5000); + await waitFor(element(by.id('action-sheet-set-moderator-unchecked'))).toBeVisible().withTimeout(60000); await closeActionSheet(); }); diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js index e5705b26bec..fccc9618540 100644 --- a/e2e/tests/room/04-discussion.spec.js +++ b/e2e/tests/room/04-discussion.spec.js @@ -102,10 +102,6 @@ describe('Discussion', () => { await expect(element(by.id('room-actions-starred'))).toBeVisible(); }); - it('should have search', async() => { - await expect(element(by.id('room-actions-search'))).toBeVisible(); - }); - it('should have share', async() => { await element(by.type('UIScrollView')).atIndex(1).swipe('up'); await expect(element(by.id('room-actions-share'))).toBeVisible(); diff --git a/e2e/tests/team/01-createteam.spec.js b/e2e/tests/team/01-createteam.spec.js index 4dfe17ca3a2..3c9a2260cd7 100644 --- a/e2e/tests/team/01-createteam.spec.js +++ b/e2e/tests/team/01-createteam.spec.js @@ -2,9 +2,9 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { tapBack, sleep, navigateToLogin, login, tryTapping } = require('../../helpers/app'); - +const { navigateToLogin, login } = require('../../helpers/app'); +const teamName = `team-${ data.random }`; describe('Create team screen', () => { before(async() => { @@ -18,38 +18,18 @@ describe('Create team screen', () => { await element(by.id('rooms-list-view-create-channel')).tap(); }); - describe('Render', async() => { - it('should have team button', async() => { - await waitFor(element(by.id('new-message-view-create-channel'))).toBeVisible().withTimeout(2000); - }); - }) - - describe('Usage', async() => { - it('should navigate to select users', async() => { - await element(by.id('new-message-view-create-channel')).tap(); - await waitFor(element(by.id('select-users-view'))).toExist().withTimeout(5000); - }); - }) - }); - - describe('Select Users', async() => { - it('should search users', async() => { - await element(by.id('select-users-view-search')).replaceText('rocket.cat'); - await waitFor(element(by.id(`select-users-view-item-rocket.cat`))).toBeVisible().withTimeout(10000); + it('should have team button', async() => { + await waitFor(element(by.id('new-message-view-create-team'))).toBeVisible().withTimeout(2000); }); - it('should select/unselect user', async() => { - // Spotlight issues - await element(by.id('select-users-view-item-rocket.cat')).tap(); - await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); - await element(by.id('selected-user-rocket.cat')).tap(); - await waitFor(element(by.id('selected-user-rocket.cat'))).toBeNotVisible().withTimeout(10000); - // Spotlight issues - await element(by.id('select-users-view-item-rocket.cat')).tap(); - await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); + it('should navigate to select users', async() => { + await element(by.id('new-message-view-create-team')).tap(); + await waitFor(element(by.id('select-users-view'))).toExist().withTimeout(5000); }); + }); - it('should create team', async() => { + describe('Select Users', async() => { + it('should nav to create team', async() => { await element(by.id('selected-users-view-submit')).tap(); await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); }); @@ -64,19 +44,33 @@ describe('Create team screen', () => { }); it('should create private team', async() => { - const room = `private${ data.random }`; await element(by.id('create-channel-name')).replaceText(''); - await element(by.id('create-channel-name')).typeText(room); + await element(by.id('create-channel-name')).typeText(teamName); await element(by.id('create-channel-submit')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); await expect(element(by.id('room-view'))).toExist(); - await waitFor(element(by.id(`room-view-title-${ room }`))).toExist().withTimeout(6000); - await expect(element(by.id(`room-view-title-${ room }`))).toExist(); - await tapBack(); - await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(10000); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(6000); - await expect(element(by.id(`rooms-list-view-item-${ room }`))).toExist(); + await waitFor(element(by.id(`room-view-title-${ teamName }`))).toExist().withTimeout(6000); + await expect(element(by.id(`room-view-title-${ teamName }`))).toExist(); }); }) }); + + describe('Delete Team', async() => { + it('should navigate to room info edit view', async() => { + await element(by.id('room-header')).tap(); + await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); + await element(by.id('room-actions-info')).tap(); + await waitFor(element(by.id('room-info-view'))).toExist().withTimeout(2000); + }); + + it('should delete team', async() => { + await element(by.id('room-info-view-edit-button')).tap(); + await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); + await element(by.id('room-info-edit-view-delete')).tap(); + await waitFor(element(by.text('Yes, delete it!'))).toExist().withTimeout(5000); + await element(by.text('Yes, delete it!')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(10000); + await waitFor(element(by.id(`rooms-list-view-item-${ teamName }`))).toBeNotVisible().withTimeout(60000); + }); + }); }); diff --git a/e2e/tests/team/02-team.spec.js b/e2e/tests/team/02-team.spec.js new file mode 100644 index 00000000000..f6f4d032946 --- /dev/null +++ b/e2e/tests/team/02-team.spec.js @@ -0,0 +1,296 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { navigateToLogin, login, tapBack, sleep, searchRoom } = require('../../helpers/app'); + +async function navigateToRoom(roomName) { + await searchRoom(`${ roomName }`); + await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); +} + +async function openActionSheet(username) { + await waitFor(element(by.id(`room-members-view-item-${ username }`))).toExist().withTimeout(5000); + await element(by.id(`room-members-view-item-${ username }`)).tap(); + await sleep(300); + await expect(element(by.id('action-sheet'))).toExist(); + await expect(element(by.id('action-sheet-handle'))).toBeVisible(); +} + +async function navigateToRoomActions() { + await waitFor(element(by.id('room-view'))).toExist().withTimeout(2000); + await element(by.id('room-header')).tap(); + await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); +} + +async function backToActions() { + await tapBack(); + await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(2000); +} +async function closeActionSheet() { + await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.6); +} + +async function waitForToast() { + await sleep(1000); +} + +describe('Team', () => { + const team = data.teams.private.name; + const user = data.users.alternate; + const room = `private${ data.random }`; + const existingRoom = data.groups.private.name; + + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + await navigateToRoom(team); + }); + + describe('Team Room', async() => { + describe('Team Header', async() => { + it('should have actions button ', async() => { + await expect(element(by.id('room-header'))).toExist(); + }); + + it('should have team channels button ', async() => { + await expect(element(by.id('room-view-header-team-channels'))).toExist(); + }); + + it('should have threads button ', async() => { + await expect(element(by.id('room-view-header-threads'))).toExist(); + }); + + + it('should have threads button ', async() => { + await expect(element(by.id('room-view-search'))).toExist(); + }); + }); + + describe('Team Header Usage', async() => { + it('should navigate to team channels view', async() => { + await element(by.id('room-view-header-team-channels')).tap(); + await waitFor(element(by.id('team-channels-view'))).toExist().withTimeout(5000); + }); + }) + + describe('Team Channels Header', async() => { + it('should have actions button ', async() => { + await expect(element(by.id('room-header'))).toExist(); + }); + + it('should have team channels button ', async() => { + await expect(element(by.id('team-channels-view-create'))).toExist(); + }); + + it('should have threads button ', async() => { + await expect(element(by.id('team-channels-view-search'))).toExist(); + }); + }); + + describe('Team Channels Header Usage', async() => { + it('should navigate to add team channels view', async() => { + await element(by.id('team-channels-view-create')).tap(); + await waitFor(element(by.id('add-channel-team-view'))).toExist().withTimeout(5000); + }); + + it('should have create new button', async() => { + await waitFor(element(by.id('add-channel-team-view-create-channel'))).toExist().withTimeout(5000); + }); + + it('should add existing button', async() => { + await waitFor(element(by.id('add-channel-team-view-add-existing'))).toExist().withTimeout(5000); + }); + }) + + describe('Channels', async() => { + it('should create new channel for team', async() => { + + await element(by.id('add-channel-team-view-create-channel')).tap(); + + await element(by.id('select-users-view-search')).replaceText('rocket.cat'); + await element(by.id('select-users-view-item-rocket.cat')).tap(); + await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(10000); + await element(by.id('selected-users-view-submit')).tap(); + + await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); + await element(by.id('create-channel-name')).replaceText(''); + await element(by.id('create-channel-name')).typeText(room); + await element(by.id('create-channel-submit')).tap(); + + await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); + await expect(element(by.id('room-view'))).toExist(); + await expect(element(by.id('room-view-header-team-channels'))).toExist(); + await element(by.id('room-view-header-team-channels')).tap(); + + await waitFor(element(by.id('team-channels-view'))).toExist().withTimeout(5000); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(6000); + await expect(element(by.id(`rooms-list-view-item-${ room }`))).toExist(); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); + await waitFor(element(by.id(`room-view-title-${ room }`))).toExist().withTimeout(60000); + await expect(element(by.id(`room-view-title-${ room }`))).toExist(); + await expect(element(by.id('room-view-header-team-channels'))).toExist(); + await expect(element(by.id('room-view-header-threads'))).toExist(); + await expect(element(by.id('room-view-search'))).toExist(); + await tapBack(); + }); + + it('should add existing channel to team', async() => { + + await element(by.id('team-channels-view-create')).tap(); + await waitFor(element(by.id('add-channel-team-view'))).toExist().withTimeout(5000); + + await element(by.id('add-channel-team-view-add-existing')).tap(); + await waitFor(element(by.id('add-existing-channel-view'))).toExist().withTimeout(60000) + await expect(element(by.id(`add-existing-channel-view-item-${ existingRoom }`))).toExist(); + await element(by.id(`add-existing-channel-view-item-${ existingRoom }`)).tap(); + await waitFor(element(by.id('add-existing-channel-view-submit'))).toExist().withTimeout(6000); + await element(by.id('add-existing-channel-view-submit')).tap(); + + await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); + await expect(element(by.id('room-view'))).toExist(); + await expect(element(by.id('room-view-header-team-channels'))).toExist(); + await element(by.id('room-view-header-team-channels')).tap(); + + await waitFor(element(by.id(`rooms-list-view-item-${ existingRoom }`))).toExist().withTimeout(10000); + }); + + it('should activate/deactivate auto-join to channel', async() => { + await element(by.id(`rooms-list-view-item-${ existingRoom }`)).atIndex(0).longPress(); + + await waitFor(element(by.id('action-sheet-auto-join'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id('auto-join-unchecked'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id('action-sheet-remove-from-team'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id('action-sheet-delete'))).toBeVisible().withTimeout(5000); + + await element(by.id('auto-join-unchecked')).tap(); + await waitFor(element(by.id('auto-join-tag'))).toBeVisible().withTimeout(5000); + await element(by.id(`rooms-list-view-item-${ existingRoom }`)).atIndex(0).longPress(); + + await waitFor(element(by.id('auto-join-checked'))).toBeVisible().withTimeout(5000); + await element(by.id('auto-join-checked')).tap(); + await waitFor(element(by.id('auto-join-tag'))).toBeNotVisible().withTimeout(5000); + await waitFor(element(by.id(`rooms-list-view-item-${ existingRoom }`))).toExist().withTimeout(6000); + }); + }) + + describe('Team actions', () => { + before(async() => { + await tapBack(); + await navigateToRoomActions(); + }); + + it('should add users to the team', async() => { + await waitFor(element(by.id('room-actions-add-user'))).toExist().withTimeout(10000); + await element(by.id('room-actions-add-user')).tap(); + + const rocketCat = 'rocket.cat'; + await element(by.id('select-users-view-search')).replaceText('rocket.cat'); + await waitFor(element(by.id(`select-users-view-item-${ rocketCat }`))).toExist().withTimeout(10000); + await element(by.id(`select-users-view-item-${ rocketCat }`)).tap(); + await waitFor(element(by.id(`selected-user-${ rocketCat }`))).toExist().withTimeout(5000); + + await waitFor(element(by.id('select-users-view-search'))).toExist().withTimeout(4000); + await element(by.id('select-users-view-search')).tap(); + await element(by.id('select-users-view-search')).replaceText(user.username); + await waitFor(element(by.id(`select-users-view-item-${ user.username }`))).toExist().withTimeout(10000); + await element(by.id(`select-users-view-item-${ user.username }`)).tap(); + await waitFor(element(by.id(`selected-user-${ user.username }`))).toExist().withTimeout(5000); + + await element(by.id('selected-users-view-submit')).tap(); + await sleep(300); + await waitFor(element(by.id('room-actions-members'))).toExist().withTimeout(10000); + await element(by.id('room-actions-members')).tap(); + await element(by.id('room-members-view-toggle-status')).tap(); + await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); + await backToActions(); + }); + + it('should try to leave to leave team and raise alert', async() => { + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); + await waitFor(element(by.id('room-actions-leave-channel'))).toExist().withTimeout(2000); + await element(by.id('room-actions-leave-channel')).tap(); + + await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${room}`))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${existingRoom}`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${room}`)).tap(); + + await waitFor(element(by.label('You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.'))).toExist().withTimeout(2000); + await element(by.text('OK')).tap(); + await waitFor(element(by.id('select-list-view-submit'))).toExist().withTimeout(2000); + await element(by.id('select-list-view-submit')).tap(); + await waitFor(element(by.text('Last owner cannot be removed'))).toExist().withTimeout(8000); + await element(by.text('OK')).tap(); + await tapBack(); + await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(2000); + }); + + describe('Room Members', async() => { + before(async() => { + await element(by.id('room-actions-members')).tap(); + await waitFor(element(by.id('room-members-view'))).toExist().withTimeout(2000); + }); + + it('should show all users', async() => { + await element(by.id('room-members-view-toggle-status')).tap(); + await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); + }); + + it('should filter user', async() => { + await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); + await element(by.id('room-members-view-search')).replaceText('rocket'); + await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toBeNotVisible().withTimeout(60000); + await element(by.id('room-members-view-search')).tap(); + await element(by.id('room-members-view-search')).clearText(''); + await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); + }); + + it('should remove member from team', async() => { + await openActionSheet('rocket.cat'); + await element(by.id('action-sheet-remove-from-team')).tap(); + await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(5000); + await waitFor(element(by.id(`select-list-view-item-${ room }`))).toExist().withTimeout(5000); + await element(by.id(`select-list-view-item-${ room }`)).tap(); + await waitFor(element(by.id(`${ room }-checked`))).toExist().withTimeout(5000); + await element(by.id(`select-list-view-item-${ room }`)).tap(); + await waitFor(element(by.id(`${ room }-unchecked`))).toExist().withTimeout(5000); + await element(by.id('select-list-view-submit')).tap(); + await waitFor(element(by.id('room-members-view-item-rocket.cat'))).toBeNotVisible().withTimeout(60000); + }); + + it('should set member as owner', async() => { + await openActionSheet(user.username); + await element(by.id('action-sheet-set-owner')).tap(); + await waitForToast(); + + await openActionSheet(user.username); + await waitFor(element(by.id('action-sheet-set-owner-checked'))).toBeVisible().withTimeout(6000); + await closeActionSheet(); + }); + + it('should leave team', async() => { + await tapBack(); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); + await waitFor(element(by.id('room-actions-leave-channel'))).toExist().withTimeout(2000); + await element(by.id('room-actions-leave-channel')).tap(); + + await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${room}`))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${existingRoom}`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${room}`)).tap(); + + await waitFor(element(by.label('You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.'))).toExist().withTimeout(2000); + await element(by.text('OK')).tap(); + await waitFor(element(by.id('select-list-view-submit'))).toExist().withTimeout(2000); + await element(by.id('select-list-view-submit')).tap(); + await waitFor(element(by.text(`You were removed from ${ team }`))).toExist().withTimeout(8000); + await element(by.text('OK')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); + }); + }); + }); + }); +}); \ No newline at end of file diff --git a/e2e/tests/team/03-moveconvert.spec.js b/e2e/tests/team/03-moveconvert.spec.js new file mode 100644 index 00000000000..17143c60926 --- /dev/null +++ b/e2e/tests/team/03-moveconvert.spec.js @@ -0,0 +1,89 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { navigateToLogin, login, tapBack, searchRoom, sleep } = require('../../helpers/app'); + +const toBeConverted = `to-be-converted-${ data.random }`; +const toBeMoved = `to-be-moved-${ data.random }`; + +const createChannel = async(room) => { + await element(by.id('rooms-list-view-create-channel')).tap(); + await waitFor(element(by.id('new-message-view'))).toExist().withTimeout(5000); + await element(by.id('new-message-view-create-channel')).tap(); + await waitFor(element(by.id('select-users-view'))).toExist().withTimeout(5000); + await element(by.id('selected-users-view-submit')).tap(); + await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); + await element(by.id('create-channel-name')).typeText(room); + await element(by.id('create-channel-submit')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(60000); + await waitFor(element(by.id(`room-view-title-${ room }`))).toExist().withTimeout(60000); + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); +} + +async function navigateToRoom(room) { + await searchRoom(`${ room }`); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); +} + +async function navigateToRoomActions(room) { + await navigateToRoom(room); + await element(by.id('room-header')).tap(); + await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); +} + +describe('Move/Convert Team', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.users.regular.username, data.users.regular.password); + }); + + describe('Convert', async() => { + before(async() => { + await createChannel(toBeConverted); + }); + + it('should convert channel to a team', async() => { + await navigateToRoomActions(toBeConverted); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); + await waitFor(element(by.id('room-actions-convert-to-team'))).toExist().withTimeout(2000); + await element(by.id('room-actions-convert-to-team')).tap(); + await waitFor(element(by.label('This can\'t be undone. Once you convert a channel to a team, you can not turn it back to a channel.'))).toExist().withTimeout(2000); + await element(by.text('Convert')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); + await waitFor(element(by.id(`room-view-title-${ toBeConverted }`))).toExist().withTimeout(6000); + }); + + after(async() => { + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); + }) + }); + + describe('Move', async() => { + before(async() => { + await createChannel(toBeMoved); + }); + + it('should move channel to a team', async() => { + await navigateToRoomActions(toBeMoved); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); + await waitFor(element(by.id('room-actions-move-to-team'))).toExist().withTimeout(2000); + await element(by.id('room-actions-move-to-team')).tap(); + await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); + await element(by.id('select-list-view-submit')).tap(); + await sleep(2000); + await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${toBeConverted}`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${toBeConverted}`)).tap(); + await element(by.id('select-list-view-submit')).atIndex(0).tap(); + await waitFor(element(by.label('After reading the previous intructions about this behavior, do you still want to move this channel to the selected team?'))).toExist().withTimeout(2000); + await element(by.text('Yes, move it!')).tap(); + await waitFor(element(by.id('room-view-header-team-channels'))).toExist().withTimeout(10000); + }); + }) +}); From 91371e88d95138e60e435d573b25bcf5d236d8f6 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Fri, 4 Jun 2021 14:07:26 -0400 Subject: [PATCH 137/177] [NEW] Add Teams to Directory (#3181) * Added Teams to DirectoryView * Fix icon * Minor tweaks * add tests Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/en.json | 1 + app/lib/rocketchat.js | 4 ++ app/presentation/DirectoryItem/index.js | 7 ++-- app/views/DirectoryView/Options.js | 6 +++ app/views/DirectoryView/index.js | 40 +++++++++++++++++-- .../assorted/09-joinfromdirectory.spec.js | 14 +++++-- 6 files changed, 62 insertions(+), 10 deletions(-) diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index a8f8d9635e4..e23bb33b7c4 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -332,6 +332,7 @@ "My_servers": "My servers", "N_people_reacted": "{{n}} people reacted", "N_users": "{{n}} users", + "N_channels": "{{n}} channels", "name": "name", "Name": "Name", "Navigation_history": "Navigation history", diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index f174aa1eb41..6e7b3bcb217 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -798,6 +798,10 @@ const RocketChat = { // RC 3.13.0 return this.sdk.get('teams.listRoomsOfUser', { teamId, userId }); }, + getTeamInfo({ teamId }) { + // RC 3.13.0 + return this.sdk.get('teams.info', { teamId }); + }, convertChannelToTeam({ rid, name, type }) { const params = { ...(type === 'c' diff --git a/app/presentation/DirectoryItem/index.js b/app/presentation/DirectoryItem/index.js index 75b944c5eb3..9f98969af0e 100644 --- a/app/presentation/DirectoryItem/index.js +++ b/app/presentation/DirectoryItem/index.js @@ -18,7 +18,7 @@ const DirectoryItemLabel = React.memo(({ text, theme }) => { }); const DirectoryItem = ({ - title, description, avatar, onPress, testID, style, rightLabel, type, rid, theme + title, description, avatar, onPress, testID, style, rightLabel, type, rid, theme, teamMain }) => ( <Touch onPress={onPress} @@ -36,7 +36,7 @@ const DirectoryItem = ({ /> <View style={styles.directoryItemTextContainer}> <View style={styles.directoryItemTextTitle}> - <RoomTypeIcon type={type} theme={theme} /> + <RoomTypeIcon type={type} teamMain={teamMain} theme={theme} /> <Text style={[styles.directoryItemName, { color: themes[theme].titleText }]} numberOfLines={1}>{title}</Text> </View> { description ? <Text style={[styles.directoryItemUsername, { color: themes[theme].auxiliaryText }]} numberOfLines={1}>{description}</Text> : null } @@ -56,7 +56,8 @@ DirectoryItem.propTypes = { style: PropTypes.any, rightLabel: PropTypes.string, rid: PropTypes.string, - theme: PropTypes.string + theme: PropTypes.string, + teamMain: PropTypes.bool }; DirectoryItemLabel.propTypes = { diff --git a/app/views/DirectoryView/Options.js b/app/views/DirectoryView/Options.js index ad8de1da18c..a88bf42be6c 100644 --- a/app/views/DirectoryView/Options.js +++ b/app/views/DirectoryView/Options.js @@ -64,6 +64,11 @@ export default class DirectoryOptions extends PureComponent { icon = 'channel-public'; } + if (itemType === 'teams') { + text = 'Teams'; + icon = 'teams'; + } + return ( <Touch onPress={() => changeType(itemType)} @@ -105,6 +110,7 @@ export default class DirectoryOptions extends PureComponent { </Touch> {this.renderItem('channels')} {this.renderItem('users')} + {this.renderItem('teams')} {isFederationEnabled ? ( <> diff --git a/app/views/DirectoryView/index.js b/app/views/DirectoryView/index.js index f78e74a21f0..c5cacb64d18 100644 --- a/app/views/DirectoryView/index.js +++ b/app/views/DirectoryView/index.js @@ -121,6 +121,8 @@ class DirectoryView extends React.Component { logEvent(events.DIRECTORY_SEARCH_USERS); } else if (type === 'channels') { logEvent(events.DIRECTORY_SEARCH_CHANNELS); + } else if (type === 'teams') { + logEvent(events.DIRECTORY_SEARCH_TEAMS); } } @@ -149,17 +151,34 @@ class DirectoryView extends React.Component { if (result.success) { this.goRoom({ rid: result.room._id, name: item.username, t: 'd' }); } - } else { + } else if (['p', 'c'].includes(item.t) && !item.teamMain) { const { room } = await RocketChat.getRoomInfo(item._id); this.goRoom({ rid: item._id, name: item.name, joinCodeRequired: room.joinCodeRequired, t: 'c', search: true }); + } else { + this.goRoom({ + rid: item._id, name: item.name, t: item.t, search: true, teamMain: item.teamMain, teamId: item.teamId + }); } } renderHeader = () => { const { type } = this.state; const { theme } = this.props; + let text = 'Users'; + let icon = 'user'; + + if (type === 'channels') { + text = 'Channels'; + icon = 'channel-public'; + } + + if (type === 'teams') { + text = 'Teams'; + icon = 'teams'; + } + return ( <> <SearchBox @@ -174,8 +193,8 @@ class DirectoryView extends React.Component { theme={theme} > <View style={[sharedStyles.separatorVertical, styles.toggleDropdownContainer, { borderColor: themes[theme].separatorColor }]}> - <CustomIcon style={[styles.toggleDropdownIcon, { color: themes[theme].tintColor }]} size={20} name={type === 'users' ? 'user' : 'channel-public'} /> - <Text style={[styles.toggleDropdownText, { color: themes[theme].tintColor }]}>{type === 'users' ? I18n.t('Users') : I18n.t('Channels')}</Text> + <CustomIcon style={[styles.toggleDropdownIcon, { color: themes[theme].tintColor }]} size={20} name={icon} /> + <Text style={[styles.toggleDropdownText, { color: themes[theme].tintColor }]}>{I18n.t(text)}</Text> <CustomIcon name='chevron-down' size={20} style={[styles.toggleDropdownArrow, { color: themes[theme].auxiliaryTintColor }]} /> </View> </Touch> @@ -217,12 +236,25 @@ class DirectoryView extends React.Component { /> ); } + + if (type === 'teams') { + return ( + <DirectoryItem + avatar={item.name} + description={item.name} + rightLabel={I18n.t('N_channels', { n: item.roomsCount })} + type={item.t} + teamMain={item.teamMain} + {...commonProps} + /> + ); + } return ( <DirectoryItem avatar={item.name} description={item.topic} rightLabel={I18n.t('N_users', { n: item.usersCount })} - type='c' + type={item.t} {...commonProps} /> ); diff --git a/e2e/tests/assorted/09-joinfromdirectory.spec.js b/e2e/tests/assorted/09-joinfromdirectory.spec.js index 308c4db2c82..039ef823c71 100644 --- a/e2e/tests/assorted/09-joinfromdirectory.spec.js +++ b/e2e/tests/assorted/09-joinfromdirectory.spec.js @@ -32,16 +32,24 @@ describe('Join room from directory', () => { await navigateToRoom(data.channels.detoxpublic.name); }) - it('should back and tap directory', async() => { + it('should search user and navigate', async() => { await tapBack(); await element(by.id('rooms-list-view-directory')).tap(); + await waitFor(element(by.id('directory-view'))).toExist().withTimeout(2000); + await element(by.id('directory-view-dropdown')).tap(); + await element(by.label('Users')).tap(); + await element(by.label('Search by')).tap(); + await navigateToRoom(data.users.alternate.username); }) it('should search user and navigate', async() => { + await tapBack(); + await element(by.id('rooms-list-view-directory')).tap(); + await waitFor(element(by.id('directory-view'))).toExist().withTimeout(2000); await element(by.id('directory-view-dropdown')).tap(); - await element(by.label('Users')).tap(); + await element(by.label('Teams')).tap(); await element(by.label('Search by')).tap(); - await navigateToRoom(data.users.alternate.username); + await navigateToRoom(data.teams.private.name); }) }); }); From cf6ddf63528424535c516a26a2c2b770379b4c22 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Fri, 4 Jun 2021 14:08:37 -0400 Subject: [PATCH 138/177] [CHORE] Add logEvents for Teams (#3182) * added events for team channels view and add existing channel view * add logevents for room actions view and room info edit view Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/utils/log/events.js | 19 ++++++++++++++++--- app/views/AddExistingChannelView.js | 6 +++--- app/views/RoomActionsView/index.js | 7 +++++++ app/views/RoomInfoEditView/index.js | 2 ++ app/views/TeamChannelsView.js | 5 +++++ 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/utils/log/events.js b/app/utils/log/events.js index a6d2eaa80b0..a183735ba46 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -100,8 +100,8 @@ export default { SELECTED_USERS_CREATE_GROUP_F: 'selected_users_create_group_f', // ADD EXISTING CHANNEL VIEW - EXISTING_CHANNEL_ADD_CHANNEL: 'existing_channel_add_channel', - EXISTING_CHANNEL_REMOVE_CHANNEL: 'existing_channel_remove_channel', + AEC_ADD_CHANNEL: 'aec_add_channel', + AEC_REMOVE_CHANNEL: 'aec_remove_channel', // CREATE CHANNEL VIEW CR_CREATE: 'cr_create', @@ -255,6 +255,13 @@ export default { RA_TOGGLE_BLOCK_USER_F: 'ra_toggle_block_user_f', RA_TOGGLE_ENCRYPTED: 'ra_toggle_encrypted', RA_TOGGLE_ENCRYPTED_F: 'ra_toggle_encrypted_f', + RA_LEAVE_TEAM: 'ra_leave_team', + RA_LEAVE_TEAM_F: 'ra_leave_team_f', + RA_CONVERT_TO_TEAM: 'ra_convert_to_team', + RA_CONVERT_TO_TEAM_F: 'ra_convert_to_team_f', + RA_MOVE_TO_TEAM: 'ra_move_to_team', + RA_MOVE_TO_TEAM_F: 'ra_move_to_team_f', + RA_SEARCH_TEAM: 'ra_search_team', // ROOM INFO VIEW RI_GO_RI_EDIT: 'ri_go_ri_edit', @@ -274,6 +281,8 @@ export default { RI_EDIT_TOGGLE_ARCHIVE_F: 'ri_edit_toggle_archive_f', RI_EDIT_DELETE: 'ri_edit_delete', RI_EDIT_DELETE_F: 'ri_edit_delete_f', + RI_EDIT_DELETE_TEAM: 'ri_edit_delete_team', + RI_EDIT_DELETE_TEAM_F: 'ri_edit_delete_team_f', // JITSI MEET VIEW JM_CONFERENCE_JOIN: 'jm_conference_join', @@ -327,5 +336,9 @@ export default { TC_SEARCH: 'tc_search', TC_CANCEL_SEARCH: 'tc_cancel_search', TC_GO_ACTIONS: 'tc_go_actions', - TC_GO_ROOM: 'tc_go_room' + TC_GO_ROOM: 'tc_go_room', + TC_DELETE_ROOM: 'tc_delete_room', + TC_DELETE_ROOM_F: 'tc_delete_room_f', + TC_TOGGLE_AUTOJOIN: 'tc_toggle_autojoin', + TC_TOGGLE_AUTOJOIN_F: 'tc_toggle_autojoin_f' }; diff --git a/app/views/AddExistingChannelView.js b/app/views/AddExistingChannelView.js index e7a590a5481..0edced4b066 100644 --- a/app/views/AddExistingChannelView.js +++ b/app/views/AddExistingChannelView.js @@ -126,8 +126,8 @@ class AddExistingChannelView extends React.Component { goRoom({ item: result, isMasterDetail }); } } catch (e) { - showErrorAlert(I18n.t(e.data.error), I18n.t('Add_Existing_Channel'), () => {}); logEvent(events.CT_ADD_ROOM_TO_TEAM_F); + showErrorAlert(I18n.t(e.data.error), I18n.t('Add_Existing_Channel'), () => {}); this.setState({ loading: false }); } } @@ -151,10 +151,10 @@ class AddExistingChannelView extends React.Component { animateNextTransition(); if (!this.isChecked(rid)) { - logEvent(events.EXISTING_CHANNEL_ADD_CHANNEL); + logEvent(events.AEC_ADD_CHANNEL); this.setState({ selected: [...selected, rid] }, () => this.setHeader()); } else { - logEvent(events.EXISTING_CHANNEL_REMOVE_CHANNEL); + logEvent(events.AEC_REMOVE_CHANNEL); const filterSelected = selected.filter(el => el !== rid); this.setState({ selected: filterSelected }, () => this.setHeader()); } diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 74dc308fa9b..0748cf783d0 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -431,6 +431,7 @@ class RoomActionsView extends React.Component { } handleLeaveTeam = async(selected) => { + logEvent(events.RA_LEAVE_TEAM); try { const { room } = this.state; const { navigation, isMasterDetail } = this.props; @@ -444,6 +445,7 @@ class RoomActionsView extends React.Component { } } } catch (e) { + logEvent(events.RA_LEAVE_TEAM_F); log(e); showErrorAlert( e.data.error @@ -492,6 +494,7 @@ class RoomActionsView extends React.Component { } handleConvertToTeam = async() => { + logEvent(events.RA_CONVERT_TO_TEAM); try { const { room } = this.state; const { navigation } = this.props; @@ -501,6 +504,7 @@ class RoomActionsView extends React.Component { navigation.navigate('RoomView'); } } catch (e) { + logEvent(events.RA_CONVERT_TO_TEAM_F); log(e); } } @@ -515,6 +519,7 @@ class RoomActionsView extends React.Component { } handleMoveToTeam = async(selected) => { + logEvent(events.RA_MOVE_TO_TEAM); try { const { room } = this.state; const { navigation } = this.props; @@ -523,6 +528,7 @@ class RoomActionsView extends React.Component { navigation.navigate('RoomView'); } } catch (e) { + logEvent(events.RA_MOVE_TO_TEAM_F); log(e); showErrorAlert(I18n.t('There_was_an_error_while_action', { action: I18n.t('moving_channel_to_team') })); } @@ -569,6 +575,7 @@ class RoomActionsView extends React.Component { } searchTeam = async(onChangeText) => { + logEvent(events.RA_SEARCH_TEAM); try { const { addTeamChannelPermission, createTeamPermission } = this.props; const QUERY_SIZE = 50; diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index 90d8b28f5e2..8905e5ee1ec 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -293,6 +293,7 @@ class RoomInfoEditView extends React.Component { } handleDeleteTeam = async(selected) => { + logEvent(events.RI_EDIT_DELETE_TEAM); const { navigation, isMasterDetail } = this.props; const { room } = this.state; try { @@ -305,6 +306,7 @@ class RoomInfoEditView extends React.Component { } } } catch (e) { + logEvent(events.RI_EDIT_DELETE_TEAM_F); log(e); showErrorAlert( e.data.error diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index cee7fe13cfa..82e4ecdc3e9 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -301,6 +301,7 @@ class TeamChannelsView extends React.Component { }, 1000, true); toggleAutoJoin = async(item) => { + logEvent(events.TC_TOGGLE_AUTOJOIN); try { const { data } = this.state; const result = await RocketChat.updateTeamRoom({ roomId: item._id, isDefault: !item.teamDefault }); @@ -314,6 +315,7 @@ class TeamChannelsView extends React.Component { this.setState({ data: newData }); } } catch (e) { + logEvent(events.TC_TOGGLE_AUTOJOIN_F); log(e); } } @@ -338,6 +340,7 @@ class TeamChannelsView extends React.Component { } removeRoom = async(item) => { + logEvent(events.TC_DELETE_ROOM); try { const { data } = this.state; const result = await RocketChat.removeTeamRoom({ roomId: item._id, teamId: this.team.teamId }); @@ -346,11 +349,13 @@ class TeamChannelsView extends React.Component { this.setState({ data: newData }); } } catch (e) { + logEvent(events.TC_DELETE_ROOM_F); log(e); } } delete = (item) => { + logEvent(events.TC_DELETE_ROOM); const { deleteRoom } = this.props; Alert.alert( From 5f2aba3d74d4cb4db06f4547050d5e46ea20764f Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 4 Jun 2021 15:10:01 -0300 Subject: [PATCH 139/177] [FIX] Disable jitsi call for teams (#3183) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomActionsView/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 0748cf783d0..0c7267d0ab9 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -681,7 +681,7 @@ class RoomActionsView extends React.Component { renderJitsi = () => { const { room } = this.state; const { jitsiEnabled } = this.props; - if (!jitsiEnabled) { + if (!jitsiEnabled || room.teamMain) { return null; } return ( From abf3945f32344834f27c789b51f92ed3d5eac470 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 4 Jun 2021 15:40:50 -0300 Subject: [PATCH 140/177] [FIX] Show alert `Not allowed` when click on a private channel that you don't be invited before (#3177) * [FIX] Showing only channel you joined * [FIX] How to get the params to mnavigation to other room from TeamChannelList * Show alert Not allowed when trying access private channel that you don't joined Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/TeamChannelsView.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index 82e4ecdc3e9..40c8c05acda 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -282,21 +282,20 @@ class TeamChannelsView extends React.Component { logEvent(events.TC_GO_ROOM); const { navigation, isMasterDetail } = this.props; try { - let params = {}; - if (item.rid) { - params = item; - } else { - const { room } = await RocketChat.getRoomInfo(item._id); - params = { - rid: item._id, name: RocketChat.getRoomTitle(room), joinCodeRequired: room.joinCodeRequired, t: room.t, teamId: room.teamId - }; - } + const { room } = await RocketChat.getRoomInfo(item._id); + const params = { + rid: item._id, name: RocketChat.getRoomTitle(room), joinCodeRequired: room.joinCodeRequired, t: room.t, teamId: room.teamId + }; if (isMasterDetail) { navigation.pop(); } goRoom({ item: params, isMasterDetail, navigationMethod: navigation.push }); } catch (e) { - // do nothing + if (e.data.error === 'not-allowed') { + showErrorAlert(I18n.t('error-not-allowed')); + } else { + showErrorAlert(e.data.error); + } } }, 1000, true); From fa00ef92efa45fef3938afbb92be52b97cb16358 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 4 Jun 2021 17:23:31 -0300 Subject: [PATCH 141/177] [IMPROVEMENT] Load team's rooms from local database on team leave (#3185) * [IMPROVEMENT] Search team list rooms of user in watermelon db * Minor nitpick Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomActionsView/index.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 0c7267d0ab9..77a4cc59b7a 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -461,11 +461,16 @@ class RoomActionsView extends React.Component { const { navigation } = this.props; try { - const result = await RocketChat.teamListRoomsOfUser({ teamId: room.teamId, userId: room.u._id }); + const db = database.active; + const subCollection = db.get('subscriptions'); + const rooms = await subCollection.query( + Q.where('team_id', Q.eq(room.teamId)), + Q.where('team_main', Q.notEq(true)) + ); - if (result.rooms?.length) { - const teamChannels = result.rooms.map(r => ({ - rid: r._id, + if (rooms.length) { + const teamChannels = rooms.map(r => ({ + rid: r.id, name: r.name, teamId: r.teamId, alert: r.isLastOwner From 2502b27564926f3a15bfa0ed04ef9c9ede292c21 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 4 Jun 2021 17:53:39 -0300 Subject: [PATCH 142/177] [FIX] Option to prevent users from using Invisible status (#3186) * [FIX] Option to prevent users from using Invisible status * Added error to pt-BR Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/constants/settings.js | 3 +++ app/i18n/locales/en.json | 1 + app/i18n/locales/pt-BR.json | 1 + app/views/StatusView.js | 14 +++++++++++--- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/constants/settings.js b/app/constants/settings.js index 9f0df8865a0..d684a11c10a 100644 --- a/app/constants/settings.js +++ b/app/constants/settings.js @@ -193,5 +193,8 @@ export default { }, Allow_Save_Media_to_Gallery: { type: 'valueAsBoolean' + }, + Accounts_AllowInvisibleStatusOption: { + type: 'valueAsString' } }; diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index e23bb33b7c4..1f37628d6c7 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -79,6 +79,7 @@ "error-user-registration-disabled": "User registration is disabled", "error-user-registration-secret": "User registration is only allowed via Secret URL", "error-you-are-last-owner": "You are the last owner. Please set new owner before leaving the room.", + "error-status-not-allowed": "Invisible status is disabled", "Actions": "Actions", "activity": "activity", "Activity": "Activity", diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 7eca8b04989..293959613d2 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -75,6 +75,7 @@ "error-user-registration-disabled": "O registro do usuário está desativado", "error-user-registration-secret": "O registro de usuário é permitido somente via URL secreta", "error-you-are-last-owner": "Você é o último proprietário da sala. Por favor defina um novo proprietário antes de sair.", + "error-status-not-allowed": "O status invisível está desativado", "Actions": "Ações", "activity": "atividade", "Activity": "Atividade", diff --git a/app/views/StatusView.js b/app/views/StatusView.js index 3f5a48c12b8..2ac35834379 100644 --- a/app/views/StatusView.js +++ b/app/views/StatusView.js @@ -8,6 +8,7 @@ import * as List from '../containers/List'; import Status from '../containers/Status/Status'; import TextInput from '../containers/TextInput'; import EventEmitter from '../utils/events'; +import { showErrorAlert } from '../utils/info'; import Loading from '../containers/Loading'; import RocketChat from '../lib/rocketchat'; import log, { logEvent, events } from '../utils/log'; @@ -58,7 +59,8 @@ class StatusView extends React.Component { theme: PropTypes.string, navigation: PropTypes.object, isMasterDetail: PropTypes.bool, - setUser: PropTypes.func + setUser: PropTypes.func, + Accounts_AllowInvisibleStatusOption: PropTypes.bool } constructor(props) { @@ -168,6 +170,7 @@ class StatusView extends React.Component { setUser({ status: item.id }); } } catch (e) { + showErrorAlert(I18n.t(e.data.errorType)); logEvent(events.SET_STATUS_FAIL); log(e); } @@ -181,10 +184,14 @@ class StatusView extends React.Component { render() { const { loading } = this.state; + const { Accounts_AllowInvisibleStatusOption } = this.props; + + const status = Accounts_AllowInvisibleStatusOption ? STATUS : STATUS.filter(s => s.id !== 'offline'); + return ( <SafeAreaView testID='status-view'> <FlatList - data={STATUS} + data={status} keyExtractor={item => item.id} renderItem={this.renderItem} ListHeaderComponent={this.renderHeader} @@ -199,7 +206,8 @@ class StatusView extends React.Component { const mapStateToProps = state => ({ user: getUserSelector(state), - isMasterDetail: state.app.isMasterDetail + isMasterDetail: state.app.isMasterDetail, + Accounts_AllowInvisibleStatusOption: state.settings.Accounts_AllowInvisibleStatusOption ?? true }); const mapDispatchToProps = dispatch => ({ From 87dd31a91adb13011019e527e8fe78126adf2b1b Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 7 Jun 2021 11:13:48 -0300 Subject: [PATCH 143/177] [FIX] Item not animating on tap on team's channels view (#3187) --- app/views/TeamChannelsView.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/views/TeamChannelsView.js b/app/views/TeamChannelsView.js index 40c8c05acda..64822aeae57 100644 --- a/app/views/TeamChannelsView.js +++ b/app/views/TeamChannelsView.js @@ -1,10 +1,9 @@ import React from 'react'; -import { Keyboard, Alert } from 'react-native'; +import { Keyboard, Alert, FlatList } from 'react-native'; import PropTypes from 'prop-types'; import { Q } from '@nozbe/watermelondb'; import { withSafeAreaInsets } from 'react-native-safe-area-context'; import { connect } from 'react-redux'; -import { FlatList } from 'react-native-gesture-handler'; import StatusBar from '../containers/StatusBar'; import RoomHeader from '../containers/RoomHeader'; From 29ccb4745670751938244dee7ed1eb8c494ced40 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Mon, 7 Jun 2021 11:56:11 -0300 Subject: [PATCH 144/177] [FIX] Directory sending incorrect room type (#3188) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/DirectoryView/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/DirectoryView/index.js b/app/views/DirectoryView/index.js index c5cacb64d18..6e60b44bc6b 100644 --- a/app/views/DirectoryView/index.js +++ b/app/views/DirectoryView/index.js @@ -154,7 +154,7 @@ class DirectoryView extends React.Component { } else if (['p', 'c'].includes(item.t) && !item.teamMain) { const { room } = await RocketChat.getRoomInfo(item._id); this.goRoom({ - rid: item._id, name: item.name, joinCodeRequired: room.joinCodeRequired, t: 'c', search: true + rid: item._id, name: item.name, joinCodeRequired: room.joinCodeRequired, t: item.t, search: true }); } else { this.goRoom({ From 0b7461e800b1870a5a725b33367c4f70982fbef3 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Mon, 7 Jun 2021 13:18:14 -0300 Subject: [PATCH 145/177] [FIX] App not showing proper alert on team leave (#3161) * [IMPROVEMENT] refactoring how to leave team * Fix the data passed to leaveTeam * Fixed the lint error in i18n, the path of i18n, merged two ifs in one * Fixed the Saga's flow when try to leave a room * Fixed params passed to leaveRoom * Fix the function name of leaveTeam Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/actions/room.js | 7 ++--- app/i18n/locales/en.json | 1 + app/reducers/room.js | 2 +- app/sagas/room.js | 24 +++++++++++++---- app/views/RoomActionsView/index.js | 43 +++++++----------------------- 5 files changed, 34 insertions(+), 43 deletions(-) diff --git a/app/actions/room.js b/app/actions/room.js index 59916bec0b2..4ad7e87f6ac 100644 --- a/app/actions/room.js +++ b/app/actions/room.js @@ -14,11 +14,12 @@ export function unsubscribeRoom(rid) { }; } -export function leaveRoom(rid, t) { +export function leaveRoom(roomType, room, selected) { return { type: types.ROOM.LEAVE, - rid, - t + room, + roomType, + selected }; } diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 1f37628d6c7..80722f82d8e 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -724,6 +724,7 @@ "creating_team": "creating team", "team-name-already-exists": "A team with that name already exists", "Add_Channel_to_Team": "Add Channel to Team", + "Left_The_Team_Successfully": "Left the team successfully", "Create_New": "Create New", "Add_Existing": "Add Existing", "Add_Existing_Channel": "Add Existing Channel", diff --git a/app/reducers/room.js b/app/reducers/room.js index 20f86d1ccf3..de47fcede2d 100644 --- a/app/reducers/room.js +++ b/app/reducers/room.js @@ -22,7 +22,7 @@ export default function(state = initialState, action) { case ROOM.LEAVE: return { ...state, - rid: action.rid, + rid: action.room.rid, isDeleting: true }; case ROOM.DELETE: diff --git a/app/sagas/room.js b/app/sagas/room.js index 3b1b321ad0e..9789447862a 100644 --- a/app/sagas/room.js +++ b/app/sagas/room.js @@ -4,6 +4,7 @@ import { takeLatest, take, select, delay, race, put } from 'redux-saga/effects'; +import EventEmitter from '../utils/events'; import Navigation from '../lib/Navigation'; import * as types from '../actions/actionsTypes'; import { removedRoom } from '../actions/room'; @@ -11,6 +12,7 @@ import RocketChat from '../lib/rocketchat'; import log, { logEvent, events } from '../utils/log'; import I18n from '../i18n'; import { showErrorAlert } from '../utils/info'; +import { LISTENER } from '../containers/Toast'; const watchUserTyping = function* watchUserTyping({ rid, status }) { const auth = yield select(state => state.login.isAuthenticated); @@ -30,13 +32,18 @@ const watchUserTyping = function* watchUserTyping({ rid, status }) { } }; -const handleRemovedRoom = function* handleRemovedRoom() { +const handleRemovedRoom = function* handleRemovedRoom(roomType) { const isMasterDetail = yield select(state => state.app.isMasterDetail); if (isMasterDetail) { yield Navigation.navigate('DrawerNavigator'); } else { yield Navigation.navigate('RoomsListView'); } + + if (roomType === 'team') { + EventEmitter.emit(LISTENER, { message: I18n.t('Left_The_Team_Successfully') }); + } + // types.ROOM.REMOVE is triggered by `subscriptions-changed` with `removed` arg const { timeout } = yield race({ deleteFinished: take(types.ROOM.REMOVED), @@ -47,12 +54,19 @@ const handleRemovedRoom = function* handleRemovedRoom() { } }; -const handleLeaveRoom = function* handleLeaveRoom({ rid, t }) { +const handleLeaveRoom = function* handleLeaveRoom({ room, roomType, selected }) { logEvent(events.RA_LEAVE); try { - const result = yield RocketChat.leaveRoom(rid, t); - if (result.success) { - yield handleRemovedRoom(); + let result = {}; + + if (roomType === 'channel') { + result = yield RocketChat.leaveRoom(room.rid, room.t); + } else if (roomType === 'team') { + result = yield RocketChat.leaveTeam({ teamName: room.name, ...(selected && { rooms: selected }) }); + } + + if (result?.success) { + yield handleRemovedRoom(roomType); } } catch (e) { logEvent(events.RA_LEAVE_F); diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 77a4cc59b7a..7ed2e1a579c 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -10,7 +10,9 @@ import { Q } from '@nozbe/watermelondb'; import { compareServerVersion, methods } from '../../lib/utils'; import Touch from '../../utils/touch'; import { setLoading as setLoadingAction } from '../../actions/selectedUsers'; -import { leaveRoom as leaveRoomAction, closeRoom as closeRoomAction } from '../../actions/room'; +import { + leaveRoom as leaveRoomAction, closeRoom as closeRoomAction +} from '../../actions/room'; import styles from './styles'; import sharedStyles from '../Styles'; import Avatar from '../../containers/Avatar'; @@ -54,7 +56,6 @@ class RoomActionsView extends React.Component { theme: PropTypes.string, fontScale: PropTypes.number, serverVersion: PropTypes.string, - isMasterDetail: PropTypes.bool, addUserToJoinedRoomPermission: PropTypes.array, addUserToAnyCRoomPermission: PropTypes.array, addUserToAnyPRoomPermission: PropTypes.array, @@ -426,39 +427,13 @@ class RoomActionsView extends React.Component { showConfirmationAlert({ message: I18n.t('Are_you_sure_you_want_to_leave_the_room', { room: RocketChat.getRoomTitle(room) }), confirmationText: I18n.t('Yes_action_it', { action: I18n.t('leave') }), - onPress: () => leaveRoom(room.rid, room.t) + onPress: () => leaveRoom('channel', room) }); } - handleLeaveTeam = async(selected) => { - logEvent(events.RA_LEAVE_TEAM); - try { - const { room } = this.state; - const { navigation, isMasterDetail } = this.props; - const result = await RocketChat.leaveTeam({ teamName: room.name, ...(selected && { rooms: selected }) }); - - if (result.success) { - if (isMasterDetail) { - navigation.navigate('DrawerNavigator'); - } else { - navigation.navigate('RoomsListView'); - } - } - } catch (e) { - logEvent(events.RA_LEAVE_TEAM_F); - log(e); - showErrorAlert( - e.data.error - ? I18n.t(e.data.error) - : I18n.t('There_was_an_error_while_action', { action: I18n.t('leaving_team') }), - I18n.t('Cannot_leave') - ); - } - } - leaveTeam = async() => { const { room } = this.state; - const { navigation } = this.props; + const { navigation, leaveRoom } = this.props; try { const db = database.active; @@ -479,21 +454,21 @@ class RoomActionsView extends React.Component { title: 'Leave_Team', data: teamChannels, infoText: 'Select_Team_Channels', - nextAction: data => this.handleLeaveTeam(data), + nextAction: data => leaveRoom('team', room, data), showAlert: () => showErrorAlert(I18n.t('Last_owner_team_room'), I18n.t('Cannot_leave')) }); } else { showConfirmationAlert({ message: I18n.t('You_are_leaving_the_team', { team: RocketChat.getRoomTitle(room) }), confirmationText: I18n.t('Yes_action_it', { action: I18n.t('leave') }), - onPress: () => this.handleLeaveTeam() + onPress: () => leaveRoom('team', room) }); } } catch (e) { showConfirmationAlert({ message: I18n.t('You_are_leaving_the_team', { team: RocketChat.getRoomTitle(room) }), confirmationText: I18n.t('Yes_action_it', { action: I18n.t('leave') }), - onPress: () => this.handleLeaveTeam() + onPress: () => leaveRoom('team', room) }); } } @@ -1122,7 +1097,7 @@ const mapStateToProps = state => ({ }); const mapDispatchToProps = dispatch => ({ - leaveRoom: (rid, t) => dispatch(leaveRoomAction(rid, t)), + leaveRoom: (roomType, room, selected) => dispatch(leaveRoomAction(roomType, room, selected)), closeRoom: rid => dispatch(closeRoomAction(rid)), setLoadingInvite: loading => dispatch(setLoadingAction(loading)) }); From b2c60e7b53b769cf02b63439ad821d484b841af7 Mon Sep 17 00:00:00 2001 From: "lingohub[bot]" <69908207+lingohub[bot]@users.noreply.github.com> Date: Mon, 7 Jun 2021 13:19:26 -0300 Subject: [PATCH 146/177] =?UTF-8?q?Language=20update=20from=20LingoHub=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3192)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Project Name: Rocket.Chat.ReactNative Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative User: Robot LingoHub Easy language translations with LingoHub 🚀 Co-authored-by: Robot LingoHub <robot@lingohub.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/ar.json | 4 +- app/i18n/locales/de.json | 97 ++++- app/i18n/locales/en.json | 4 +- app/i18n/locales/es-ES.json | 174 ++++---- app/i18n/locales/fr.json | 586 +++++++++++++++++---------- app/i18n/locales/it.json | 11 +- app/i18n/locales/ja.json | 4 +- app/i18n/locales/nl.json | 783 ++++++++++++++++++++++++------------ app/i18n/locales/pt-BR.json | 10 +- app/i18n/locales/ru.json | 59 ++- app/i18n/locales/tr.json | 10 +- app/i18n/locales/zh-TW.json | 5 +- 12 files changed, 1134 insertions(+), 613 deletions(-) diff --git a/app/i18n/locales/ar.json b/app/i18n/locales/ar.json index 8d2f1094ccc..6f188ca5548 100644 --- a/app/i18n/locales/ar.json +++ b/app/i18n/locales/ar.json @@ -284,6 +284,7 @@ "last_message": "الرسالة الأخيرة", "Leave_channel": "مغادرة القناة", "leaving_room": "مغادرة الغرفة", + "Leave": "مغادرة الغرفة", "leave": "مغادرة", "Legal": "قانوني", "Light": "ساطع", @@ -651,5 +652,6 @@ "You_will_be_logged_out_from_other_locations": "سيتم تسجيل خروج من الأماكن الأخرى", "Logged_out_of_other_clients_successfully": "تم تسجيل الخروج من الأماكن الأخرى بنجاح", "Logout_failed": "فشل تسجيل الخروج!", - "Log_analytics_events": "تحليلات سجل الأحداث" + "Log_analytics_events": "تحليلات سجل الأحداث", + "invalid-room": "غرفة غير صالحة" } \ No newline at end of file diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json index 1074ff730aa..0a7f7e1ff44 100644 --- a/app/i18n/locales/de.json +++ b/app/i18n/locales/de.json @@ -14,7 +14,7 @@ "error-delete-protected-role": "Eine geschützte Rolle kann nicht gelöscht werden", "error-department-not-found": "Abteilung nicht gefunden", "error-direct-message-file-upload-not-allowed": "Dateifreigabe in direkten Nachrichten nicht zulässig", - "error-duplicate-channel-name": "Ein Kanal mit dem Namen {{channel_name}} ist bereits vorhanden", + "error-duplicate-channel-name": "Ein Kanal mit dem Namen {{room_name}} ist bereits vorhanden", "error-email-domain-blacklisted": "Die E-Mail-Domain wird auf die schwarze Liste gesetzt", "error-email-send-failed": "Fehler beim Versuch, eine E-Mail zu senden: {{message}}", "error-save-image": "Fehler beim Speichern des Bildes", @@ -61,6 +61,7 @@ "error-message-editing-blocked": "Die Bearbeitung von Nachrichten ist gesperrt", "error-message-size-exceeded": "Die Nachrichtengröße überschreitet Message_MaxAllowedSize", "error-missing-unsubscribe-link": "Du musst den Link [abbestellen] angeben.", + "error-no-owner-channel": "Dieser Raum gehört dir nicht", "error-no-tokens-for-this-user": "Für diesen Benutzer gibt es keine Token", "error-not-allowed": "Nicht erlaubt", "error-not-authorized": "Nicht berechtigt", @@ -78,6 +79,7 @@ "error-user-registration-disabled": "Die Benutzerregistrierung ist deaktiviert", "error-user-registration-secret": "Die Benutzerregistrierung ist nur über eine geheime URL möglich", "error-you-are-last-owner": "Du bist der letzte Besitzer. Bitte setze einen neuen Besitzer, bevor du den Raum verlässt.", + "error-status-not-allowed": "Unsichtbar-Status ist deaktiviert", "Actions": "Aktionen", "activity": "Aktivität", "Activity": "Aktivität", @@ -90,6 +92,7 @@ "alert": "Benachrichtigung", "alerts": "Benachrichtigungen", "All_users_in_the_channel_can_write_new_messages": "Alle Benutzer im Kanal können neue Nachrichten schreiben", + "All_users_in_the_team_can_write_new_messages": "Alle Mitglieder eines Teams können neue Nachrichten schreiben", "A_meaningful_name_for_the_discussion_room": "Ein aussagekräftiger Name für den Diskussionsraum", "All": "alle", "All_Messages": "Alle Nachrichten", @@ -117,7 +120,7 @@ "Block_user": "Benutzer blockieren", "Browser": "Browser", "Broadcast_channel_Description": "Nur autorisierte Benutzer können neue Nachrichten schreiben, die anderen Benutzer können jedoch antworten", - "Broadcast_Channel": "Broadcastkanal", + "Broadcast_Channel": "Broadcast-Kanal", "Busy": "Beschäftigt", "By_proceeding_you_are_agreeing": "Indem du fortfährst, stimmst du zu unserem", "Cancel_editing": "Bearbeitung abbrechen", @@ -134,7 +137,7 @@ "Clear_cookies_desc": "Diese Aktion wird alle Login-Cookies löschen und erlaubt es dir, dich mit einem anderen Konto anzumelden.", "Clear_cookies_yes": "Ja, Cookies löschen", "Clear_cookies_no": "Nein, Cookies behalten", - "Click_to_join": "Klicken um teilzunehmen!", + "Click_to_join": "Klicken um beizutreten!", "Close": "Schließen", "Close_emoji_selector": "Schließe die Emoji-Auswahl", "Closing_chat": "Chat schließen", @@ -167,10 +170,10 @@ "Create_Channel": "Kanal erstellen", "Create_Direct_Messages": "Direkt-Nachricht erstellen", "Create_Discussion": "Diskussion erstellen", - "Created_snippet": "Erstellt ein Snippet", + "Created_snippet": "ein Snippet erstellt", "Create_a_new_workspace": "Erstelle einen neuen Arbeitsbereich", "Create": "Erstellen", - "Custom_Status": "eigener Status", + "Custom_Status": "Eigener Status", "Dark": "Dunkel", "Dark_level": "Dunkelstufe", "Default": "Standard", @@ -180,6 +183,7 @@ "delete": "löschen", "Delete": "Löschen", "DELETE": "LÖSCHEN", + "move": "verschieben", "deleting_room": "lösche Raum", "description": "Beschreibung", "Description": "Beschreibung", @@ -187,7 +191,7 @@ "Desktop_Notifications": "Desktop-Benachrichtigungen", "Desktop_Alert_info": "Diese Benachrichtigungen werden auf dem Desktop angezeigt", "Directory": "Verzeichnis", - "Direct_Messages": "Direkte Nachrichten", + "Direct_Messages": "Direktnachrichten", "Disable_notifications": "Benachrichtigungen deaktiveren", "Discussions": "Diskussionen", "Discussion_Desc": "Hilft dir die Übersicht zu behalten! Durch das Erstellen einer Diskussion wird ein Unter-Kanal im ausgewählten Raum erzeugt und beide verknüpft.", @@ -208,7 +212,7 @@ "Edit_Status": "Status ändern", "Edit_Invite": "Einladung bearbeiten", "End_to_end_encrypted_room": "Ende-zu-Ende-verschlüsselter Raum", - "end_to_end_encryption": "Nicht mehr Ende-zu-Ende-verschlüsseln", + "end_to_end_encryption": "Nicht mehr Ende-zu-Ende verschlüsseln", "Email_Notification_Mode_All": "Jede Erwähnung/Direktnachricht", "Email_Notification_Mode_Disabled": "Deaktiviert", "Email_or_password_field_is_empty": "Das E-Mail- oder Passwortfeld ist leer", @@ -225,6 +229,7 @@ "Encryption_error_title": "Dein Verschlüsselungs-Passwort scheint falsch zu sein", "Encryption_error_desc": "Es war nicht möglich deinen Verschlüsselungs-Key zu importieren.", "Everyone_can_access_this_channel": "Jeder kann auf diesen Kanal zugreifen", + "Everyone_can_access_this_team": "Jeder kann auf dieses Team zugreifen", "Error_uploading": "Fehler beim Hochladen", "Expiration_Days": "läuft ab (Tage)", "Favorite": "Favorisieren", @@ -269,7 +274,7 @@ "I_Saved_My_E2E_Password": "Ich habe mein Ende-zu-Ende-Passwort gesichert", "IP": "IP", "In_app": "In-App-Browser", - "In_App_And_Desktop": "In-app und Desktop", + "In_App_And_Desktop": "In-App und Desktop", "In_App_and_Desktop_Alert_info": "Zeigt ein Banner oben am Bildschirm, wenn die App geöffnet ist und eine Benachrichtigung auf dem Desktop.", "Invisible": "Unsichtbar", "Invite": "Einladen", @@ -286,16 +291,18 @@ "Join_our_open_workspace": "Tritt unserem offenen Arbeitsbereich bei", "Join_your_workspace": "Tritt deinem Arbeitsbereich bei", "Just_invited_people_can_access_this_channel": "Nur eingeladene Personen können auf diesen Kanal zugreifen", + "Just_invited_people_can_access_this_team": "Nur eingeladene Personen können auf das Team zugreifen", "Language": "Sprache", "last_message": "letzte Nachricht", "Leave_channel": "Kanal verlassen", "leaving_room": "Raum verlassen", + "Leave": "Raum verlassen", "leave": "verlassen", "Legal": "Rechtliches", "Light": "Hell", "License": "Lizenz", "Livechat": "Live-Chat", - "Livechat_edit": "Livechat bearbeiten", + "Livechat_edit": "Live-Chat bearbeiten", "Login": "Anmeldung", "Login_error": "Deine Zugangsdaten wurden abgelehnt! Bitte versuche es erneut.", "Login_with": "Einloggen mit", @@ -326,6 +333,7 @@ "My_servers": "Meine Server", "N_people_reacted": "{{n}} Leute haben reagiert", "N_users": "{{n}} Benutzer", + "N_channels": "{{n}} Kanäle", "name": "Name", "Name": "Name", "Navigation_history": "Navigations-Verlauf", @@ -435,6 +443,7 @@ "Review_app_unable_store": "Kann {{store}} nicht öffnen", "Review_this_app": "App bewerten", "Remove": "Entfernen", + "remove": "entfernen", "Roles": "Rollen", "Room_actions": "Raumaktionen", "Room_changed_announcement": "Raumansage geändert in: {{announcement}} von {{userBy}}", @@ -517,7 +526,7 @@ "Take_a_video": "Video aufnehmen", "Take_it": "Annehmen!", "tap_to_change_status": "Tippen um den Status zu ändern", - "Tap_to_view_servers_list": "Hier tippen, um die Serverliste anzuzeigen", + "Tap_to_view_servers_list": "Tippen, um die Serverliste anzuzeigen", "Terms_of_Service": " Nutzungsbedingungen", "Theme": "Erscheinungsbild", "The_user_wont_be_able_to_type_in_roomName": "Dem Nutzer wird es nicht möglich sein in {{roomName}} zu schreiben", @@ -592,7 +601,7 @@ "You_can_search_using_RegExp_eg": "Du kannst mit RegExp suchen. z.B. `/ ^ text $ / i`", "You_colon": "Du: ", "you_were_mentioned": "Du wurdest erwähnt", - "You_were_removed_from_channel": "Du wurdest aus dem Kanal {{channel}} entfernt", + "You_were_removed_from_channel": "Du wurdest aus {{channel}} entfernt", "you": "du", "You": "Du", "Logged_out_by_server": "Du bist vom Server abgemeldet worden. Bitte melde dich wieder an.", @@ -610,7 +619,7 @@ "You_will_unset_a_certificate_for_this_server": "Du entfernst ein Zertifikat für diesen Server", "Change_Language": "Sprache ändern", "Crash_report_disclaimer": "Wir verfolgen niemals den Inhalt deiner Chats. Der Crash-Report enthält nur für uns relevante Informationen um das Problem zu erkennen und zu beheben.", - "Type_message": "Type message", + "Type_message": "Nachricht schreiben", "Room_search": "Raum-Suche", "Room_selection": "Raum-Auswahl 1...9", "Next_room": "Nächster Raum", @@ -623,7 +632,7 @@ "Reply_in_Thread": "Im Thread antworten", "Server_selection": "Server-Auswahl", "Server_selection_numbers": "Server-Auswahl 1...9", - "Add_server": "Server hinufügen", + "Add_server": "Server hinzufügen", "New_line": "Zeilenumbruch", "You_will_be_logged_out_of_this_application": "Du wirst in dieser Anwendung vom Server abgemeldet.", "Clear": "Löschen", @@ -681,12 +690,9 @@ "No_threads_following": "Du folgst keinen Threads", "No_threads_unread": "Es gibt keine ungelesenen Threads", "Messagebox_Send_to_channel": "an Kanal senden", - "Set_as_leader": "Zum Diskussionsleiter ernennen", - "Set_as_moderator": "Zum Moderator ernennen", - "Set_as_owner": "Zum Besitzer machen", - "Remove_as_leader": "Als Diskussionsleiter entfernen", - "Remove_as_moderator": "Moderatorenrechte entfernen", - "Remove_as_owner": "Als Eigentümer entfernen", + "Leader": "Leiter", + "Moderator": "Moderator", + "Owner": "Eigentümer", "Remove_from_room": "Aus dem Raum entfernen", "Ignore": "Ignorieren", "Unignore": "Nicht mehr ignorieren", @@ -704,5 +710,56 @@ "Direct_message": "Direktnachricht", "Message_Ignored": "Nachricht ignoriert. Antippen um sie zu zeigen.", "Enter_workspace_URL": "Arbeitsbereich-URL", - "Workspace_URL_Example": "z.B. https://rocketchat.deine-firma.de" + "Workspace_URL_Example": "z.B. https://rocketchat.deine-firma.de", + "This_room_encryption_has_been_enabled_by__username_": "Die Verschlüsselung dieses Raums wurde von {{username}} aktiviert", + "This_room_encryption_has_been_disabled_by__username_": "Die Verschlüsselung dieses Raums wurde von {{username}} deaktiviert", + "Teams": "Teams", + "No_team_channels_found": "Keine Kanäle gefunden", + "Team_not_found": "Team nicht gefunden", + "Create_Team": "Team erstellen", + "Team_Name": "Team-Name", + "Private_Team": "Privates Team", + "Read_Only_Team": "Nur-Lesen-Team", + "Broadcast_Team": "Broadcast-Team", + "creating_team": "Team erstellen", + "team-name-already-exists": "Ein Team mit diesem Namen existiert bereits", + "Add_Channel_to_Team": "Kanal zum Team hinzufügen", + "Create_New": "Neu erstellen", + "Add_Existing": "Vorhandenes hinzufügen", + "Add_Existing_Channel": "Vorhandenen Kanal hinzufügen", + "Remove_from_Team": "Aus Team entfernen", + "Auto-join": "Automatischer Beitritt", + "Remove_Team_Room_Warning": "Möchten du diesen Kanal aus dem Team entfernen? Der Kanal wird zurück in den Arbeitsbereich verschoben.", + "Confirmation": "Bestätigung", + "invalid-room": "Ungültiger Raum", + "You_are_leaving_the_team": "Du verlässt das Team '{{team}}'", + "Leave_Team": "Team verlassen", + "Select_Team": "Team auswählen", + "Select_Team_Channels": "Wähle die Kanäle des Teams aus, die du verlassen möchtest.", + "Cannot_leave": "Verlassen nicht möglich", + "Cannot_remove": "Kann nicht entfernt werden", + "Cannot_delete": "Kann nicht gelöscht werden", + "Last_owner_team_room": "Du bist der letzte Eigentümer des Kanals. Wenn du das Team verlässt, bleibt der Kanal innerhalb des Teams aber du verwaltest ihn von außen.", + "last-owner-can-not-be-removed": "Letzter Besitzer kann nicht entfernt werden", + "Remove_User_Teams": "Wähle die Kanäle aus, aus denen der Benutzer entfernt werden soll.", + "Delete_Team": "Team löschen", + "Select_channels_to_delete": "Dies kann nicht rückgängig gemacht werden. Wenn du ein Team löschst, werden alle Chat-Inhalte und und Einstellungen gelöscht.\n\nWähle die Kanäle, die du löschen möchtest. Diejenigen, die du behalten möchtest, werden in deinem Arbeitsbereich verfügbar sein. Beachte, das öffentliche Kanäle öffentlich bleiben und für jeden sichtbar sein werden.", + "You_are_deleting_the_team": "Du löschst dieses Team", + "Removing_user_from_this_team": "Du entfernst {{user}} aus diesem Team", + "Remove_User_Team_Channels": "Wähle die Kanäle aus, aus denen der Benutzer entfernt werden soll.", + "Remove_Member": "Mitglied entfernen", + "leaving_team": "Team verlassen", + "removing_team": "Aus dem Team entfernen", + "moving_channel_to_team": "Kanal zu Team verschieben", + "deleting_team": "Team löschen", + "member-does-not-exist": "Mitglied existiert nicht", + "Convert": "Konvertieren", + "Convert_to_Team": "Zu Team konvertieren", + "Convert_to_Team_Warning": "Dies kann nicht rückgängig gemacht werden. Sobald du einen Kanal in ein Team umgewandelt hast, kannst du ihn nicht mehr zurück in einen Kanal verwandeln.", + "Move_to_Team": "Zu Team hinzufügen", + "Move_Channel_Paragraph": "Das Verschieben eines Kanals innerhalb eines Teams bedeutet, dass dieser Kanal im Kontext des Teams hinzugefügt wird, jedoch haben alle Mitglieder des Kanals, die nicht Mitglied des jeweiligen Teams sind, weiterhin Zugriff auf diesen Kanal, werden aber nicht als Teammitglieder hinzugefügt \n\nDie gesamte Verwaltung des Kanals wird weiterhin von den Eigentümern dieses Kanals vorgenommen.\n\nTeammitglieder und sogar Teameigentümer, die nicht Mitglied dieses Kanals sind, können keinen Zugriff auf den Inhalt des Kanals haben \n\nBitte beachte, dass der Besitzer des Teams in der Lage ist, Mitglieder aus dem Kanal zu entfernen.", + "Move_to_Team_Warning": "Nachdem du die vorherigen Anleitungen zu diesem Verhalten gelesen hast, möchtest du diesen Kanal immer noch in das ausgewählte Team verschieben?", + "Load_More": "Mehr laden", + "Load_Newer": "Neuere laden", + "Load_Older": "Ältere laden" } \ No newline at end of file diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 80722f82d8e..926b0c6746e 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -61,7 +61,7 @@ "error-message-editing-blocked": "Message editing is blocked", "error-message-size-exceeded": "Message size exceeds Message_MaxAllowedSize", "error-missing-unsubscribe-link": "You must provide the [unsubscribe] link.", - "error-no-owner-channel":"You don't own the channel", + "error-no-owner-channel": "You don't own the channel", "error-no-tokens-for-this-user": "There are no tokens for this user", "error-not-allowed": "Not allowed", "error-not-authorized": "Not authorized", @@ -763,4 +763,4 @@ "Load_More": "Load More", "Load_Newer": "Load Newer", "Load_Older": "Load Older" -} +} \ No newline at end of file diff --git a/app/i18n/locales/es-ES.json b/app/i18n/locales/es-ES.json index feb18f1a748..ac665704265 100644 --- a/app/i18n/locales/es-ES.json +++ b/app/i18n/locales/es-ES.json @@ -13,7 +13,7 @@ "error-delete-protected-role": "No se puede eliminar un rol protegido", "error-department-not-found": "Departamento no encontrado", "error-direct-message-file-upload-not-allowed": "No se permite compartir archivos en mensajes directos", - "error-duplicate-channel-name": "Ya existe un canal con nombre {{channel_name}}", + "error-duplicate-channel-name": "Ya existe un canal con nombre {{room_name}}", "error-email-domain-blacklisted": "El dominio del correo electrónico está en la lista negra", "error-email-send-failed": "Error al enviar el correo electrónico: {{message}}", "error-field-unavailable": "{{field}} ya está en uso :(", @@ -25,10 +25,10 @@ "error-invalid-asset": "El archivo archivo no es correcto", "error-invalid-channel": "El canal no es correcto.", "error-invalid-channel-start-with-chars": "Canal incorrecto. Debe comenzar con @ o #", - "error-invalid-custom-field": "Invalid custom field", - "error-invalid-custom-field-name": "Nombre inválido para el campo personalizado. Utilice sólo letras, números, guiones o guión bajo", + "error-invalid-custom-field": "Campo personalizado no válido", + "error-invalid-custom-field-name": "Nombre no válido para el campo personalizado. Utilice sólo letras, números, guiones o guión bajo", "error-invalid-date": "La fecha proporcionada no es correcta.", - "error-invalid-description": "La descipción no es correcta", + "error-invalid-description": "La descripción no es correcta", "error-invalid-domain": "El dominio no es correcto", "error-invalid-email": "El email {{email}} no es correcto", "error-invalid-email-address": "La dirección de correo no es correcta", @@ -45,9 +45,9 @@ "error-invalid-role": "El rol no es correcto", "error-invalid-room": "La sala no es correcta", "error-invalid-room-name": "No se puede asignar el nombre {{room_name}} a una sala.", - "error-invalid-room-type": "No se puede asginar el tipo {{type}} a una sala.", + "error-invalid-room-type": "No se puede asignar el tipo {{type}} a una sala.", "error-invalid-settings": "La configuración proporcionada no es correcta", - "error-invalid-subscription": "La subscripción no es correcta", + "error-invalid-subscription": "La suscripción no es correcta", "error-invalid-token": "El token no es correcto", "error-invalid-triggerWords": "El triggerWords no es correcto", "error-invalid-urls": "Las URLs no son correctas", @@ -62,23 +62,23 @@ "error-not-allowed": "No permitido", "error-not-authorized": "No autorizado", "error-push-disabled": "El Push está desactivado", - "error-remove-last-owner": "El usuario el único propietario existente. Debes establecer un nuevo propietario antes de eliminarlo.", + "error-remove-last-owner": "El usuario es el único propietario existente. Debes establecer un nuevo propietario antes de eliminarlo.", "error-role-in-use": "No puedes eliminar el rol dado que está en uso", "error-role-name-required": "Debes indicar el nombre del rol", "error-the-field-is-required": "El campo {{field}} es obligatorio.", - "error-too-many-requests": "Hemos recibido demasiadas peticiones. Debes esperar {{seconds}} segundos antes de continuar. Por favor, sé paciente.", + "error-too-many-requests": "Error, demasiadas peticiones. Debes esperar {{seconds}} segundos antes de continuar. Por favor, sé paciente.", "error-user-is-not-activated": "El usuario no está activo", "error-user-has-no-roles": "El usuario no tiene roles", - "error-user-limit-exceeded": "El número de usuarios que quieres invitiar al canal #channel_name supera el límite establecido por el adminitrador.", + "error-user-limit-exceeded": "El número de usuarios que quieres invitar al canal #channel_name supera el límite establecido por el administrador.", "error-user-not-in-room": "El usuario no está en la sala", "error-user-registration-custom-field": "error-user-registration-custom-field", - "error-user-registration-disabled": "El registro de usuario está deshabilitador", + "error-user-registration-disabled": "El registro de usuario está deshabilitado", "error-user-registration-secret": "El registro de usuarios sólo está permitido por URL secretas", - "error-you-are-last-owner": "El usuario el único propietario existente. Debes establecer un nuevo propietario antes de abandonar la sala.", + "error-you-are-last-owner": "Eres el único propietario existente. Debes establecer un nuevo propietario antes de abandonar la sala.", "Actions": "Acciones", "activity": "actividad", "Activity": "Actividad", - "Add_Reaction": "Reaccionar", + "Add_Reaction": "Añadir reacción", "Add_Server": "Añadir servidor", "Admin_Panel": "Panel de Control", "Alert": "Alerta", @@ -89,27 +89,27 @@ "All_Messages": "Todos los mensajes", "Allow_Reactions": "Permitir reacciones", "Alphabetical": "Alfabético", - "and_more": "más", + "and_more": "y más", "and": "y", "announcement": "anuncio", "Announcement": "Anuncio", - "Apply_Your_Certificate": "Applica tu Certificación", + "Apply_Your_Certificate": "Aplica tu certificado", "ARCHIVE": "FICHERO", - "archive": "Fichero", - "are_typing": "escribiendo", + "archive": "fichero", + "are_typing": "están escribiendo", "Are_you_sure_question_mark": "¿Estás seguro?", "Are_you_sure_you_want_to_leave_the_room": "¿Deseas salir de la sala {{room}}?", "Audio": "Audio", "Authenticating": "Autenticando", "Automatic": "Automático", - "Auto_Translate": "Auto-Translate", - "Avatar_changed_successfully": "Has cambiado tu Avatar!", + "Auto_Translate": "Traducción automática", + "Avatar_changed_successfully": "¡Avatar modificado correctamente!", "Avatar_Url": "URL del Avatar", "Away": "Ausente", "Back": "Volver", - "Black": "Black", + "Black": "Negro", "Block_user": "Bloquear usuario", - "Broadcast_channel_Description": "Sólo los usuario permitidos pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.", + "Broadcast_channel_Description": "Sólo los usuarios autorizados pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.", "Broadcast_Channel": "Canal de Transmisión", "Busy": "Ocupado", "By_proceeding_you_are_agreeing": "Al proceder estarás de acuerdo", @@ -121,35 +121,35 @@ "Channel_Name": "Nombre sala", "Channels": "Salas", "Chats": "Chats", - "Call_already_ended": "La llamada ya ha finalizado!", - "Click_to_join": "Unirme!", + "Call_already_ended": "¡!La llamada ya ha finalizado!", + "Click_to_join": "¡Unirme!", "Close": "Cerrar", "Close_emoji_selector": "Cerrar selector de emojis", "Choose": "Seleccionar", - "Choose_from_library": "Seleccionar desde Galería", - "Choose_file": "Seleccionar Archivo", + "Choose_from_library": "Seleccionar desde galería", + "Choose_file": "Seleccionar archivo", "Code": "Código", "Collaborative": "Colaborativo", "Confirm": "Confirmar", "Connect": "Conectar", "Connected": "Conectado", - "connecting_server": "conectando a servidor", + "connecting_server": "conectando al servidor", "Connecting": "Conectando...", - "Contact_us": "Contactar", + "Contact_us": "Contacta con nosotros", "Contact_your_server_admin": "Contacta con el administrador.", "Continue_with": "Continuar con", - "Copied_to_clipboard": "Copiado al portapapeles!", + "Copied_to_clipboard": "¡Copiado al portapapeles!", "Copy": "Copiar", "Permalink": "Enlace permanente", "Certificate_password": "Contraseña del certificado", - "Whats_the_password_for_your_certificate": "¿Cuál es la contraseña de tu cerficiado?", + "Whats_the_password_for_your_certificate": "¿Cuál es la contraseña de tu certificado?", "Create_account": "Crear una cuenta", - "Create_Channel": "Crear Sala", - "Created_snippet": "crear snippet", - "Create_a_new_workspace": "Crear un Workspace", + "Create_Channel": "Crear sala", + "Created_snippet": "crear mensaje en bloque", + "Create_a_new_workspace": "Crear un nuevo espacio de trabajo", "Create": "Crear", - "Dark": "Óscuro", - "Dark_level": "Nivel", + "Dark": "Oscuro", + "Dark_level": "Nivel de oscuridad", "Default": "Por defecto", "Delete_Room_Warning": "Eliminar a un usuario causará la eliminación de todos los mensajes creados por dicho usuario. Esta operación no se puede deshacer.", "delete": "eliminar", @@ -158,9 +158,9 @@ "deleting_room": "eliminando sala", "description": "descripción", "Description": "Descripción", - "Desktop_Options": "Opciones De Escritorio", + "Desktop_Options": "Opciones de escritorio", "Directory": "Directorio", - "Direct_Messages": "Mensajes directo", + "Direct_Messages": "Mensajes directos", "Disable_notifications": "Desactivar notificaciones", "Discussions": "Conversaciones", "Dont_Have_An_Account": "¿Todavía no tienes una cuenta?", @@ -169,7 +169,7 @@ "edit": "editar", "edited": "editado", "Edit": "Editar", - "Email_or_password_field_is_empty": "El email o la contraseña están vacios", + "Email_or_password_field_is_empty": "El email o la contraseña están vacíos", "Email": "E-mail", "email": "e-mail", "Enable_Auto_Translate": "Permitir Auto-Translate", @@ -184,9 +184,9 @@ "Finish_recording": "Finalizar grabación", "Following_thread": "Siguiendo hilo", "For_your_security_you_must_enter_your_current_password_to_continue": "Por seguridad, debes introducir tu contraseña para continuar", - "Forgot_password_If_this_email_is_registered": "Si este email está registrado, te enviaremos las instrucciones para resetear tu contraseña.Si no recibes un email en un rato, vuelve aquí e inténtalo de nuevo.", - "Forgot_password": "Restablecer mi contraseña", - "Forgot_Password": "Restabler mi Contraseña", + "Forgot_password_If_this_email_is_registered": "Si este email está registrado, te enviaremos las instrucciones para resetear tu contraseña. Si no recibes un email en breve, vuelve aquí e inténtalo de nuevo.", + "Forgot_password": "¿Ha olvidado su contraseña?", + "Forgot_Password": "Olvidé la contraseña", "Full_table": "Click para ver la tabla completa", "Group_by_favorites": "Agrupar por favoritos", "Group_by_type": "Agrupar por tipo", @@ -194,29 +194,29 @@ "Has_joined_the_channel": "se ha unido al canal", "Has_joined_the_conversation": "se ha unido a la conversación", "Has_left_the_channel": "ha dejado el canal", - "In_App_And_Desktop": "In-app and Desktop", - "In_App_and_Desktop_Alert_info": "Muestra un banner en la parte superior de la pantalla cuando la aplicación está abierta y muestra una notificación en el escritorio", + "In_App_And_Desktop": "En la aplicación y en el escritorio", + "In_App_and_Desktop_Alert_info": "Muestra un banner en la parte superior de la pantalla cuando la aplicación esté abierta y muestra una notificación en el escritorio", "Invisible": "Invisible", "Invite": "Invitar", - "is_a_valid_RocketChat_instance": "es una instancia válida Rocket.Chat", - "is_not_a_valid_RocketChat_instance": "no es una instancia válida Rocket.Chat", + "is_a_valid_RocketChat_instance": "es una instancia válida de Rocket.Chat", + "is_not_a_valid_RocketChat_instance": "no es una instancia válida de Rocket.Chat", "is_typing": "escribiendo", - "Invalid_server_version": "El servidor que intentas conectar está usando una versión que ya no es soportada por la aplicación : {{currentVersion}}. Requerimos una versión {{minVersion}}.", + "Invalid_server_version": "El servidor que intentas conectar está usando una versión que ya no está soportada por la aplicación : {{currentVersion}}. Se requiere una versión {{minVersion}}.", "Join": "Conectar", "Just_invited_people_can_access_this_channel": "Sólo gente invitada puede acceder a este canal.", "Language": "Idioma", "last_message": "último mensaje", - "Leave_channel": "Abandonar canal", + "Leave_channel": "Abandonar el canal", "leaving_room": "abandonando sala", "leave": "abandonar", "Legal": "Legal", "Light": "Claro", "License": "Licencia", - "Livechat": "Livechat", - "Login": "Acceder", + "Livechat": "LiveChat", + "Login": "Inicio de sesión", "Login_error": "¡Sus credenciales fueron rechazadas! Por favor, inténtelo de nuevo.", - "Login_with": "Acceder con", - "Logout": "Salir", + "Login_with": "Iniciar sesión con", + "Logout": "Cerrar sesión", "members": "miembros", "Members": "Miembros", "Mentioned_Messages": "Mensajes mencionados", @@ -248,19 +248,19 @@ "No_pinned_messages": "No hay mensajes fijados", "No_results_found": "No hay resultados", "No_starred_messages": "No hay mensajes destacados", - "No_thread_messages": "No hay hilots", + "No_thread_messages": "No hay hilos", "No_Message": "Sin mensajes", - "No_messages_yet": "No hay todavía mensajes", + "No_messages_yet": "No hay mensajes todavía", "No_Reactions": "No hay reacciones", "No_Read_Receipts": "No hay confirmaciones de lectura", - "Not_logged": "No logueado", + "Not_logged": "No ha iniciado sesión", "Not_RC_Server": "Esto no es un servidor de Rocket.Chat.\n{{contact}}", "Nothing": "Nada", - "Nothing_to_save": "No hay nada para guardar!", - "Notify_active_in_this_room": "Notificar usuarios activos en esta sala", + "Nothing_to_save": "¡No hay nada por guardar!", + "Notify_active_in_this_room": "Notificar a los usuarios activos en esta sala", "Notify_all_in_this_room": "Notificar a todos en esta sala", "Notifications": "Notificaciones", - "Notification_Duration": "Duración notificación", + "Notification_Duration": "Duración de la notificación", "Notification_Preferences": "Configuración de notificaciones", "Offline": "Sin conexión", "Oops": "Oops!", @@ -270,28 +270,28 @@ "Open_emoji_selector": "Abrir selector de emojis", "Open_Source_Communication": "Comunicación Open Source", "Password": "Contraseña", - "Permalink_copied_to_clipboard": "Enlace permanente copiado al portapapeles!", + "Permalink_copied_to_clipboard": "¡Enlace permanente copiado al portapapeles!", "Pin": "Fijar", "Pinned_Messages": "Mensajes fijados", "pinned": "fijado", "Pinned": "Fijado", - "Please_enter_your_password": "Por favor introduce tu contraseña", - "Preferences": "Configuración", - "Preferences_saved": "Configuración guardada!", - "Privacy_Policy": "Política de Privacidad", + "Please_enter_your_password": "Por favor introduce la contraseña", + "Preferences": "Preferencias", + "Preferences_saved": "¡Preferencias guardadas!", + "Privacy_Policy": "Política de privacidad", "Private_Channel": "Canal privado", "Private_Groups": "Grupos privados", "Private": "Privado", "Processing": "Procesando...", - "Profile_saved_successfully": "Perfil guardado correctamente!", + "Profile_saved_successfully": "¡Perfil guardado correctamente!", "Profile": "Perfil", "Public_Channel": "Canal público", "Public": "Público", - "Push_Notifications": "Push Notifications", + "Push_Notifications": "Notificaciones Push", "Push_Notifications_Alert_Info": "Estas notificaciones se le entregan cuando la aplicación no está abierta", "Quote": "Citar", "Reactions_are_disabled": "Las reacciones están desactivadas", - "Reactions_are_enabled": "Las reacciones están habilitadas", + "Reactions_are_enabled": "Las reacciones están activadas", "Reactions": "Reacciones", "Read": "Leer", "Read_Only_Channel": "Canal de sólo lectura", @@ -323,12 +323,12 @@ "Room_Info": "Información de la sala", "Room_Members": "Miembros de la sala", "Room_name_changed": "El nombre de la sala cambió a: {{name}} por {{userBy}}", - "SAVE": "SAVE", + "SAVE": "GUARDAR", "Save_Changes": "Guardar cambios", "Save": "Guardar", "saving_preferences": "guardando preferencias", "saving_profile": "guardando perfil", - "saving_settings": "guardando confiración", + "saving_settings": "guardando configuración", "Search_Messages": "Buscar mensajes", "Search": "Buscar", "Search_by": "Buscar por", @@ -349,14 +349,14 @@ "Server_version": "Versión servidor: {{version}}", "Set_username_subtitle": "El nombre de usuario se utiliza para permitir que otros le mencionen en los mensajes", "Settings": "Configuración", - "Settings_succesfully_changed": "Configuración cambiada correctamente!", + "Settings_succesfully_changed": "¡Configuración cambiada correctamente!", "Share": "Compartir", - "Share_this_app": "Compartir esta App", - "Show_Unread_Counter": "Mostrar contador No leídos", + "Share_this_app": "Compartir esta aplicación", + "Show_Unread_Counter": "Mostrar contador de no leídos", "Show_Unread_Counter_Info": "El contador de no leídos se muestra como una insignia a la derecha del canal, en la lista", "Sign_in_your_server": "Accede a tu servidor", - "Sign_Up": "Acceder", - "Some_field_is_invalid_or_empty": "Algún campo es incorrecto o vacío", + "Sign_Up": "Registrarse", + "Some_field_is_invalid_or_empty": "Algún campo no es correcto o está vacío", "Sorting_by": "Ordenado por {{key}}", "Sound": "Sonido", "Star_room": "Destacar sala", @@ -364,18 +364,18 @@ "Starred_Messages": "Mensajes destacados", "starred": "destacado", "Starred": "Destacado", - "Start_of_conversation": "Comiezo de la conversación", + "Start_of_conversation": "Comienzo de la conversación", "Started_discussion": "Comenzar una conversación:", "Started_call": "Llamada iniciada por {{userBy}}", "Submit": "Enviar", "Table": "Tabla", - "Take_a_photo": "Enviar Foto", - "Take_a_video": "Enviar Vídeo", + "Take_a_photo": "Enviar una foto", + "Take_a_video": "Enviar un vídeo", "tap_to_change_status": "pulsa para cambiar el estado", "Tap_to_view_servers_list": "Pulsa para ver la lista de servidores", "Terms_of_Service": "Términos de servicio", "Theme": "Tema", - "There_was_an_error_while_action": "Ha habido un error mientras {{action}}!", + "There_was_an_error_while_action": "¡Ha habido un error mientras {{action}}!", "This_room_is_blocked": "La sala está bloqueada", "This_room_is_read_only": "Esta sala es de sólo lectura", "Thread": "Hilo", @@ -388,21 +388,21 @@ "Try_again": "Intentar de nuevo", "Two_Factor_Authentication": "Autenticación de doble factor", "Type_the_channel_name_here": "Escribe el nombre del canal aquí", - "unarchive": "reactivar", - "UNARCHIVE": "UNARCHIVE", + "unarchive": "desarchivar", + "UNARCHIVE": "DESARCHIVAR", "Unblock_user": "Desbloquear usuario", - "Unfavorite": "Quitar Favorito", - "Unfollowed_thread": "Dejar de seguir el Hilo", + "Unfavorite": "Quitar favorito", + "Unfollowed_thread": "Dejar de seguir el hilo", "Unmute": "Desmutear", "unmuted": "Desmuteado", - "Unpin": "Quitar estado Fijado", - "unread_messages": "marcar como No leído", - "Unread": "Marcar como No leído", - "Unread_on_top": "Mensajes No leídos en la parte superior", - "Unstar": "Quitar Destacado", + "Unpin": "Quitar estado fijado", + "unread_messages": "marcar como no leído", + "Unread": "Marcar como no leído", + "Unread_on_top": "Mensajes no leídos en la parte superior", + "Unstar": "Quitar destacado", "Updating": "Actualizando...", "Uploading": "Subiendo", - "Upload_file_question_mark": "Subir fichero?", + "Upload_file_question_mark": "¿Subir fichero?", "Users": "Usuarios", "User_added_by": "Usuario {{userAdded}} añadido por {{userBy}}", "User_has_been_key": "El usuario ha sido {{key}}", @@ -423,9 +423,9 @@ "Welcome": "Bienvenido", "Whats_your_2fa": "¿Cuál es tu código 2FA?", "Without_Servers": "Sin servidores", - "Yes_action_it": "Sí, {{action}}!", + "Yes_action_it": "Sí, ¡{{action}}!", "Yesterday": "Ayer", - "You_are_in_preview_mode": "Estás en modo Vista Previa", + "You_are_in_preview_mode": "Estás en modo vista previa", "You_are_offline": "Estás desconectado", "You_can_search_using_RegExp_eg": "Puedes usar expresiones regulares. Por ejemplo, `/^text$/i`", "You_colon": "Tú: ", @@ -435,7 +435,7 @@ "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Necesita acceder al menos a un servidor Rocket.Chat para compartir algo.", "Your_certificate": "Tu certificado", "Version_no": "Versión: {{version}}", - "You_will_not_be_able_to_recover_this_message": "No podrás recuperar este mensaje!", + "You_will_not_be_able_to_recover_this_message": "¡No podrás recuperar este mensaje!", "Change_Language": "Cambiar idioma", "Crash_report_disclaimer": "Nunca rastreamos el contenido de sus conversaciones. El informe del error sólo contiene información relevante para nosotros con el fin de identificar los problemas y solucionarlos.", "Type_message": "Escribir mensaje", diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json index c61e22f24e7..91388e2deb3 100644 --- a/app/i18n/locales/fr.json +++ b/app/i18n/locales/fr.json @@ -3,45 +3,45 @@ "1_user": "1 utilisateur", "error-action-not-allowed": "{{action}} n'est pas autorisé", "error-application-not-found": "Application non trouvée", - "error-archived-duplicate-name": "Il y a un canal archivé avec nom {{room_name}}", - "error-avatar-invalid-url": "URL d'avatar invalide: {{url}}", + "error-archived-duplicate-name": "Il y a un canal archivé avec le nom {{room_name}}", + "error-avatar-invalid-url": "URL d'avatar invalide : {{url}}", "error-avatar-url-handling": "Erreur lors de la gestion du paramètre d'avatar à partir d'une URL ({{url}}) pour {{username}}", - "error-cant-invite-for-direct-room": "Impossible d'inviter l'utilisateur aux salles direct", + "error-cant-invite-for-direct-room": "Impossible d'inviter l'utilisateur aux salons directs", "error-could-not-change-email": "Impossible de changer l'adresse e-mail", "error-could-not-change-name": "Impossible de changer le nom", "error-could-not-change-username": "Impossible de changer le nom d'utilisateur", "error-could-not-change-status": "Impossible de changer le statut", "error-delete-protected-role": "Impossible de supprimer un rôle protégé", "error-department-not-found": "Département introuvable", - "error-direct-message-file-upload-not-allowed": "Le partage de fichiers n'est pas autorisé dans les messages directs", - "error-duplicate-channel-name": "un canal avec nom {{channel_name}} existe", + "error-direct-message-file-upload-not-allowed": "Partage de fichiers non autorisé dans les messages privés", + "error-duplicate-channel-name": "Un canal avec nom {{room_name}} existe", "error-email-domain-blacklisted": "Le domaine de messagerie est sur liste noire", - "error-email-send-failed": "Erreur lors de la tentative d'envoi d'un courrier électronique: {{message}}", - "error-save-image": "Erreur en sauvegardant l'image", - "error-save-video": "Erreur en sauvegardant la video", + "error-email-send-failed": "Erreur lors de la tentative d'envoi de l'e-mail : {{message}}", + "error-save-image": "Erreur lors de l'enregistrement de l'image", + "error-save-video": "Erreur en sauvegardant la vidéo", "error-field-unavailable": "{{field}} est déjà utilisé: (", - "error-file-too-large": "Le fichier est trop volumineux", - "error-importer-not-defined": "L'importateur n'a pas été défini correctement, il manque la classe import.", - "error-input-is-not-a-valid-field": "{{input}} N'est pas valide {{field}}", - "error-invalid-actionlink": "Lien d'action invalide", - "error-invalid-arguments": "Invalid arguments", - "error-invalid-asset": "élément incorrect", + "error-file-too-large": "Le fichier est trop grand", + "error-importer-not-defined": "L'importateur n'a pas été défini correctement, il manque la classe Import.", + "error-input-is-not-a-valid-field": "{{input}} n'est pas un {{field}} valide", + "error-invalid-actionlink": "Lien d'action non valide", + "error-invalid-arguments": "Arguments non valides", + "error-invalid-asset": "Elément non valide", "error-invalid-channel": "Canal invalide.", - "error-invalid-channel-start-with-chars": "Canal invalide. Commence par @ ou #", - "error-invalid-custom-field": "Champ personnalisé incorrect", - "error-invalid-custom-field-name": "Nom de champ personnalisé non valide. Utilisez uniquement des lettres, des chiffres, des traits d'union et de soulignement.", - "error-invalid-date": "Date fournie invalide.", + "error-invalid-channel-start-with-chars": "Canal non valide. Commencez par @ ou #", + "error-invalid-custom-field": "Champ personnalisé non valide", + "error-invalid-custom-field-name": "Nom de champ personnalisé non valide. Utilisez uniquement des lettres, des chiffres, des traits d'union et des traits de soulignement.", + "error-invalid-date": "Date fournie non valide.", "error-invalid-description": "Description invalide", "error-invalid-domain": "Domaine invalide", - "error-invalid-email": "Adresse e-mail non valide {{email}}", + "error-invalid-email": "E-mail {{email}} invalide", "error-invalid-email-address": "Adresse e-mail invalide", "error-invalid-file-height": "Hauteur de fichier non valide", "error-invalid-file-type": "Type de fichier invalide", - "error-invalid-file-width": "Largeur de fichier invalide", - "error-invalid-from-address": "Vous avez informé une adresse FROM invalide.", + "error-invalid-file-width": "Largeur de fichier non valide", + "error-invalid-from-address": "Vous avez renseigné une adresse FROM invalide.", "error-invalid-integration": "Intégration invalide", "error-invalid-message": "Message invalide", - "error-invalid-method": "Méthode invalide", + "error-invalid-method": "Méthode non valide", "error-invalid-name": "Nom incorrect", "error-invalid-password": "Mot de passe incorrect", "error-invalid-redirectUri": "RedirectUri invalide", @@ -50,47 +50,50 @@ "error-invalid-room-name": "{{room_name}} n'est pas un nom de salon valide", "error-invalid-room-type": "{{type}} n'est pas un type de salon valide.", "error-invalid-settings": "Paramètres fournis non valides", - "error-invalid-subscription": "Subscription invalide", + "error-invalid-subscription": "Abonnement invalide", "error-invalid-token": "Jeton invalide", "error-invalid-triggerWords": "Mots déclencheurs invalides", "error-invalid-urls": "URL non valides", "error-invalid-user": "Utilisateur invalide", "error-invalid-username": "Nom d'utilisateur invalide", - "error-invalid-webhook-response": "L'URL webhook a répondu avec un statut autre que 200", + "error-invalid-webhook-response": "L'URL du webhook a répondu avec un statut autre que 200", "error-message-deleting-blocked": "La suppression du message est bloquée", "error-message-editing-blocked": "La modification du message est bloquée", "error-message-size-exceeded": "La taille du message dépasse Message_MaxAllowedSize", - "error-missing-unsubscribe-link": "Vous devez fournir le [unsubscribe] lien.", + "error-missing-unsubscribe-link": "Vous devez fournir le lien [unsubscribe].", + "error-no-owner-channel": "Vous n'êtes pas propriétaire du canal", "error-no-tokens-for-this-user": "Il n'y a pas de jetons pour cet utilisateur", - "error-not-allowed": "Non autorisé", - "error-not-authorized": "Non autorisé", + "error-not-allowed": "Interdit", + "error-not-authorized": "Pas autorisé", "error-push-disabled": "Push est désactivé", - "error-remove-last-owner": "Ceci est le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de supprimer celui-ci.", - "error-role-in-use": "Impossible de supprimer le rôle car est utilisé", + "error-remove-last-owner": "C'est le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de supprimer celui-ci.", + "error-role-in-use": "Impossible de supprimer le rôle car il est en cours d'utilisation", "error-role-name-required": "Le nom du rôle est requis", "error-the-field-is-required": "Le champ {{field}} est requis.", - "error-too-many-requests": "Erreur, trop de demandes. Ralentissez, s'il vous plaît. Vous devez attendre {{seconds}} secondes avant d'essayer à nouveau.", + "error-too-many-requests": "Erreur, trop de demandes. Ralentissez, s'il vous plaît. Vous devez attendre {{seconds}} secondes avant de réessayer.", "error-user-is-not-activated": "L'utilisateur n'est pas activé", - "error-user-has-no-roles": "L'utilisateur ne dispose pas d'un rôle", + "error-user-has-no-roles": "L'utilisateur n'a aucun rôle", "error-user-limit-exceeded": "Le nombre d'utilisateurs que vous essayez d'inviter à #channel_name dépasse la limite définie par l'administrateur", - "error-user-not-in-room": "L'utilisateur n'est pas dans cette salle", + "error-user-not-in-room": "L'utilisateur n'est pas dans ce salon", "error-user-registration-custom-field": "error-user-registration-custom-field", "error-user-registration-disabled": "L'enregistrement de l'utilisateur est désactivé", - "error-user-registration-secret": "Enregistrement de l'utilisateur est autorisée uniquement via l'URL secret", - "error-you-are-last-owner": "Vous êtes le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de quitter la salle.", + "error-user-registration-secret": "L'enregistrement de l'utilisateur n'est autorisé que via l'URL secrète", + "error-you-are-last-owner": "Vous êtes le dernier propriétaire. Veuillez définir un nouveau propriétaire avant de quitter le salon.", + "error-status-not-allowed": "Le statut invisible est désactivé", "Actions": "Actions", "activity": "activité", "Activity": "Activité", "Add_Reaction": "Ajouter une réaction", "Add_Server": "Ajouter un serveur", "Add_users": "Ajouter des utilisateurs", - "Admin_Panel": "Panneau d'Administration", + "Admin_Panel": "Panneau d'administration", "Agent": "Agent", "Alert": "Alerte", "alert": "alerte", "alerts": "alertes", "All_users_in_the_channel_can_write_new_messages": "Tous les utilisateurs du canal peuvent écrire de nouveaux messages", - "A_meaningful_name_for_the_discussion_room": "Un nom explicite pour la salle de discussion", + "All_users_in_the_team_can_write_new_messages": "Tous les utilisateurs de l'équipe peuvent écrire de nouveaux messages", + "A_meaningful_name_for_the_discussion_room": "Un nom significatif pour le salon de discussion", "All": "Tout", "All_Messages": "Tous les messages", "Allow_Reactions": "Autoriser les réactions", @@ -99,113 +102,137 @@ "and": "et", "announcement": "annonce", "Announcement": "Annonce", - "Apply_Your_Certificate": "Valider le Certificat", + "Apply_Your_Certificate": "Appliquer votre certificat", "ARCHIVE": "ARCHIVER", "archive": "archiver", "are_typing": "sont en train d'écrire", "Are_you_sure_question_mark": "Êtes-vous sûr ?", - "Are_you_sure_you_want_to_leave_the_room": "Êtes-vous sûr de vouloir quitter le salon {{room}}?", + "Are_you_sure_you_want_to_leave_the_room": "Êtes-vous sûr de vouloir quitter le salon {{room}} ?", "Audio": "Audio", - "Authenticating": "Authentifier", + "Authenticating": "Authentification", "Automatic": "Automatique", - "Auto_Translate": "Traduction-Auto", - "Avatar_changed_successfully": "Avatar changé avec succès!", + "Auto_Translate": "Traduction automatique", + "Avatar_changed_successfully": "Avatar changé avec succès !", "Avatar_Url": "URL de l'avatar", - "Away": "absent", - "Back": "Arrière", + "Away": "Absent", + "Back": "Retour", "Black": "Noir", - "Block_user": "Bloquer l'Utilisateur", + "Block_user": "Bloquer l'utilisateur", "Browser": "Navigateur", "Broadcast_channel_Description": "Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages, mais les autres utilisateurs pourront répondre.", "Broadcast_Channel": "Canal de diffusion", "Busy": "Occupé", - "By_proceeding_you_are_agreeing": "En procédant, vous acceptez nos", + "By_proceeding_you_are_agreeing": "En poursuivant, vous acceptez nos", "Cancel_editing": "Annuler la modification", "Cancel_recording": "Annuler l'enregistrement", "Cancel": "Annuler", "changing_avatar": "changer d'avatar", - "creating_channel": "créer un canal", + "creating_channel": "création d'un canal", "creating_invite": "création d'une invitation", "Channel_Name": "Nom du canal", "Channels": "Canaux", "Chats": "Chats", - "Call_already_ended": "L'appel a déjà terminé !", - "Click_to_join": "Cliquez pour rejoindre!", + "Call_already_ended": "Appel déjà terminé !", + "Clear_cookies_alert": "Voulez-vous effacer tous les cookies ?", + "Clear_cookies_desc": "Cette action effacera tous les cookies de connexion ce qui vous permettra de vous connecter à d'autres comptes.", + "Clear_cookies_yes": "Oui, effacez les cookies", + "Clear_cookies_no": "Non, gardez les cookies", + "Click_to_join": "Cliquez pour rejoindre !", "Close": "Fermer", - "Close_emoji_selector": "Fermer le sélecteur d'emoji", - "Closing_chat": "Fermeture du Salon de discussion", + "Close_emoji_selector": "Fermer le sélecteur d'émoji", + "Closing_chat": "Fermeture du chat", "Change_language_loading": "Changement de la langue.", - "Chat_closed_by_agent": "Le salon de discussion a été fermé", + "Chat_closed_by_agent": "Chat fermé par l'agent", "Choose": "Choisir", - "Choose_from_library": "Choisissez parmi la bibliothèque", - "Choose_file": "Choisir un fichier", - "Choose_where_you_want_links_be_opened": "Choisissez ou vous souhaitez ouvrir vos liens", + "Choose_from_library": "Choisissez dans la bibliothèque", + "Choose_file": "Choisir le fichier", + "Choose_where_you_want_links_be_opened": "Choisissez oµ vous souhaitez ouvrir les liens", "Code": "Code", "Code_or_password_invalid": "Code ou mot de passe invalide", - "Collaborative": "Collaborative", + "Collaborative": "Collaboratif", "Confirm": "Confirmer", - "Connect": "Se connecter", + "Connect": "Connecter", "Connected": "Connecté", "connecting_server": "connexion en cours au serveur", - "Connecting": "Connexion ...", - "Contact_us": "Contactez nous", - "Contact_your_server_admin": "Contactez l'administrateur de votre serveur.", + "Connecting": "Connexion...", + "Contact_us": "Contactez-nous", + "Contact_your_server_admin": "Contactez votre administrateur de serveur.", "Continue_with": "Continuer avec", - "Copied_to_clipboard": "Copié dans le presse-papier!", + "Copied_to_clipboard": "Copié dans le presse-papier !", "Copy": "Copier", "Conversation": "Conversation", "Permalink": "Lien permanent", - "Certificate_password": "Mot de passe du Certificat", - "Clear_cache": "Effacer le cache local", + "Certificate_password": "Mot de passe du certificat", + "Clear_cache": "Effacer le cache du serveur local", "Clear_cache_loading": "Effacement du cache.", - "Whats_the_password_for_your_certificate": "Quel est le mot de passe du Certificat ?", + "Whats_the_password_for_your_certificate": "Quel est le mot de passe de votre certificat ?", "Create_account": "Créer un compte", "Create_Channel": "Créer un canal", - "Create_Direct_Messages": "Créer un message direct", - "Create_Discussion": "Créer une Discussion", + "Create_Direct_Messages": "Créer des messages directs", + "Create_Discussion": "Créer une discussion", "Created_snippet": "créé un extrait", "Create_a_new_workspace": "Créer un nouvel espace de travail", "Create": "Créer", - "Custom_Status": "Statut Personnalisé", + "Custom_Status": "Statut personnalisé", "Dark": "Sombre", - "Dark_level": "Niveau d'assombrissement", + "Dark_level": "Niveau d'obscurité", "Default": "Défaut", "Default_browser": "Navigateur par défaut", - "Delete_Room_Warning": "Supprimer une salle supprimera tous les messages postés dans la salle. Ça ne peut pas être annulé.", + "Delete_Room_Warning": "Supprimer une salon supprimera tous les messages publiés dans le salon. Ça ne peut pas être annulé.", "Department": "Département", "delete": "supprimer", "Delete": "Supprimer", "DELETE": "SUPPRIMER", - "deleting_room": "effacement de la salle", + "move": "déplacer", + "deleting_room": "suppression du salon", "description": "la description", "Description": "La description", - "Desktop_Options": "Desktop Options", + "Desktop_Options": "Options de bureau", + "Desktop_Notifications": "Notifications de bureau", + "Desktop_Alert_info": "Ces notifications sont transmises sur le bureau", "Directory": "Répertoire", "Direct_Messages": "Messages directs", "Disable_notifications": "Désactiver les notifications", "Discussions": "Discussions", - "Discussion_Desc": "Aide à garder un aperçu de ce qui se passe! En créant une discussion, un sous-canal de celui que vous avez sélectionné est créé et les deux sont liés.", + "Discussion_Desc": "Aide à garder une vue d'ensemble sur ce qui se passe ! En créant une discussion, un sous-canal de celui que vous avez sélectionné est créé et les deux sont liés.", "Discussion_name": "Nom de la discussion", "Done": "Fait", - "Dont_Have_An_Account": "Vous n'avez pas de compte?", - "Do_you_have_an_account": "Avez-vous un compte?", - "Do_you_have_a_certificate": "Avez-vous un certificat?", - "Do_you_really_want_to_key_this_room_question_mark": "Voulez-vous vraiment {{key}} cette salle?", + "Dont_Have_An_Account": "Vous n'avez pas de compte ?", + "Do_you_have_an_account": "Avez-vous un compte ?", + "Do_you_have_a_certificate": "Avez-vous un certificat ?", + "Do_you_really_want_to_key_this_room_question_mark": "Voulez-vous vraiment {{key}} ce salon ?", + "E2E_Encryption": "Cryptage E2E", + "E2E_How_It_Works_info1": "Vous pouvez désormais créer des groupes privés et des messages directs chiffrés. Vous pouvez également modifier les groupes privés ou DM existants pour les crypter.", + "E2E_How_It_Works_info2": "Il s'agit du *chiffrement de bout en bout*, la clé permettant de coder/décoder vos messages ne sera pas enregistrée sur le serveur. C'est pourquoi *vous devez stocker ce mot de passe à un endroit sûr* auquel vous pourrez accéder plus tard si vous en avez besoin.", + "E2E_How_It_Works_info3": "Si vous continuez, un mot de passe E2E sera automatiquement généré.", + "E2E_How_It_Works_info4": "Vous pouvez également configurer un nouveau mot de passe pour votre clé de cryptage à tout moment à partir de n'importe quel navigateur dans lequel vous avez entré le mot de passe E2E existant.", "edit": "modifier", - "edited": "édité", + "edited": "modifié", "Edit": "Modifier", - "Edit_Status": "Modifier le Statut", + "Edit_Status": "Modifier le statut", "Edit_Invite": "Modifier l'invitation", + "End_to_end_encrypted_room": "Salon crypté de bout en bout", + "end_to_end_encryption": "chiffrement de bout en bout", + "Email_Notification_Mode_All": "Chaque mention/MD", + "Email_Notification_Mode_Disabled": "Désactivé", "Email_or_password_field_is_empty": "Le champ e-mail ou mot de passe est vide", "Email": "E-mail", "email": "e-mail", "Empty_title": "Titre vide", - "Enable_Auto_Translate": "Activer la traduction-auto", + "Enable_Auto_Translate": "Activer la traduction automatique", "Enable_notifications": "Activer les notifications", + "Encrypted": "Crypté", + "Encrypted_message": "Message crypté", + "Enter_Your_E2E_Password": "Entrez votre mot de passe E2E", + "Enter_Your_Encryption_Password_desc1": "Cela vous permettra d'accéder à vos groupes privés cryptés et à vos messages directs.", + "Enter_Your_Encryption_Password_desc2": "Vous devez entrer le mot de passe pour coder/décoder les messages à chaque endroit où vous utilisez le chat.", + "Encryption_error_title": "Votre mot de passe de cryptage semble erroné", + "Encryption_error_desc": "Il n'a pas été possible de décoder votre clé de cryptage pour être importé.", "Everyone_can_access_this_channel": "Tout le monde peut accéder à ce canal", - "Error_uploading": "Erreur lors du téléchargement", + "Everyone_can_access_this_team": "Tout le monde peut accéder à cette équipe", + "Error_uploading": "Erreur lors de l'envoi", "Expiration_Days": "Expiration (Jours)", - "Favorite": "Favoris", + "Favorite": "Favori", "Favorites": "Favoris", "Files": "Fichiers", "File_description": "Description du fichier", @@ -214,38 +241,40 @@ "Following_thread": "Suivre le fil", "For_your_security_you_must_enter_your_current_password_to_continue": "Pour votre sécurité, vous devez entrer votre mot de passe actuel pour continuer.", "Forgot_password_If_this_email_is_registered": "Si cet e-mail est enregistré, nous vous enverrons des instructions pour réinitialiser votre mot de passe. Si vous ne recevez pas d'e-mail sous peu, veuillez revenir et réessayer.", - "Forgot_password": "Mot de passe oublié", + "Forgot_password": "Mot de passe oublié ?", "Forgot_Password": "Mot de passe oublié", - "Forward": "Faire suivre", - "Forward_Chat": "Faire suivre le canal de discussion", - "Forward_to_department": "Faire suivre au département", - "Forward_to_user": "Faire suivre a l'utilisateur", - "Full_table": "Cliquez pour voir la table complète", + "Forward": "Transmettre", + "Forward_Chat": "Transmettre la conversation", + "Forward_to_department": "Transmettre au département", + "Forward_to_user": "Transmettre à l'utilisateur", + "Full_table": "Cliquez pour voir le tableau complet", "Generate_New_Link": "Générer un nouveau lien", "Group_by_favorites": "Grouper par favoris", "Group_by_type": "Grouper par type", "Hide": "Cacher", "Has_joined_the_channel": "a rejoint le canal", "Has_joined_the_conversation": "a rejoint la conversation", - "Has_left_the_channel": "a quitté la chaîne", + "Has_left_the_channel": "a quitté le canal", "Hide_System_Messages": "Masquer les messages système", "Hide_type_messages": "Masquer les messages \"{{type}}\"", + "How_It_Works": "Comment cela fonctionne", "Message_HideType_uj": "L'utilisateur a rejoint", "Message_HideType_ul": "L'utilisateur est parti", - "Message_HideType_ru": "Utilisateur éjecté", + "Message_HideType_ru": "Utilisateur supprimé", "Message_HideType_au": "Utilisateur ajouté", "Message_HideType_mute_unmute": "Utilisateur rendu muet / a retrouvé la parole", - "Message_HideType_r": "Le nom du salon a été changé", - "Message_HideType_ut": "L'Utilisateur a rejoint la conversation", + "Message_HideType_r": "Nom du salon modifié", + "Message_HideType_ut": "L'utilisateur a rejoint la conversation", "Message_HideType_wm": "Bienvenue", "Message_HideType_rm": "Message supprimé", - "Message_HideType_subscription_role_added": "a été défini avec ce Rôle", - "Message_HideType_subscription_role_removed": "Ce Rôle n'est plus défini", - "Message_HideType_room_archived": "Salon Archivé", - "Message_HideType_room_unarchived": "Salon Désarchivé", + "Message_HideType_subscription_role_added": "Rôle assigné", + "Message_HideType_subscription_role_removed": "Le rôle n'est plus défini", + "Message_HideType_room_archived": "Salon archivé", + "Message_HideType_room_unarchived": "Salon désarchivé", + "I_Saved_My_E2E_Password": "J'ai enregistré mon mot de passe E2E", "IP": "IP", - "In_app": "In-app", - "In_App_And_Desktop": "In-app et Bureau", + "In_app": "Dans l'app", + "In_App_And_Desktop": "Dans l'application et sur le bureau", "In_App_and_Desktop_Alert_info": "Affiche une bannière en haut de l'écran lorsque l'application est ouverte et affiche une notification sur le bureau", "Invisible": "Invisible", "Invite": "Inviter", @@ -253,25 +282,29 @@ "is_not_a_valid_RocketChat_instance": "n'est pas une instance valide de Rocket.Chat", "is_typing": "est en train d'écrire", "Invalid_or_expired_invite_token": "Jeton d'invitation non valide ou expiré", - "Invalid_server_version": "Le serveur que vous essayez de connecter utilise une version qui n'est plus prise en charge par l'application: {{currentVersion}}.\n\nNous exigeons la version {{minVersion}}", + "Invalid_server_version": "Le serveur auquel vous essayez de vous connecter utilise une version qui n'est plus prise en charge par l'application : {{currentVersion}}.\n\nNous exigeons la version {{minVersion}}", "Invite_Link": "Lien d'invitation", - "Invite_users": "Inviter utilisateur", + "Invite_users": "Inviter des utilisateurs", "Join": "Rejoindre", + "Join_Code": "Code d'adhésion", + "Insert_Join_Code": "Insérer le code d'adhésion", "Join_our_open_workspace": "Rejoignez notre espace de travail ouvert", "Join_your_workspace": "Rejoignez votre espace de travail", - "Just_invited_people_can_access_this_channel": "Seuls les invités peuvent accéder à ce canal", + "Just_invited_people_can_access_this_channel": "Seuls les personnes invitées peuvent accéder à ce canal", + "Just_invited_people_can_access_this_team": "Seules les personnes invitées peuvent accéder à cette équipe", "Language": "Langue", - "last_message": "Dernier message", + "last_message": "dernier message", "Leave_channel": "Quitter le canal", - "leaving_room": "En quittent le canal", + "leaving_room": "quittant le salon", + "Leave": "Quitter", "leave": "quitter", - "Legal": "Légale", - "Light": "Lumière", + "Legal": "Légal", + "Light": "Clair", "License": "Licence", - "Livechat": "Livechat", - "Livechat_edit": "Livechat modification", + "Livechat": "Chat en direct", + "Livechat_edit": "Modifier le chat en direct", "Login": "Connexion", - "Login_error": "Vos identifiants ont été rejetés! Veuillez réessayer.", + "Login_error": "Vos identifiants ont été rejetés ! Veuillez réessayer.", "Login_with": "Se connecter avec", "Logging_out": "Déconnexion.", "Logout": "Se déconnecter", @@ -282,7 +315,7 @@ "Mentioned_Messages": "Messages mentionnés", "mentioned": "mentionné", "Mentions": "Mentions", - "Message_accessibility": "message de {{user}} à {{time}}: {{message}}", + "Message_accessibility": "Message de {{user}} à {{time}} : {{message}}", "Message_actions": "Actions de message", "Message_pinned": "Message épinglé", "Message_removed": "Message supprimé", @@ -293,13 +326,14 @@ "Message": "Message", "Messages": "Messages", "Message_Reported": "Message signalé", - "Microphone_Permission_Message": "Rocket.Chat doit avoir accès à votre microphone pour pouvoir envoyer un message audio.", + "Microphone_Permission_Message": "Rocket.Chat a besoin d'accéder à votre microphone pour que vous puissiez envoyer un message audio.", "Microphone_Permission": "Permission de microphone", "Mute": "Rendre muet", - "muted": "Rendu muet", + "muted": "muet", "My_servers": "Mes serveurs", "N_people_reacted": "{{n}} personnes ont réagi", "N_users": "{{n}} utilisateurs", + "N_channels": "{{n}} canaux", "name": "nom", "Name": "Nom", "Navigation_history": "Historique de navigation", @@ -313,26 +347,28 @@ "No_mentioned_messages": "Aucun message mentionné", "No_pinned_messages": "Aucun message épinglé", "No_results_found": "Aucun résultat trouvé", - "No_starred_messages": "Pas de messages suivis", - "No_thread_messages": "Aucun fil de discussion", + "No_starred_messages": "Aucun message suivi", + "No_thread_messages": "Aucun message de fil de discussion", "No_label_provided": "Aucun {{label}} fourni.", "No_Message": "Aucun message", "No_messages_yet": "Pas encore de messages", "No_Reactions": "Aucune réaction", - "No_Read_Receipts": "Pas d'accusé de lecture", + "No_Read_Receipts": "Aucun accusé de lecture", "Not_logged": "Non connecté", "Not_RC_Server": "Ce n'est pas un serveur Rocket.Chat.\n{{contact}}", "Nothing": "Rien", - "Nothing_to_save": "Rien à enregistrer!", - "Notify_active_in_this_room": "Notifier les utilisateurs actifs dans cette salle", - "Notify_all_in_this_room": "Notifier tous dans cette salle", + "Nothing_to_save": "Rien à enregistrer !", + "Notify_active_in_this_room": "Notifier les utilisateurs actifs dans ce salon", + "Notify_all_in_this_room": "Avertir tout le monde dans ce salon", "Notifications": "Notifications", - "Notification_Duration": "Durée de Notification", - "Notification_Preferences": "Préférences de Notification", - "No_available_agents_to_transfer": "Aucun agent disponible à qui transférer", + "Notification_Duration": "Durée des notifications", + "Notification_Preferences": "Préférences de notification", + "No_available_agents_to_transfer": "Aucun agent disponible pour le transfert", "Offline": "Hors ligne", - "Oops": "Oops!", - "Omnichannel": "Omnichannel", + "Oops": "Oups !", + "Omnichannel": "Omnicanal", + "Open_Livechats": "Discussions en cours", + "Omnichannel_enable_alert": "Vous n'êtes pas disponible sur Omnicanal. Souhaitez-vous être disponible ?", "Onboarding_description": "Un espace de travail est l'espace de collaboration de votre équipe ou organisation. Demandez à l'administrateur de l'espace de travail l'adresse pour rejoindre ou créez-en une pour votre équipe.", "Onboarding_join_workspace": "Rejoindre un espace de travail", "Onboarding_subtitle": "Au-delà de la collaboration d'équipe", @@ -343,15 +379,15 @@ "Onboarding_more_options": "Plus d'options", "Online": "En ligne", "Only_authorized_users_can_write_new_messages": "Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages.", - "Open_emoji_selector": "Ouvrir sélecteur emoji", + "Open_emoji_selector": "Ouvrir le sélecteur d'émoji", "Open_Source_Communication": "Communication Open Source", "Open_your_authentication_app_and_enter_the_code": "Ouvrez votre application d'authentification et entrez le code.", "OR": "OU", "OS": "OS", "Overwrites_the_server_configuration_and_use_room_config": "Écrase la configuration du serveur et utilise la configuration du salon", "Password": "Mot de passe", - "Parent_channel_or_group": "Chaîne ou groupe parent", - "Permalink_copied_to_clipboard": "Lien permanent copié dans le presse-papier!", + "Parent_channel_or_group": "Canal ou groupe parent", + "Permalink_copied_to_clipboard": "Lien permanent copié dans le presse-papiers !", "Phone": "Téléphone", "Pin": "Épingler", "Pinned_Messages": "Messages épinglés", @@ -359,20 +395,20 @@ "Pinned": "Épinglé", "Please_add_a_comment": "Veuillez ajouter un commentaire", "Please_enter_your_password": "Veuillez entrer votre mot de passe", - "Please_wait": "Attendez s'il vous plaît", + "Please_wait": "Veuillez patienter.", "Preferences": "Préférences", - "Preferences_saved": "Préférences sauvegardées!", + "Preferences_saved": "Préférences sauvegardées !", "Privacy_Policy": " Politique de confidentialité", "Private_Channel": "Canal privé", "Private_Groups": "Groupes privés", "Private": "Privé", - "Processing": "En traitement...", - "Profile_saved_successfully": "Profil enregistré avec succès!", + "Processing": "Traitement...", + "Profile_saved_successfully": "Profil enregistré avec succès !", "Profile": "Profil", - "Public_Channel": "Canal Public", + "Public_Channel": "Canal public", "Public": "Public", "Push_Notifications": "Notifications Push", - "Push_Notifications_Alert_Info": "Ces notifications vous sont livrées lorsque l'application n'est pas ouverte", + "Push_Notifications_Alert_Info": "Ces notifications vous sont envoyées lorsque l'application n'est pas ouverte", "Quote": "Citation", "Reactions_are_disabled": "Les réactions sont désactivées", "Reactions_are_enabled": "Les réactions sont activées", @@ -380,61 +416,68 @@ "Read": "Lecture", "Read_External_Permission_Message": "Rocket.Chat doit accéder aux photos, aux médias et aux fichiers sur votre appareil", "Read_External_Permission": "Permission de lecture des fichiers", - "Read_Only_Channel": "Chaîne en lecture seule", + "Read_Only_Channel": "Canal en lecture seule", "Read_Only": "Lecture seule", "Read_Receipt": "Accusé de réception", "Receive_Group_Mentions": "Recevoir des mentions de groupe", - "Receive_Group_Mentions_Info": "Recevoir les mentions @all et @here", + "Receive_Group_Mentions_Info": "Recevoir des mentions @all et @here", "Register": "S'inscrire", "Repeat_Password": "Répéter le mot de passe", - "Replied_on": "Répondu le:", + "Replied_on": "A répondu le :", "replies": "réponses", "reply": "répondre", "Reply": "Répondre", "Report": "Signaler", "Receive_Notification": "Recevoir une notification", - "Receive_notifications_from": "Recevoir les notifications de {{name}}", + "Receive_notifications_from": "Recevoir des notifications de {{name}}", "Resend": "Renvoyer", "Reset_password": "Réinitialiser le mot de passe", "resetting_password": "réinitialisation du mot de passe", "RESET": "RÉINITIALISER", "Return": "Retour", - "Review_app_title": "Appréciez-vous cette application?", + "Review_app_title": "Appréciez-vous cette application ?", "Review_app_desc": "Donnez-nous 5 étoiles sur {{store}}", - "Review_app_yes": "Bien sur!", + "Review_app_yes": "Bien sûr !", "Review_app_no": "Non", - "Review_app_later": "plus tard", + "Review_app_later": "Peut-être plus tard", "Review_app_unable_store": "Impossible d'ouvrir {{store}}", "Review_this_app": "Donnez votre avis sur cette application", - "Remove": "Retirer", + "Remove": "Supprimer", + "remove": "supprimer", "Roles": "Rôles", - "Room_actions": "Actions de canal", - "Room_changed_announcement": "Annonce de canal est changée en: {{announcement}} par {{userBy}}", - "Room_changed_description": "Description de canal est changée en: {{description}} par {{userBy}}", - "Room_changed_privacy": "Type de canal est changé en: {{type}} par {{userBy}}", - "Room_changed_topic": "Le sujet de canal est changé en: {{topic}} par {{userBy}}", - "Room_Files": "Fichiers de canal", - "Room_Info_Edit": "Infos sur le canal Modifier", - "Room_Info": "Info sur le canal", - "Room_Members": "Membres de canal", - "Room_name_changed": "Nom de canal est changé en: {{name}} par {{userBy}}", - "SAVE": "ENREGISTRER", + "Room_actions": "Actions du salon", + "Room_changed_announcement": "Annonce du salon changé en : {{announcement}} par {{userBy}}", + "Room_changed_avatar": "Avatar du salon modifié par {{userBy}}", + "Room_changed_description": "Description du salon changé en : {{description}} par {{userBy}}", + "Room_changed_privacy": "Type de salon changé en : {{type}} par {{userBy}}", + "Room_changed_topic": "Le sujet de salon est changé en : {{topic}} par {{userBy}}", + "Room_Files": "Fichiers du salon", + "Room_Info_Edit": "Modifier les informations du salon", + "Room_Info": "Info sur le salon", + "Room_Members": "Membres du salon", + "Room_name_changed": "Nom de salon changé en : {{name}} par {{userBy}}", + "SAVE": "SAUVEGARDER", "Save_Changes": "Sauvegarder les modifications", "Save": "Sauvegarder", - "Saved": "Sauvé", - "saving_preferences": "sauvegardant les préférences", + "Saved": "Enregistré", + "saving_preferences": "enregistrement des préférences", "saving_profile": "enregistrement du profil", "saving_settings": "enregistrement des paramètres", - "saved_to_gallery": "Sauvé dans la galerie", + "saved_to_gallery": "Enregistré dans la galerie", + "Save_Your_E2E_Password": "Enregistrez votre mot de passe E2E", + "Save_Your_Encryption_Password": "Enregistrez votre mot de passe de cryptage", + "Save_Your_Encryption_Password_warning": "Ce mot de passe n'est stocké nulle part, enregistrez-le donc soigneusement ailleurs.", + "Save_Your_Encryption_Password_info": "Si vous perdez le mot de passe, il n'y a aucun moyen de le récupérer et vous perdrez l'accès à vos messages.", "Search_Messages": "Rechercher des messages", "Search": "Recherche", - "Search_by": "Recherche par", + "Search_by": "Rechercher par", "Search_global_users": "Rechercher des utilisateurs mondiaux", "Search_global_users_description": "Si vous activez, vous pouvez rechercher n'importe quel utilisateur d'autres sociétés ou serveurs.", "Seconds": "{{second}} secondes", + "Security_and_privacy": "Sécurité et vie privée", "Select_Avatar": "Sélectionnez un avatar", "Select_Server": "Sélectionnez un serveur", - "Select_Users": "Sélectionner des utilisateurs", + "Select_Users": "Sélectionner les utilisateurs", "Select_a_Channel": "Sélectionnez un canal", "Select_a_Department": "Sélectionnez un département", "Select_an_option": "Sélectionnez une option", @@ -449,50 +492,50 @@ "Sent_an_attachment": "Envoyé une pièce jointe", "Server": "Serveur", "Servers": "Serveurs", - "Server_version": "Version du serveur: {{version}}", + "Server_version": "Version du serveur : {{version}}", "Set_username_subtitle": "Le nom d'utilisateur est utilisé pour permettre aux autres de vous mentionner dans les messages", - "Set_custom_status": "Définir un statut personnalisé", + "Set_custom_status": "Définir le statut personnalisé", "Set_status": "Définir le statut", - "Status_saved_successfully": "Statut enregistré avec succès!", + "Status_saved_successfully": "Statut enregistré avec succès !", "Settings": "Paramètres", - "Settings_succesfully_changed": "Paramètres modifiés avec succès!", + "Settings_succesfully_changed": "Paramètres modifiés avec succès !", "Share": "Partager", "Share_Link": "Partager le lien", "Share_this_app": "Partager cette application", "Show_more": "Afficher plus..", "Show_Unread_Counter": "Afficher le compteur non lu", - "Show_Unread_Counter_Info": "Le compteur non-lu est affiché sous forme de badge à droite de la chaîne, dans la liste", + "Show_Unread_Counter_Info": "Le compteur non lu est affiché sous forme de badge à droite du canal, dans la liste", "Sign_in_your_server": "Connectez-vous à votre serveur", "Sign_Up": "S'inscrire", "Some_field_is_invalid_or_empty": "Certains champs sont invalides ou vides", "Sorting_by": "Tri par {{key}}", "Sound": "Son", - "Star_room": "Favoriser canal", - "Star": "Favoris", - "Starred_Messages": "Les messages favorisé", - "starred": "favorisé", - "Starred": "Favorisé", + "Star_room": "Canal favoris", + "Star": "Mettre en favoris", + "Starred_Messages": "Les messages favoris", + "starred": "favoris", + "Starred": "Favoris", "Start_of_conversation": "Début de conversation", "Start_a_Discussion": "Lancer une discussion", - "Started_discussion": "A commencé une discussion:", + "Started_discussion": "A commencé une discussion :", "Started_call": "Appel lancé par {{userBy}}", "Submit": "Soumettre", - "Table": "Table", + "Table": "Tableau", "Tags": "Mots clés", "Take_a_photo": "Prendre une photo", "Take_a_video": "Prendre une vidéo", - "Take_it": "Prends-le!", - "tap_to_change_status": "Appuyez pour changer de statut", + "Take_it": "Prends-le !", + "tap_to_change_status": "appuyez pour changer de statut", "Tap_to_view_servers_list": "Appuyez pour afficher la liste des serveurs", "Terms_of_Service": " Conditions d'utilisation ", "Theme": "Thème", "The_user_wont_be_able_to_type_in_roomName": "L'utilisateur ne pourra pas écrire dans {{roomName}}", "The_user_will_be_able_to_type_in_roomName": "L'utilisateur pourra écrire dans {{roomName}}", - "There_was_an_error_while_action": "Il y avait une erreur en {{action}}!", - "This_room_is_blocked": "Cette canal est bloquée", - "This_room_is_read_only": "Cette canal est en lecture seule", - "Thread": "Fil de discutions", - "Threads": "Fils de discutions", + "There_was_an_error_while_action": "Une erreur s'est produite lors de {{action}} !", + "This_room_is_blocked": "Ce salon est bloqué", + "This_room_is_read_only": "Ce salon est en lecture seule", + "Thread": "Fil de discussion", + "Threads": "Fils de discussions", "Timezone": "Fuseau horaire", "To": "A", "topic": "sujet", @@ -506,101 +549,103 @@ "Unblock_user": "Débloquer l'utilisateur", "Unfavorite": "Supprimer des favoris", "Unfollowed_thread": "Ne plus suivre ce fil", - "Unmute": "Rendre La parole", - "unmuted": "Rendu la parole", + "Unmute": "Rendre la parole", + "unmuted": "rendu la parole", "Unpin": "Détacher", - "unread_messages": "non lus", + "unread_messages": "non lu", "Unread": "Non lu", - "Unread_on_top": "Non lu sur le dessus", - "Unstar": "Unstar", + "Unread_on_top": "Non lu en haut", + "Unstar": "Enlever des favoris", "Updating": "Mise à jour...", - "Uploading": "Téléchargement", - "Upload_file_question_mark": "Télécharger le fichier?", + "Uploading": "Envoyer", + "Upload_file_question_mark": "Téléverser un fichier ?", "User": "Utilisateur", "Users": "Utilisateurs", - "User_added_by": "L'utilisateur {{userAdded}} a été ajouté par {{userBy}}", + "User_added_by": "Utilisateur {{userAdded}} ajouté par {{userBy}}", "User_Info": "Info d'utilisateur", "User_has_been_key": "L'utilisateur a été {{key}}", "User_is_no_longer_role_by_": "{{user}} n'est plus {{role}} par {{userBy}}", "User_muted_by": "L'utilisateur {{userMuted}} a été rendu muet par {{userBy}}", - "User_removed_by": "L'utilisateur {{userRemoved}} a été retiré par {{userBy}}", - "User_sent_an_attachment": "{{user}} envoyé une pièce jointe", - "User_unmuted_by": "L'utilisateur {{userBy}} a rendu la parole a {{userUnmuted}}", - "User_was_set_role_by_": "{{user}} l'utilisateur a été défini {{role}} par {{userBy}}", + "User_removed_by": "Utilisateur {{userRemoved}} supprimé par {{userBy}}", + "User_sent_an_attachment": "{{user}} a envoyé une pièce jointe", + "User_unmuted_by": "L'utilisateur {{userBy}} a rendu la parole à {{userUnmuted}}", + "User_was_set_role_by_": "{{user}} a été défini {{role}} par {{userBy}}", "Username_is_empty": "Nom d'utilisateur est vide", "Username": "Nom d'utilisateur", - "Username_or_email": "Nom d'utilisateur ou address e-mail", + "Username_or_email": "Nom d'utilisateur ou e-mail", "Uses_server_configuration": "Utilise la configuration du serveur", "Validating": "Validation", - "Registration_Succeeded": "Inscription réussie!", + "Registration_Succeeded": "Inscription réussie !", "Verify": "Vérifier", - "Verify_email_title": "Inscription réussie!", + "Verify_email_title": "Inscription réussie !", "Verify_email_desc": "Nous vous avons envoyé un e-mail pour confirmer votre inscription. Si vous ne recevez pas d'e-mail sous peu, veuillez revenir et réessayer.", "Verify_your_email_for_the_code_we_sent": "Vérifiez votre e-mail pour le code que nous avons envoyé", "Video_call": "Appel vidéo", "View_Original": "Voir l'original", "Voice_call": "Appel vocal", - "Waiting_for_network": "En attente du réseau ...", + "Waiting_for_network": "En attente du réseau...", "Websocket_disabled": "Le Websocket est désactivé pour ce serveur.\n{{contact}}", "Welcome": "Bienvenue", - "What_are_you_doing_right_now": "Qu'es ce que vous faites actuellement?", - "Whats_your_2fa": "Quel est votre code 2FA?", + "What_are_you_doing_right_now": "Que fais-tu en ce moment ?", + "Whats_your_2fa": "Quel est votre code 2FA ?", "Without_Servers": "Sans serveurs", "Workspaces": "Espaces de travail", - "Would_you_like_to_return_the_inquiry": "Souhaitez-vous retourner la demande?", + "Would_you_like_to_return_the_inquiry": "Souhaitez-vous retourner la demande ?", "Write_External_Permission_Message": "Rocket.Chat a besoin d'accéder à votre galerie pour que vous puissiez enregistrer des images.", "Write_External_Permission": "Autorisation de la galerie", "Yes": "Oui", - "Yes_action_it": "Oui, {{action}} le!", + "Yes_action_it": "Oui, {{action}} le !", "Yesterday": "Hier", - "You_are_in_preview_mode": "Vous êtes en mode de prévisualisation", + "You_are_in_preview_mode": "Vous êtes en mode aperçu", "You_are_offline": "Vous êtes hors ligne", - "You_can_search_using_RegExp_eg": "Vous pouvez rechercher à l'aide de RegExp. e.g. `/^text$/i`", + "You_can_search_using_RegExp_eg": "Vous pouvez utiliser RegExp., par exemple `/^texte$/i`", "You_colon": "Vous: ", "you_were_mentioned": "vous avez été mentionné", - "You_were_removed_from_channel": "Vous avez été retiré de{{channel}}", + "You_were_removed_from_channel": "Vous avez été retiré de {{channel}}", "you": "vous", "You": "Vous", - "Logged_out_by_server": "Vous avez été déconnecté par le serveur. Veuillez vous reconnecter.", + "Logged_out_by_server": "Vous avez été déconnecté du serveur. Veuillez vous reconnecter.", "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Vous devez accéder à au moins un serveur Rocket.Chat pour partager quelque chose.", - "Your_certificate": "Votre Certificat", + "You_need_to_verifiy_your_email_address_to_get_notications": "Vous devez vérifier votre adresse e-mail pour recevoir des notifications", + "Your_certificate": "Votre certificat", "Your_invite_link_will_expire_after__usesLeft__uses": "Votre lien d'invitation expirera après {{usesLeft}} utilisations.", "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Votre lien d'invitation expirera le {{date}} ou après {{usesLeft}} utilisations.", "Your_invite_link_will_expire_on__date__": "Votre lien d'invitation expirera le {{date}}.", "Your_invite_link_will_never_expire": "Votre lien d'invitation n'expirera jamais.", "Your_workspace": "Votre espace de travail", - "Version_no": "Version: {{version}}", - "You_will_not_be_able_to_recover_this_message": "Vous ne pourrez pas récupérer ce message!", - "You_will_unset_a_certificate_for_this_server": "Vous allez annuler un certificat pour ce serveur", - "Change_Language": "Changer la Langue", - "Crash_report_disclaimer": "Nous ne suivons jamais le contenu de vos chats. Le rapport de plantage ne contient que des informations pertinentes pour nous afin d'identifier les problèmes et de les résoudre.", - "Type_message": "Écrire un message", - "Room_search": "Recherche de salon", - "Room_selection": "Sélection du Salon 1...9", - "Next_room": "Salon Suivant", - "Previous_room": "Salon Précédent", + "Your_password_is": "Votre mot de passe est", + "Version_no": "Version : {{version}}", + "You_will_not_be_able_to_recover_this_message": "Vous ne pourrez pas récupérer ce message !", + "You_will_unset_a_certificate_for_this_server": "Vous allez supprimer un certificat pour ce serveur", + "Change_Language": "Changer la langue", + "Crash_report_disclaimer": "Nous ne suivons jamais le contenu de vos chats. Le rapport d'incident et les évènements d'analyse ne contiennent que des informations pertinentes pour nous afin d'identifier et de résoudre les problèmes.", + "Type_message": "Tapez le message", + "Room_search": "Recherche de salons", + "Room_selection": "Sélection de salon 1...9", + "Next_room": "Salon suivant", + "Previous_room": "Salon précédent", "New_room": "Nouveau salon", - "Upload_room": "Envoyer sur un salon", - "Search_messages": "Recherche de messages", - "Scroll_messages": "Défiler messages", + "Upload_room": "Envoyer dans un salon", + "Search_messages": "Rechercher des messages", + "Scroll_messages": "Faire défiler les messages", "Reply_latest": "Répondre au dernier", "Reply_in_Thread": "Répondre dans le fil", "Server_selection": "Sélection du serveur", - "Server_selection_numbers": "Sélection du Serveur 1...9", - "Add_server": "Ajouter serveur", + "Server_selection_numbers": "Sélection du serveur 1...9", + "Add_server": "Ajouter un serveur", "New_line": "Nouvelle ligne", "You_will_be_logged_out_of_this_application": "Vous serez déconnecté de cette application.", "Clear": "Effacer", - "This_will_clear_all_your_offline_data": "Cela effacera toutes vos données hors-ligne.", + "This_will_clear_all_your_offline_data": "Cela effacera toutes vos données hors ligne.", "This_will_remove_all_data_from_this_server": "Cela supprimera toutes les données de ce serveur.", "Mark_unread": "Marquer comme non lu", "Wait_activation_warning": "Avant de pouvoir vous connecter, votre compte doit être activé manuellement par un administrateur.", "Screen_lock": "Verrouillage d'écran", "Local_authentication_biometry_title": "Authentifier", - "Local_authentication_biometry_fallback": "Utiliser le mot de passe", - "Local_authentication_unlock_option": "Déverrouiller avec mot de passe", - "Local_authentication_change_passcode": "Changer le code", - "Local_authentication_info": "Remarque: si vous oubliez le code, vous devrez supprimer et réinstaller l'application.", + "Local_authentication_biometry_fallback": "Utiliser le code d'accès", + "Local_authentication_unlock_option": "Déverrouiller avec le code d'accès", + "Local_authentication_change_passcode": "Changer le code d'accès", + "Local_authentication_info": "Remarque : si vous oubliez le code d'accès, vous devrez supprimer et réinstaller l'application.", "Local_authentication_facial_recognition": "reconnaissance faciale", "Local_authentication_fingerprint": "empreinte digitale", "Local_authentication_unlock_with_label": "Déverrouiller avec {{label}}", @@ -609,15 +654,112 @@ "Local_authentication_auto_lock_900": "Après 15 minutes", "Local_authentication_auto_lock_1800": "Après 30 minutes", "Local_authentication_auto_lock_3600": "Après 1 heure", - "Passcode_enter_title": "Entrez votre mot de passe", - "Passcode_choose_title": "Choisissez votre nouveau mot de passe", - "Passcode_choose_confirm_title": "Confirmez votre nouveau mot de passe", - "Passcode_choose_error": "Les codes secrets ne correspondent pas. Réessayer.", + "Passcode_enter_title": "Entrez votre code d'accès", + "Passcode_choose_title": "Choisissez votre nouveau code d'accès", + "Passcode_choose_confirm_title": "Confirmez votre nouveau code d'accès", + "Passcode_choose_error": "Les codes d'accès ne correspondent pas. Réessayer.", "Passcode_choose_force_set": "Code d'accès requis par l'administrateur", "Passcode_app_locked_title": "App verrouillée", "Passcode_app_locked_subtitle": "Réessayez dans {{timeLeft}} secondes", "After_seconds_set_by_admin": "Après {{seconds}} secondes (défini par l'administrateur)", "Dont_activate": "Ne pas activer maintenant", "Queued_chats": "Discussions en file d'attente", - "Queue_is_empty": "La file d'attente est vide" + "Queue_is_empty": "La file d'attente est vide", + "Logout_from_other_logged_in_locations": "Déconnexion des autres emplacements connectés", + "You_will_be_logged_out_from_other_locations": "Vous serez déconnecté des autres emplacements.", + "Logged_out_of_other_clients_successfully": "Déconnexion réussie des autres clients", + "Logout_failed": "Echec de la déconnexion !", + "Log_analytics_events": "Journal des événements d'analyse", + "E2E_encryption_change_password_title": "Changer le mot de passe de cryptage", + "E2E_encryption_change_password_description": "Vous pouvez désormais créer des groupes privés et des messages directs chiffrés. Vous pouvez également modifier les groupes privés ou DM existants pour les crypter.\nIl s'agit du chiffrement de bout en bout, la clé permettant de coder/décoder vos messages ne sera pas enregistrée sur le serveur. Pour cette raison, vous devez stocker ce mot de passe à un endroit sûr. Vous devrez le saisir sur les autres appareils sur lesquels vous souhaitez utiliser le cryptage E2E.", + "E2E_encryption_change_password_error": "Erreur lors de la modification du mot de passe de la clé E2E", + "E2E_encryption_change_password_success": "Le mot de passe de la clé E2E a été changé avec succès !", + "E2E_encryption_change_password_message": "Assurez-vous de l'avoir enregistré soigneusement ailleurs.", + "E2E_encryption_change_password_confirmation": "Oui, changez-le", + "E2E_encryption_reset_title": "Réinitialiser la clé E2E", + "E2E_encryption_reset_description": "Cette option supprimera la clé E2E actuelle et vous déconnectera.\nLorsque vous vous reconnecterez, Rocket.Chat générera une nouvelle clé et restaurera votre accès aux salons cryptés qui a un ou plusieurs membres en ligne.\nEn raison de la nature du cryptage E2E, Rocket.Chat ne pourra pas restaurer l'accès à un salon crypté qui n'a aucun membre en ligne.", + "E2E_encryption_reset_button": "Réinitialiser la clé E2E", + "E2E_encryption_reset_error": "Erreur lors de la réinitialisation de la clé E2E !", + "E2E_encryption_reset_message": "Vous allez être déconnecté.", + "E2E_encryption_reset_confirmation": "Oui, réinitialisez-le", + "Following": "Suivant", + "Threads_displaying_all": "Tout afficher", + "Threads_displaying_following": "Affichage suivant", + "Threads_displaying_unread": "Affichage non lu", + "No_threads": "Il n'y a pas de fils", + "No_threads_following": "Vous ne suivez aucun fil de discussion", + "No_threads_unread": "Il n'y a pas de fils non lus", + "Messagebox_Send_to_channel": "Envoyer au canal", + "Leader": "Leader", + "Moderator": "Modérateur", + "Owner": "Propriétaire", + "Remove_from_room": "Retirer du salon", + "Ignore": "Ignorer", + "Unignore": "Ne pas ignorer", + "User_has_been_ignored": "L'utilisateur a été ignoré", + "User_has_been_unignored": "L'utilisateur n'est plus ignoré", + "User_has_been_removed_from_s": "L'utilisateur a été retiré de {{s}}", + "User__username__is_now_a_leader_of__room_name_": "L'utilisateur {{username}} est désormais un leader de {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "L'utilisateur {{username}} est désormais un modérateur de {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "L'utilisateur {{username}} est désormais un propriétaire de {{room_name}}", + "User__username__removed_from__room_name__leaders": "L'utilisateur {{username}} a été supprimé des leaders de {{room_name}}", + "User__username__removed_from__room_name__moderators": "L'utilisateur {{username}} a été supprimé des modérateurs de {{room_name}}", + "User__username__removed_from__room_name__owners": "L'utilisateur {{username}} a été supprimé des propriétaires de {{room_name}}", + "The_user_will_be_removed_from_s": "L'utilisateur sera supprimé de {{s}}", + "Yes_remove_user": "Oui, supprimez l'utilisateur !", + "Direct_message": "Message direct", + "Message_Ignored": "Message ignoré. Touchez pour l'afficher.", + "Enter_workspace_URL": "Entrez l'URL de l'espace de travail", + "Workspace_URL_Example": "Ex. votre-société.rocket.chat", + "This_room_encryption_has_been_enabled_by__username_": "Le cryptage de ce salon a été activé par {{username}}", + "This_room_encryption_has_been_disabled_by__username_": "Le cryptage de ce salon a été désactivé par {{username}}", + "Teams": "Equipes", + "No_team_channels_found": "Aucun canal trouvé", + "Team_not_found": "Equipe non trouvée", + "Create_Team": "Créer une équipe", + "Team_Name": "Nom de l'équipe", + "Private_Team": "Equipe privée", + "Read_Only_Team": "Equipe en lecture seule", + "Broadcast_Team": "Equipe de diffusion", + "creating_team": "création de l'équipe", + "team-name-already-exists": "Une équipe portant ce nom existe déjà", + "Add_Channel_to_Team": "Ajouter un canal à l'équipe", + "Create_New": "Créer un nouveau", + "Add_Existing": "Ajouter existant", + "Add_Existing_Channel": "Ajouter un canal existant", + "Remove_from_Team": "Retirer de l'équipe", + "Auto-join": "Rejoindre automatiquement", + "Remove_Team_Room_Warning": "Souhaitez-vous supprimer ce canal de l'équipe ? Le canal sera déplacé vers l'espace de travail", + "Confirmation": "Confirmation", + "invalid-room": "Salon invalide", + "You_are_leaving_the_team": "Vous quittez l'équipe '{{team}}'", + "Leave_Team": "Quitter l'équipe", + "Select_Team": "Sélectionnez l'équipe", + "Select_Team_Channels": "Sélectionnez les canaux de l'équipe que vous souhaitez quitter.", + "Cannot_leave": "Ne peut pas partir", + "Cannot_remove": "Impossible d'enlever", + "Cannot_delete": "Impossible de supprimer", + "Last_owner_team_room": "Vous êtes le dernier propriétaire de ce canal. Une fois que vous quittez l'équipe, le canal sera conservé au sein de l'équipe mais vous le gérerez de l'extérieur.", + "last-owner-can-not-be-removed": "Le dernier propriétaire ne peut pas être supprimé", + "Remove_User_Teams": "Sélectionnez les canaux dont vous souhaitez supprimer l'utilisateur.", + "Delete_Team": "Supprimer l'équipe", + "Select_channels_to_delete": "Ceci ne peut pas être annulé. Une fois que vous supprimez une équipe, tout le contenu et la configuration du chat seront supprimés.\n\nSélectionnez les canaux que vous souhaitez supprimer. Ceux que vous décidez de conserver seront disponible dans votre espace de travail. Notez que les canaux publics seront toujours publics et visibles par tous.", + "You_are_deleting_the_team": "Vous supprimez cette équipe.", + "Removing_user_from_this_team": "Vous supprimez {{user}} de cette équipe", + "Remove_User_Team_Channels": "Sélectionnez les canaux dont vous souhaitez supprimer l'utilisateur.", + "Remove_Member": "Supprimer un membre", + "leaving_team": "quitter l'équipe", + "removing_team": "retirer de l'équipe", + "moving_channel_to_team": "transfert de canal à l'équipe", + "deleting_team": "suppression de l'équipe", + "member-does-not-exist": "Le membre n'existe pas", + "Convert": "Convertir", + "Convert_to_Team": "Convertir en équipe", + "Convert_to_Team_Warning": "Ceci ne peut pas être annulé. Une fois que vous avez converti un canal en équipe, vous ne pouvez pas le retransformer en canal.", + "Move_to_Team": "Déplacer vers l'équipe", + "Move_Channel_Paragraph": "Le déplacement d'un canal dans une équipe signifie que ce canal sera ajouté dans le contexte d'équipe. Cependant, tous les membres du canal, qui ne sont pas membres de l'équipe respective, auront toujours accès à ce canal, mais ne seront pas ajoutés comme membres de l'équipe.\n\nLa gestion de tout le canal sera toujours assurée par les propriétaires de ce canal.\n\nLes membres de l'équipe et même les propriétaires de l'équipe, s'ils ne sont pas membres de ce canal, ne peuvent pas avoir accès au contenu du canal.\n\nVeuillez noter que le propriétaire de l'équipe pourra supprimer des membres du canal.", + "Move_to_Team_Warning": "Après avoir lu les instructions précédentes sur ce comportement, voulez-vous toujours déplacer ce canal vers l'équipe sélectionnée ?", + "Load_More": "Charger plus", + "Load_Newer": "Charger plus récent", + "Load_Older": "Charger plus ancien" } \ No newline at end of file diff --git a/app/i18n/locales/it.json b/app/i18n/locales/it.json index 4c6ee1acf36..505282dd551 100644 --- a/app/i18n/locales/it.json +++ b/app/i18n/locales/it.json @@ -290,11 +290,11 @@ "last_message": "ultimo messaggio", "Leave_channel": "Abbandona canale", "leaving_room": "abbandonando stanza", + "Leave": "Lasciare il canale", "leave": "abbandona", "Legal": "Informazioni", "Light": "Chiaro", "License": "Licenza", - "Livechat": "Livechat", "Livechat_edit": "Modifica Livechat", "Login": "Accedi", "Login_error": "Le tue credenziali sono state rifiutate! Prova di nuovo.", @@ -681,12 +681,6 @@ "No_threads_following": "Non stai seguendo alcun thread", "No_threads_unread": "Non ci sono thread non letti", "Messagebox_Send_to_channel": "Invia sul canale", - "Set_as_leader": "Rendi leader", - "Set_as_moderator": "Rendi moderatore", - "Set_as_owner": "Rendi proprietario", - "Remove_as_leader": "Rimuovi come leader", - "Remove_as_moderator": "Rimuovi come moderatore", - "Remove_as_owner": "Rimuovi come proprietario", "Remove_from_room": "Rimuovi dalla stanza", "Ignore": "Ignora", "Unignore": "Non ignorare", @@ -704,5 +698,6 @@ "Direct_message": "Messaggio diretto", "Message_Ignored": "Messaggio ignorato. Tocca per visualizzarlo.", "Enter_workspace_URL": "Inserisci la url del workspace", - "Workspace_URL_Example": "Es. tua-azienda.rocket.chat" + "Workspace_URL_Example": "Es. tua-azienda.rocket.chat", + "invalid-room": "Canale non valido" } \ No newline at end of file diff --git a/app/i18n/locales/ja.json b/app/i18n/locales/ja.json index d758e135a34..994753fbb59 100644 --- a/app/i18n/locales/ja.json +++ b/app/i18n/locales/ja.json @@ -219,6 +219,7 @@ "last_message": "最後のメッセージ", "Leave_channel": "チャンネルを退出", "leaving_room": "チャンネルを退出", + "Leave": "ルームを退出", "leave": "退出", "Legal": "法的項目", "Light": "ライト", @@ -487,5 +488,6 @@ "New_line": "新しい行", "You_will_be_logged_out_of_this_application": "アプリからログアウトします。", "Clear": "クリア", - "This_will_clear_all_your_offline_data": "オフラインデータをすべて削除します。" + "This_will_clear_all_your_offline_data": "オフラインデータをすべて削除します。", + "invalid-room": "無効なルーム" } \ No newline at end of file diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index 7756a910df1..8a48d3c7478 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -4,254 +4,343 @@ "error-action-not-allowed": "{{action}} is niet toegestaan", "error-application-not-found": "Applicatie niet gevonden", "error-archived-duplicate-name": "Er is een gearchiveerd kanaal met de naam {{room_name}}", - "error-avatar-invalid-url": "Foutieve avatar URL: {{url}}", - "error-avatar-url-handling": "Fout tijdens verwerken avatar instellingen vanaf een URL({{url}}) for {{username}}", - "error-cant-invite-for-direct-room": "Kan gebruikers niet in directe kamers toevoegen", - "error-could-not-change-email": "Kon email niet veranderen", - "error-could-not-change-name": "Kon naam niet veranderen", - "error-could-not-change-username": "Kon gebruikersnaam niet veranderen", - "error-delete-protected-role": "Beveiligde rollen kunnen niet verwijderd worden.", + "error-avatar-invalid-url": "Ongeldige avatar-URL: {{url}}", + "error-avatar-url-handling": "Fout bij het verwerken van de avatar-instelling van een URL ({{url}}) voor {{username}}", + "error-cant-invite-for-direct-room": "Kan gebruikers in directe kamers niet uitnodigen", + "error-could-not-change-email": "Kan e-mail niet veranderen", + "error-could-not-change-name": "Kan naam niet veranderen", + "error-could-not-change-username": "Kan gebruikersnaam niet veranderen", + "error-could-not-change-status": "Kan status niet wijzigen", + "error-delete-protected-role": "Kan een beveiligde rol niet verwijderen", "error-department-not-found": "Afdeling niet gevonden", - "error-direct-message-file-upload-not-allowed": "Delen van bestanden niet toegestaan in directe berichten", - "error-duplicate-channel-name": "Een kanaal met de naam {{channel_name}} bestaat", - "error-email-domain-blacklisted": "Het email domein is blacklisted", - "error-email-send-failed": "Fout tijdens verzenden van email: {{message}}", - "error-save-image": "Fout tijdens opslaan afbeelding", - "error-field-unavailable": "{{field}} is alr in gebruik :(", + "error-direct-message-file-upload-not-allowed": "Delen van bestanden in privéberichten niet toegestaan", + "error-duplicate-channel-name": "Een kanaal met naam {{room_name}} bestaat", + "error-email-domain-blacklisted": "Het e-maildomein staat op de zwarte lijst", + "error-email-send-failed": "Fout bij het verzenden van e-mail: {{message}}", + "error-save-image": "Fout bij het opslaan van afbeelding", + "error-save-video": "Fout bij het opslaan van video", + "error-field-unavailable": "{{field}} is al in gebruik :(", "error-file-too-large": "Bestand is te groot", - "error-importer-not-defined": "De importer is niet goed gedefinieerd, het mist de Import class.", + "error-importer-not-defined": "De importeur is niet correct gedefinieerd, de klasse Import ontbreekt.", "error-input-is-not-a-valid-field": "{{input}} is geen geldig {{field}}", - "error-invalid-actionlink": "Ongeldige action link", + "error-invalid-actionlink": "Ongeldige actielink", "error-invalid-arguments": "Ongeldige argumenten", - "error-invalid-asset": "Ongeldig asset", - "error-invalid-channel": "Ongeldig channel.", - "error-invalid-channel-start-with-chars": "Ongeldig channel. Begin met @ of #", - "error-invalid-custom-field": "Ongeldig custom veld", - "error-invalid-custom-field-name": "Ongeldige custom veld naam. Gebruik alleen letters, cijfers, - of _.", + "error-invalid-asset": "Ongeldig item", + "error-invalid-channel": "Ongeldig kanaal.", + "error-invalid-channel-start-with-chars": "Ongeldig kanaal. Begin met @ of #", + "error-invalid-custom-field": "Ongeldig aangepast veld", + "error-invalid-custom-field-name": "Ongeldige aangepaste veldnaam. Gebruik alleen letters, cijfers, koppeltekens en underscores.", "error-invalid-date": "Ongeldige datum opgegeven.", "error-invalid-description": "Ongeldige beschrijving", "error-invalid-domain": "Ongeldig domein", - "error-invalid-email": "Ongeldige email {{email}}", - "error-invalid-email-address": "Ongeldig emailadres", - "error-invalid-file-height": "Ongeldige file height", + "error-invalid-email": "Ongeldig e-mail {{email}}", + "error-invalid-email-address": "Ongeldig e-mailadres", + "error-invalid-file-height": "Ongeldige bestandshoogte", "error-invalid-file-type": "Ongeldig bestandstype", - "error-invalid-file-width": "Ongeldige file width", - "error-invalid-from-address": "Een ongeldig FROM adres is ingevuld.", - "error-invalid-integration": "Ongeldige integration", - "error-invalid-message": "Ongeldige message", - "error-invalid-method": "Ongeldige method", + "error-invalid-file-width": "Ongeldige bestandsbreedte", + "error-invalid-from-address": "Je hebt een ongeldig FROM adres opgegeven.", + "error-invalid-integration": "Ongeldige integratie", + "error-invalid-message": "Ongeldig bericht", + "error-invalid-method": "Ongeldige methode", "error-invalid-name": "Ongeldige naam", - "error-invalid-password": "Ongeldig password", + "error-invalid-password": "Ongeldig wachtwoord", "error-invalid-redirectUri": "Ongeldige redirectUri", - "error-invalid-role": "Ongeldige role", + "error-invalid-role": "Ongeldige rol", "error-invalid-room": "Ongeldige kamer", "error-invalid-room-name": "{{room_name}} is geen geldige kamernaam", "error-invalid-room-type": "{{type}} is geen geldig kamertype.", - "error-invalid-settings": "Ongeldige instellingen ingevuld", - "error-invalid-subscription": "Ongeldige subscription", - "error-invalid-token": "Ongeldig token", - "error-invalid-triggerWords": "Ongeldige triggerWords", - "error-invalid-urls": "Ongeldige URLs", - "error-invalid-user": "Ongeldige user", - "error-invalid-username": "Ongeldige username", - "error-invalid-webhook-response": "De webhook URL antwoorde met een andere status dan 200", - "error-message-deleting-blocked": "Berichten verwijderen is geblokkeerd.", - "error-message-editing-blocked": "Berichten aanpassen is geblokkeerd.", - "error-message-size-exceeded": "Berichtgrootte is meer dan Message_MaxAllowedSize", - "error-missing-unsubscribe-link": "De [unsubscribe] link moet gegeven worden.", - "error-no-tokens-for-this-user": "Er zijn geen tokens voor deze user", + "error-invalid-settings": "Ongeldige instellingen opgegeven", + "error-invalid-subscription": "Ongeldig abonnement", + "error-invalid-token": "Ongeldige token", + "error-invalid-triggerWords": "Ongeldige triggerWoorden", + "error-invalid-urls": "Ongeldige URL's", + "error-invalid-user": "Ongeldige gebruiker", + "error-invalid-username": "Ongeldige gebruikersnaam", + "error-invalid-webhook-response": "De webhook-URL heeft met een andere status dan 200 gereageerd", + "error-message-deleting-blocked": "Het verwijderen van berichten is geblokkeerd", + "error-message-editing-blocked": "Het aanpassen van berichten is geblokkeerd", + "error-message-size-exceeded": "Berichtgrootte is groter dan Message_MaxAllowedSize", + "error-missing-unsubscribe-link": "Je moet de link [unsubscribe] opgeven.", + "error-no-owner-channel": "Je bent niet de eigenaar van het kanaal", + "error-no-tokens-for-this-user": "Er zijn geen tokens voor deze gebruiker", "error-not-allowed": "Niet toegestaan", - "error-not-authorized": "Niet gemachtigd", - "error-push-disabled": "Push staat uit", - "error-remove-last-owner": "Dit is de laatste eigenaar. Kies een nieuwe eigenaar voor je deze verwijderd.", - "error-role-in-use": "Kan rol niet verwijderen omdat hij in gebruik is", - "error-role-name-required": "Rol naam verplicht", + "error-not-authorized": "Geen bevoegdheid", + "error-push-disabled": "Push is uitgeschakeld", + "error-remove-last-owner": "Dit is de laatste eigenaar. Stel een nieuwe eigenaar in voordat je deze verwijdert.", + "error-role-in-use": "Kan rol niet verwijderen omdat deze in gebruik is", + "error-role-name-required": "Rolnaam is vereist", "error-the-field-is-required": "Het veld {{field}} is verplicht.", - "error-too-many-requests": "Error, te veel requests. Doe alsjeblieft rustig aan. Je moet {{seconds}} wachten voor je het opnieuw kan proberen.", + "error-too-many-requests": "Fout, te veel verzoeken. Vertraag, alsjeblieft. Je moet {{seconds}} seconden wachten voordat je het opnieuw probeert.", "error-user-is-not-activated": "Gebruiker is niet geactiveerd", "error-user-has-no-roles": "Gebruiker heeft geen rollen", - "error-user-limit-exceeded": "De hoeveelheid gebruikers die je probeert uit te nodigen voor #channel_name is meer dan het limiet wat de admin gekozen heeft", + "error-user-limit-exceeded": "Het aantal gebruikers die je probeert uit te nodigen voor #channel_name overschrijdt de limiet ingesteld door de beheerder", "error-user-not-in-room": "Gebruiker is niet in deze kamer", "error-user-registration-custom-field": "error-user-registration-custom-field", - "error-user-registration-disabled": "Registratie van gebruikers staat uit", - "error-user-registration-secret": "Registratie van gebruikers kan alleen via Secret URL", - "error-you-are-last-owner": "Je bent de laatste eigenaar. Kies eerst een nieuwe voor je de kamer verlaat.", + "error-user-registration-disabled": "Gebruikersregistratie is uitgeschakeld", + "error-user-registration-secret": "Gebruikersregistratie is alleen via geheime URL toegestaan", + "error-you-are-last-owner": "Je bent de laatste eigenaar. Stel een nieuwe eigenaar in voordat je de kamer verlaat.", + "error-status-not-allowed": "Onzichtbare status is uitgeschakeld", "Actions": "Acties", "activity": "activiteit", "Activity": "Activiteit", - "Add_Reaction": "Voeg reactie toe", - "Add_Server": "Voeg server toe", - "Add_users": "Voeg gebruikers toe", + "Add_Reaction": "Reactie toevoegen", + "Add_Server": "Server toevoegen", + "Add_users": "Gebruikers toevoegen", "Admin_Panel": "Admin Paneel", - "Alert": "Alert", - "alert": "alert", - "alerts": "alerts", - "All_users_in_the_channel_can_write_new_messages": "Alle gebruikers in het kanaal kunnen nieuwe berichten sturen", + "Agent": "Agent", + "Alert": "Waarschuwing", + "alert": "waarschuwing", + "alerts": "waarschuwingen", + "All_users_in_the_channel_can_write_new_messages": "Alle gebruikers in het kanaal kunnen nieuwe berichten schrijven", + "All_users_in_the_team_can_write_new_messages": "Alle gebruikers in het team kunnen nieuwe berichten schrijven", + "A_meaningful_name_for_the_discussion_room": "Een betekenisvolle naam voor de discussieruimte", "All": "Alle", - "All_Messages": "Alle Berichten", - "Allow_Reactions": "Sta reacties toe", + "All_Messages": "Alle berichten", + "Allow_Reactions": "Reacties toestaan", "Alphabetical": "Alfabetisch", "and_more": "en meer", "and": "en", "announcement": "aankondiging", "Announcement": "Aankondiging", - "Apply_Your_Certificate": "Gebruik je certificaat", + "Apply_Your_Certificate": "Pas jouw certificaat toe", "ARCHIVE": "ARCHIVEER", "archive": "archiveer", "are_typing": "zijn aan het typen", "Are_you_sure_question_mark": "Weet je het zeker?", - "Are_you_sure_you_want_to_leave_the_room": "Weet je zeker dat je de kamer {{room}} wil verlaten?", + "Are_you_sure_you_want_to_leave_the_room": "Weet je zeker dat je de kamer {{room}} wilt verlaten?", "Audio": "Audio", - "Authenticating": "Authenticating", + "Authenticating": "Authenticatie", "Automatic": "Automatisch", - "Auto_Translate": "Auto-Vertalen", - "Avatar_changed_successfully": "Avatar succesvol aangepast!", - "Avatar_Url": "Avatar URL", - "Away": "Weg", + "Auto_Translate": "Automatisch vertalen", + "Avatar_changed_successfully": "Avatar succesvol gewijzigd!", + "Avatar_Url": "Avatar-URL", + "Away": "Afwezig", "Back": "Terug", "Black": "Zwart", "Block_user": "Blokkeer gebruiker", - "Broadcast_channel_Description": "Alleen toegestane gebruikers kunnen nieuwe berichten sturen, maar iedereen kan reageren", - "Broadcast_Channel": "Broadcast Kanaal", + "Browser": "Browser", + "Broadcast_channel_Description": "Alleen geautoriseerde gebruikers kunnen nieuwe berichten schrijven, maar de andere gebruikers zullen kunnen antwoorden", + "Broadcast_Channel": "Uitzendkanaal", "Busy": "Bezig", "By_proceeding_you_are_agreeing": "Door verder te gaan ga je akkoord met onze", - "Cancel_editing": "Stop bewerken", - "Cancel_recording": "Stop opnemen", - "Cancel": "Stop", + "Cancel_editing": "Bewerken annuleren", + "Cancel_recording": "Opname annuleren", + "Cancel": "Annuleren", "changing_avatar": "avatar aan het veranderen", "creating_channel": "kanaal aan het maken", "creating_invite": "uitnodiging maken", - "Channel_Name": "Kanaal Name", + "Channel_Name": "Kanaal naam", "Channels": "Kanalen", + "Chats": "Chats", "Call_already_ended": "Gesprek al beeïndigd!", - "Click_to_join": "Klik om lid te worden!", + "Clear_cookies_alert": "Wilt u alle cookies wissen?", + "Clear_cookies_desc": "Met deze actie worden alle inlogcookies gewist, zodat u op andere accounts kunt inloggen.", + "Clear_cookies_yes": "Ja, cookies wissen", + "Clear_cookies_no": "Nee, bewaar cookies", + "Click_to_join": "Klik om mee te doen!", "Close": "Sluiten", - "Close_emoji_selector": "Sluit emoji selector", + "Close_emoji_selector": "Emoji-kiezer sluiten", + "Closing_chat": "Chat sluiten", + "Change_language_loading": "Taal veranderen", + "Chat_closed_by_agent": "Chat gesloten door agent", "Choose": "Kies", "Choose_from_library": "Kies uit bibliotheek", "Choose_file": "Kies bestand", + "Choose_where_you_want_links_be_opened": "Kies waar je links wilt openen", "Code": "Code", + "Code_or_password_invalid": "Code of wachtwoord ongeldig", "Collaborative": "Samenwerkend", "Confirm": "Bevestig", - "Connect": "Verbind", + "Connect": "Verbinden", "Connected": "Verbonden", - "connecting_server": "Verbonden met een server", + "connecting_server": "verbonden met de server", "Connecting": "Aan het verbinden...", - "Contact_us": "Contact opnemen", - "Contact_your_server_admin": "Neem contact op met je server admin.", + "Contact_us": "Neem contact op", + "Contact_your_server_admin": "Neem contact op met je serverbeheerder.", "Continue_with": "Ga verder met", - "Copied_to_clipboard": "Gekopïeerd naar klembord!", - "Copy": "Kopïeer", + "Copied_to_clipboard": "Gekopieerd naar klembord!", + "Copy": "Kopiëren", + "Conversation": "Conversatie", "Permalink": "Permalink", - "Certificate_password": "Certificate Password", - "Whats_the_password_for_your_certificate": "Wat is het wachtwoord voor je certificate?", - "Create_account": "Maak een account", - "Create_Channel": "Maak een kanaal", - "Created_snippet": "snippet gemaakt", - "Create_a_new_workspace": "Een nieuwe workspace maken", - "Create": "Maken", + "Certificate_password": "Certificaat wachtwoord", + "Clear_cache": "Lokale server cache wissen", + "Clear_cache_loading": "Cache wissen.", + "Whats_the_password_for_your_certificate": "Wat is het wachtwoord voor jouw certificaat?", + "Create_account": "Account aanmaken", + "Create_Channel": "Kanaal aanmaken", + "Create_Direct_Messages": "Directe berichten aanmaken", + "Create_Discussion": "Discussie aanmaken", + "Created_snippet": "knipsel aangemaakt", + "Create_a_new_workspace": "Een nieuwe werkruimte aanmaken", + "Create": "Aanmaken", + "Custom_Status": "Aangepaste status", "Dark": "Donker", "Dark_level": "Donker niveau", "Default": "Standaard", - "Delete_Room_Warning": "Een kamer verwijderen verwijdert alle berichten erin. Dit kan niet ongedaan gemaakt worden.", - "delete": "delete", - "Delete": "Delete", - "DELETE": "DELETE", - "deleting_room": "kamer legen", - "description": "beschrijving", - "Description": "Beschrijving", - "Desktop_Options": "Desktop Opties", + "Default_browser": "Standaard browser", + "Delete_Room_Warning": "Als je een kamer verwijdert, worden alle berichten die in de kamer geplaatst zijn, verwijderd. Dit kan niet ongedaan worden gemaakt.", + "Department": "Afdeling", + "delete": "verwijderen", + "Delete": "Verwijderen", + "DELETE": "VERWIJDEREN", + "move": "verplaatsen", + "deleting_room": "kamer verwijderen", + "description": "omschrijving", + "Description": "Omschrijving", + "Desktop_Options": "Bureaubladopties", + "Desktop_Notifications": "Desktopmeldingen", + "Desktop_Alert_info": "Deze meldingen worden op desktop geleverd", "Directory": "Map", "Direct_Messages": "Directe berichten", "Disable_notifications": "Zet notificaties uit", "Discussions": "Discussies", + "Discussion_Desc": "Help het overzicht te houden over wat er aan de hand is! Door een discussie aan te maken, wordt een subkanaal van het geselecteerde kanaal aangemaakt en worden beide gekoppeld.", + "Discussion_name": "Discussienaam", + "Done": "Gedaan", "Dont_Have_An_Account": "Heb je geen account?", - "Do_you_have_a_certificate": "Heb je een certificate?", + "Do_you_have_an_account": "Heb je een account?", + "Do_you_have_a_certificate": "Heb je een certificaat?", "Do_you_really_want_to_key_this_room_question_mark": "Wil je deze kamer echt {{key}}?", + "E2E_Encryption": "E2E-codering", + "E2E_How_It_Works_info1": "U kunt nu versleutelde privégroepen en directe berichten aanmaken. U kunt ook bestaande privégroepen of DM's wijzigen in versleuteld.", + "E2E_How_It_Works_info2": "Dit is *end-to-end codering*, dus de sleutel om jouw berichten te coderen/decoderen en deze wordt niet op de server opgeslagen. Daarom *moet je dit wachtwoord op een veilige plaats opslaan* waar je later toegang hebt als je dat nodig hebt.", + "E2E_How_It_Works_info3": "Als je doorgaat, wordt er automatisch een E2E-wachtwoord gegenereerd.", + "E2E_How_It_Works_info4": "Je kan ook op elk moment een nieuw wachtwoord voor uw coderingssleutel instellen vanuit elke browser waarin u het bestaande E2E-wachtwoord hebt ingevoerd.", "edit": "bewerk", "edited": "bewerkt", "Edit": "Bewerk", + "Edit_Status": "Status bewerken", "Edit_Invite": "Bewerk uitnodiging", - "Email_or_password_field_is_empty": "Email of wachtwoord veld is leeg", + "End_to_end_encrypted_room": "End-to-end versleutelde kamer", + "end_to_end_encryption": "end-to-end encryptie", + "Email_Notification_Mode_All": "Elke vermelding/DM", + "Email_Notification_Mode_Disabled": "Uitgeschakeld", + "Email_or_password_field_is_empty": "E-mail of wachtwoordveld is leeg", "Email": "E-mail", "email": "e-mail", - "Enable_Auto_Translate": "Zet Auto-Translate aan", - "Enable_notifications": "Zet notifications aan", - "Everyone_can_access_this_channel": "Iedereen kan bij dit kanaal", - "Error_uploading": "Error tijdens uploaden", - "Expiration_Days": "Vervalt in (Dagen)", + "Empty_title": "Lege titel", + "Enable_Auto_Translate": "Automatisch vertalen inschakelen", + "Enable_notifications": "Notificaties aanzetten", + "Encrypted": "Versleuteld", + "Encrypted_message": "Versleuteld bericht", + "Enter_Your_E2E_Password": "Voer uw E2E-wachtwoord in", + "Enter_Your_Encryption_Password_desc1": "Hiermee krijg je toegang tot uw gecodeerde privégroepen en directe berichten.", + "Enter_Your_Encryption_Password_desc2": "Op elke plaats waar je de chat gebruikt, moet je het wachtwoord invoeren om berichten te coderen/decoderen.", + "Encryption_error_title": "Jouw coderingswachtwoord lijkt verkeerd", + "Encryption_error_desc": "Het was niet mogelijk om uw coderingssleutel te decoderen om te worden geïmporteerd.", + "Everyone_can_access_this_channel": "Iedereen heeft toegang tot dit kanaal", + "Everyone_can_access_this_team": "Iedereen heeft toegang tot dit team", + "Error_uploading": "Fout bij uploaden", + "Expiration_Days": "Vervaldatum (Dagen)", "Favorite": "Favoriet", "Favorites": "Favorieten", "Files": "Bestanden", "File_description": "Bestandsbeschrijving", "File_name": "Bestandsnaam", - "Finish_recording": "Beëindig opname", - "Following_thread": "Volg thread", - "For_your_security_you_must_enter_your_current_password_to_continue": "Voor je veiligheid moet je je wachtwoord invullen om door te gaan", - "Forgot_password_If_this_email_is_registered": "Als dit email adres bij ons bekend is, sturen we je instructies op om je wachtwoord te resetten. Als je geen email krijgt, probeer het dan nogmaals.", - "Forgot_password": "Wachtwoord vergeten", - "Forgot_Password": "Wachtwoord Vergeten", - "Full_table": "Klik om de hele tabel te zien", - "Generate_New_Link": "Genereer Nieuwe Link", - "Group_by_favorites": "Sorteer op favorieten", - "Group_by_type": "Sorteer op type", + "Finish_recording": "Opname beëindigen", + "Following_thread": "Volg discussie", + "For_your_security_you_must_enter_your_current_password_to_continue": "Voor je veiligheid moet je je huidige wachtwoord invoeren om door te gaan", + "Forgot_password_If_this_email_is_registered": "Als dit e-mailadres geregistreerd is, sturen we instructies om je wachtwoord opnieuw in te stellen. Als je geen e-mail ontvangt, kom dan terug en probeer het opnieuw.", + "Forgot_password": "Wachtwoord vergeten?", + "Forgot_Password": "Wachtwoord vergeten", + "Forward": "Doorsturen", + "Forward_Chat": "Chat doorsturen", + "Forward_to_department": "Doorsturen naar afdeling", + "Forward_to_user": "Doorsturen naar gebruiker", + "Full_table": "Klik om de volledige tabel te zien", + "Generate_New_Link": "Nieuwe link genereren", + "Group_by_favorites": "Groepeer favorieten", + "Group_by_type": "Groeperen op type", "Hide": "Verberg", "Has_joined_the_channel": "is bij het kanaal gekomen", - "Has_joined_the_conversation": "neemt deel aan het gesprek", + "Has_joined_the_conversation": "heeft zich bij het gesprek aangesloten", "Has_left_the_channel": "heeft het kanaal verlaten", - "In_App_And_Desktop": "In-app en Desktop", - "In_App_and_Desktop_Alert_info": "Laat een banner bovenaan het scherm zien als de app open is en geeft een notificatie op de desktop", + "Hide_System_Messages": "Verberg systeemberichten", + "Hide_type_messages": "Verberg \"{{type}}\" berichten", + "How_It_Works": "Hoe het werkt", + "Message_HideType_uj": "Gebruiker neemt deel", + "Message_HideType_ul": "Gebruiker vertrokken", + "Message_HideType_ru": "Gebruiker verwijderd", + "Message_HideType_au": "Gebruiker toegevoegd", + "Message_HideType_mute_unmute": "Gebruiker gedempt / kan weer praten", + "Message_HideType_r": "Kamernaam gewijzigd", + "Message_HideType_ut": "Gebruiker neemt deel aan gesprek", + "Message_HideType_wm": "Welkom", + "Message_HideType_rm": "Bericht verwijderd", + "Message_HideType_subscription_role_added": "Kreeg rol", + "Message_HideType_subscription_role_removed": "Rol niet langer gedefinieerd", + "Message_HideType_room_archived": "Kamer gearchiveerd", + "Message_HideType_room_unarchived": "Kamer niet gearchiveerd", + "I_Saved_My_E2E_Password": "Ik heb mijn E2E-wachtwoord opgeslagen", + "IP": "IP", + "In_app": "In-app", + "In_App_And_Desktop": "In-app en desktop", + "In_App_and_Desktop_Alert_info": "Geeft een banner boven aan het scherm weer wanneer de app geopend is, en geeft een melding op desktop weer", "Invisible": "Onzichtbaar", "Invite": "Nodig uit", "is_a_valid_RocketChat_instance": "is een geldige Rocket.Chat instantie", "is_not_a_valid_RocketChat_instance": "is geen geldige Rocket.Chat instantie", "is_typing": "is aan het typen", - "Invalid_or_expired_invite_token": "Ongeldig of verlopen uitnodigingstoken", - "Invalid_server_version": "De server die je probeert te bereiken gebruikt een versie die niet meer door de app ondersteunt wordt: {{currentVersion}}.\n\nMinimale versienummer {{minVersion}}", + "Invalid_or_expired_invite_token": "Ongeldige of verlopen uitnodigingstoken", + "Invalid_server_version": "De server waarmee je probeert te verbinden, gebruikt een versie die niet meer door de app wordt ondersteund: {{currentVersion}}.\n\nWe hebben versie {{minVersion}} nodig", "Invite_Link": "Uitnodigingslink", - "Invite_users": "Nodig gebruikers uit", - "Join": "Word lid", - "Just_invited_people_can_access_this_channel": "Alleen genodigden kunnen bij dit kanaal", + "Invite_users": "Gebruikers uitnodigen", + "Join": "Doe mee", + "Join_Code": "Deelnamecode", + "Insert_Join_Code": "Deelnamecode invoegen", + "Join_our_open_workspace": "Word lid van onze open werkruimte", + "Join_your_workspace": "Word lid van jouw werkruimte", + "Just_invited_people_can_access_this_channel": "Alleen uitgenodigde mensen hebben toegang tot dit kanaal", + "Just_invited_people_can_access_this_team": "Alleen uitgenodigde mensen hebben toegang tot dit team", "Language": "Taal", "last_message": "laatste bericht", - "Leave_channel": "Verlaat kanaal", + "Leave_channel": "Kanaal verlaten", "leaving_room": "ruimte verlaten", + "Leave": "Verlaten", "leave": "verlaten", "Legal": "Legaal", - "Light": "Light", - "License": "License", + "Light": "Licht", + "License": "Licentie", "Livechat": "Livechat", - "Login": "Login", - "Login_error": "Je inloggegevens zijn fout! Probeer het opnieuw.", - "Login_with": "Login met", - "Logout": "Logout", - "Max_number_of_uses": "Maximaal aantal gebruiksmogelijkheden ", + "Livechat_edit": "Livechat bewerken", + "Login": "Inloggen", + "Login_error": "Je inloggegevens zijn geweigerd! Probeer het opnieuw.", + "Login_with": "Inloggen met", + "Logging_out": "Uitloggen.", + "Logout": "Uitloggen", + "Max_number_of_uses": "Max aantal toepassingen", + "Max_number_of_users_allowed_is_number": "Max aantal toegestane gebruikers is {{maxUsers}}", "members": "leden", "Members": "Leden", - "Mentioned_Messages": "Vermelde Berichten", + "Mentioned_Messages": "Vermelde berichten", "mentioned": "vermeld", "Mentions": "Vermeldingen", "Message_accessibility": "Bericht van {{user}} om {{time}}: {{message}}", "Message_actions": "Berichtacties", "Message_pinned": "Bericht vastgezet", "Message_removed": "Bericht verwijderd", + "Message_starred": "Bericht met ster", + "Message_unstarred": "Bericht zonder ster", "message": "bericht", "messages": "berichten", + "Message": "Bericht", "Messages": "Berichten", "Message_Reported": "Bericht gerapporteerd", - "Microphone_Permission_Message": "Rocket.Chat heeft toegang tot je microfoon nodig voor geluidsberichten.", - "Microphone_Permission": "Microfoon toestemming", + "Microphone_Permission_Message": "Rocket.Chat heeft toegang tot je microfoon nodig zodat je een audiobericht kunt verzenden.", + "Microphone_Permission": "Microfoontoestemming", "Mute": "Dempen", "muted": "gedempt", "My_servers": "Mijn servers", - "N_people_reacted": "{{n}} mensen reageerden", + "N_people_reacted": "{{n}} mensen hebben gereageerd", "N_users": "{{n}} gebruikers", + "N_channels": "{{n}} kanalen", "name": "naam", "Name": "Naam", + "Navigation_history": "Navigatie geschiedenis", "Never": "Nooit", - "New_Message": "Nieuw Bericht", - "New_Password": "Nieuw Wachtwoord", - "New_Server": "Nieuwe Server", + "New_Message": "Nieuw bericht", + "New_Password": "Nieuw wachtwoord", + "New_Server": "Nieuwe server", "Next": "Volgende", "No_files": "Geen bestanden", "No_limit": "Geen limiet", @@ -259,160 +348,207 @@ "No_pinned_messages": "Geen vastgezette berichten", "No_results_found": "Geen resultaten gevonden", "No_starred_messages": "Geen berichten met ster gemarkeerd", - "No_thread_messages": "Geen thread berichten", + "No_thread_messages": "Geen discussieberichten", + "No_label_provided": "Geen {{label}} opgegeven.", "No_Message": "Geen bericht", "No_messages_yet": "Nog geen berichten", "No_Reactions": "Geen reacties", - "No_Read_Receipts": "Geen leesbevestiging", - "Not_logged": "Niet gelogged", - "Not_RC_Server": "Dit is geen Rocket.Chat server.\n{{contact}}", + "No_Read_Receipts": "Geen leesbevestigingen", + "Not_logged": "Niet ingelogd", + "Not_RC_Server": "Dit is geen Rocket.Chat-server.\n{{contact}}", "Nothing": "Niets", "Nothing_to_save": "Niets om op te slaan!", - "Notify_active_in_this_room": "Bericht de actieve gebruikers in deze kamer", - "Notify_all_in_this_room": "Bericht iedereen in deze kamer", + "Notify_active_in_this_room": "Waarschuw actieve gebruikers in deze kamer", + "Notify_all_in_this_room": "Breng iedereen in deze kamer op de hoogte", "Notifications": "Notificaties", - "Notification_Duration": "Notificatie Duur", + "Notification_Duration": "Duur van de notificatie", "Notification_Preferences": "Notificatievoorkeuren", + "No_available_agents_to_transfer": "Geen beschikbare agenten om door te sturen", "Offline": "Offline", "Oops": "Oeps!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Bezig met chatten", + "Omnichannel_enable_alert": "Je bent niet beschikbaar op Omnichannel. Wil je beschikbaar zijn?", + "Onboarding_description": "Een werkruimte is de ruimte van jouw team of organisatie om samen te werken. Vraag aan de beheerder van de werkruimte een adres om lid te worden of maak er een aan voor jouw team.", + "Onboarding_join_workspace": "Word lid van een werkruimte", + "Onboarding_subtitle": "Meer dan teamsamenwerking", "Onboarding_title": "Welkom bij Rocket.Chat", + "Onboarding_join_open_description": "Word lid van onze open werkruimte om met het Rocket.Chat team en de community te chatten.", + "Onboarding_agree_terms": "Door verder te gaan, ga je akkoord met Rocket.Chat", + "Onboarding_less_options": "Minder opties", + "Onboarding_more_options": "Meer opties", "Online": "Online", - "Only_authorized_users_can_write_new_messages": "Alleen gebruikers met toestemming mogen nieuwe berichten maken", - "Open_emoji_selector": "Open de emoji selector", - "Open_Source_Communication": "Open de Source Communication", + "Only_authorized_users_can_write_new_messages": "Alleen geautoriseerde gebruikers kunnen nieuwe berichten schrijven", + "Open_emoji_selector": "Emoji-kiezer openen", + "Open_Source_Communication": "Open Source Communicatie", + "Open_your_authentication_app_and_enter_the_code": "Open je authenticatie-app en voer de code in.", + "OR": "OF", + "OS": "OS", + "Overwrites_the_server_configuration_and_use_room_config": "Overschrijft de serverconfiguratie en gebruikt kamer config", "Password": "Wachtwoord", + "Parent_channel_or_group": "Bovenliggend kanaal of groep", "Permalink_copied_to_clipboard": "Permalink gekopiëerd naar klembord!", + "Phone": "Telefoon", "Pin": "Vastzetten", "Pinned_Messages": "Vastgezette berichten", "pinned": "vastgezet", "Pinned": "Vastgezet", - "Please_enter_your_password": "Vul je wachtwoord in", + "Please_add_a_comment": "Voeg een reactie toe", + "Please_enter_your_password": "Voer je wachtwoord in", + "Please_wait": "Even geduld.", "Preferences": "Voorkeuren", "Preferences_saved": "Voorkeuren opgeslagen!", - "Privacy_Policy": " Privacy Policy", - "Private_Channel": "Prive Kanaal", - "Private_Groups": "Prive Groepen", - "Private": "Prive", - "Processing": "Verwerken...", + "Privacy_Policy": " Privacybeleid", + "Private_Channel": "Privékanaal", + "Private_Groups": "Privé groepen", + "Private": "Privé", + "Processing": "Verwerking...", "Profile_saved_successfully": "Profiel succesvol opgeslagen!", "Profile": "Profiel", "Public_Channel": "Publiek kanaal", "Public": "Publiek", - "Push_Notifications": "Pushnotificaties", - "Push_Notifications_Alert_Info": "Deze notificaties krijg je als de app niet geopend is", - "Quote": "Quote", + "Push_Notifications": "Pushmeldingen", + "Push_Notifications_Alert_Info": "Deze notificaties worden aan jouw enkel geleverd als de app niet geopend is", + "Quote": "Citaat", "Reactions_are_disabled": "Reacties zijn uitgeschakeld", "Reactions_are_enabled": "Reacties zijn ingeschakeld", "Reactions": "Reacties", "Read": "Lezen", - "Read_Only_Channel": "Alleen-lezen Kanaal", - "Read_Only": "Alleen Lezen", + "Read_External_Permission_Message": "Rocket.Chat heeft toegang nodig tot foto's, media en bestanden op je apparaat", + "Read_External_Permission": "Lees toestemming voor media", + "Read_Only_Channel": "Alleen-lezen kanaal", + "Read_Only": "Alleen lezen", "Read_Receipt": "Leesbevestiging", - "Receive_Group_Mentions": "Ontvang Groepsvermeldingen", + "Receive_Group_Mentions": "Groepsvermeldingen ontvangen", "Receive_Group_Mentions_Info": "Ontvang @all en @here vermeldingen", - "Register": "Aanmelden", - "Repeat_Password": "Wachtwoord herhalen", - "Replied_on": "Gereageerd op:", - "replies": "reacties", - "reply": "reactie", - "Reply": "Reacties", + "Register": "Registreren", + "Repeat_Password": "Herhaal wachtwoord", + "Replied_on": "Beantwoord op:", + "replies": "antwoordt", + "reply": "antwoord", + "Reply": "Antwoord", "Report": "Rapporteren", - "Receive_Notification": "Ontvang notificatie", + "Receive_Notification": "Notificatie ontvangen", "Receive_notifications_from": "Ontvang notificaties van {{name}}", "Resend": "Opnieuw verzenden", - "Reset_password": "Wachtwoord reset", + "Reset_password": "Wachtwoord resetten", "resetting_password": "wachtwoord aan het resetten", "RESET": "RESET", - "Review_app_title": "Vind je dit een TOP app?", + "Return": "Terug", + "Review_app_title": "Geniet je van deze app?", "Review_app_desc": "Geef ons 5 sterren op {{store}}", - "Review_app_yes": "Doe ik!", + "Review_app_yes": "Zeker!", "Review_app_no": "Nee", "Review_app_later": "Misschien later", - "Review_app_unable_store": "Kon {{store}} niet openen", - "Review_this_app": "Review deze app", + "Review_app_unable_store": "Kan {{store}} niet openen", + "Review_this_app": "Beoordeel deze app", + "Remove": "Verwijderen", + "remove": "verwijderen", "Roles": "Rollen", - "Room_actions": "Kamer acties", - "Room_changed_announcement": "Kamer announcement veranderd naar: {{announcement}} door {{userBy}}", - "Room_changed_description": "Kamer beschrijving veranderd naar: {{description}} door {{userBy}}", - "Room_changed_privacy": "Kamer type veranderd naar: {{type}} door {{userBy}}", - "Room_changed_topic": "Kamer onderwerp veranderd naar: {{topic}} door {{userBy}}", - "Room_Files": "Kamer Bestanden", - "Room_Info_Edit": "Kamer Info Aanpassen", - "Room_Info": "Kamer Info", - "Room_Members": "Kamer Leden", - "Room_name_changed": "Kamer naam veranderd naar: {{name}} door {{userBy}}", + "Room_actions": "Kameracties", + "Room_changed_announcement": "Kameraankondiging gewijzigd in: {{announcement}} door {{userBy}}", + "Room_changed_avatar": "Kameravatar gewijzigd door {{userBy}}", + "Room_changed_description": "Kamerbeschrijving gewijzigd in: {{description}} door {{userBy}}", + "Room_changed_privacy": "Kamertype gewijzigd in: {{type}} door {{userBy}}", + "Room_changed_topic": "Oonderwerp van kamer gewijzigd in: {{topic}} door {{userBy}}", + "Room_Files": "Kamerbestanden", + "Room_Info_Edit": "Kamer info bewerken", + "Room_Info": "Kamer info", + "Room_Members": "Kamerleden", + "Room_name_changed": "Kamernaam gewijzigd in: {{name}} door {{userBy}}", "SAVE": "OPSLAAN", - "Save_Changes": "Sla wijzigingen op", + "Save_Changes": "Wijzigingen opslaan", "Save": "Opslaan", + "Saved": "Opgeslagen", "saving_preferences": "voorkeuren opslaan", "saving_profile": "profiel opslaan", "saving_settings": "instellingen opslaan", - "saved_to_gallery": "Aan galerij toegevoegd", - "Search_Messages": "Zoek Berichten", - "Search": "Zoek", - "Search_by": "Zoek op", - "Search_global_users": "Zoek voor algemene gebruikers", - "Search_global_users_description": "Als je dit aan zet, kan je gebruikers van andere bedrijven en servers zoeken.", + "saved_to_gallery": "Opgeslagen in galerij", + "Save_Your_E2E_Password": "Bewaar jouw E2E-wachtwoord", + "Save_Your_Encryption_Password": "Bewaar jouw versleutelingswachtwoord", + "Save_Your_Encryption_Password_warning": "Dit wachtwoord wordt nergens opgeslagen, bewaar het dus zorgvuldig ergens anders.", + "Save_Your_Encryption_Password_info": "Indien je je wachtwoord verliest, is er geen enkel manier om het te herstellen en verlies je toegang tot je berichten.", + "Search_Messages": "Berichten zoeken", + "Search": "Zoeken", + "Search_by": "Zoeken op", + "Search_global_users": "Zoeken naar wereldwijde gebruikers", + "Search_global_users_description": "Als je dit inschakelt, kan je gebruikers van andere bedrijven en servers opzoeken.", "Seconds": "{{second}} seconden", - "Select_Avatar": "Kies Avatar", - "Select_Server": "Kies Server", - "Select_Users": "Kies Gebruikers", - "Send": "Verstuur", - "Send_audio_message": "Verstuur geluidsbericht", - "Send_crash_report": "Verstuur crash report", - "Send_message": "Verstuur bericht", - "Send_to": "Verstuur naar...", - "Sent_an_attachment": "Verstuur een bijlage", + "Security_and_privacy": "Veiligheid en privacy", + "Select_Avatar": "Selecteer avatar", + "Select_Server": "Selecteer server", + "Select_Users": "Selecteer gebruikers", + "Select_a_Channel": "Selecteer een kanaal", + "Select_a_Department": "Selecteer een afdeling", + "Select_an_option": "Selecteer een optie", + "Select_a_User": "Selecteer een gebruiker", + "Send": "Verzenden", + "Send_audio_message": "Audiobericht verzenden", + "Send_crash_report": "Crashrapport verzenden", + "Send_message": "Bericht verzenden", + "Send_me_the_code_again": "Stuur me de code opnieuw", + "Send_to": "Verzenden naar...", + "Sending_to": "Verzenden naar", + "Sent_an_attachment": "Een bijlage verzonden", "Server": "Server", "Servers": "Servers", "Server_version": "Server versie: {{version}}", - "Set_username_subtitle": "De gebruikersnaam wordt gebruikt om anderen jou te vermelden in berichten", + "Set_username_subtitle": "De gebruikersnaam wordt gebruikt om anderen toe te staan jou in berichten te vermelden", + "Set_custom_status": "Aangepaste status instellen", + "Set_status": "Status instellen", + "Status_saved_successfully": "Status succesvol opgeslagen!", "Settings": "Instellingen", - "Settings_succesfully_changed": "Instellingen succesvol veranderd!", + "Settings_succesfully_changed": "Instellingen succesvol gewijzigd!", "Share": "Delen", - "Share_Link": "Deel Link", + "Share_Link": "Deel link", "Share_this_app": "Deel deze app", - "Show_Unread_Counter": "Laat Ongelezen Teller Zien", - "Show_Unread_Counter_Info": "De Ongelezen Tller is een badge aan de rechterkant van het kanaal in de lijst", - "Sign_in_your_server": "Log in bij je server", - "Sign_Up": "Inschrijven", - "Some_field_is_invalid_or_empty": "Een veld is ongeldig of leeg", + "Show_more": "Meer tonen..", + "Show_Unread_Counter": "Toon ongelezen teller", + "Show_Unread_Counter_Info": "Ongelezen teller wordt weergegeven als een badge aan de rechterkant van het kanaal, in de lijst", + "Sign_in_your_server": "Log in op je server", + "Sign_Up": "Registreren", + "Some_field_is_invalid_or_empty": "Sommige velden zijn ongeldig of leeg", "Sorting_by": "Sorteren op {{key}}", "Sound": "Geluid", - "Star_room": "Sterrenkamer", + "Star_room": "Favoriete kanalen", "Star": "Ster", "Starred_Messages": "Berichten met ster gemarkeerd", "starred": "met ster gemarkeerd", "Starred": "Met ster gemarkeerd", "Start_of_conversation": "Begin van een gesprek", + "Start_a_Discussion": "Start een discussie", "Started_discussion": "Begin van een discussie:", - "Started_call": "Gesprek gestart door {{userBy}}", - "Submit": "Verstuur", + "Started_call": "Oproep gestart door {{userBy}}", + "Submit": "Verzenden", "Table": "Tabel", + "Tags": "Tags", "Take_a_photo": "Neem een foto", - "Take_a_video": "Neem een video", - "tap_to_change_status": "tik om je status te veranderen", - "Tap_to_view_servers_list": "Tik om een server lijst te weergeven", + "Take_a_video": "Maak een video", + "Take_it": "Pak het!", + "tap_to_change_status": "tik om de status te wijzigen", + "Tap_to_view_servers_list": "Tik om de serverlijst te bekijken", "Terms_of_Service": " Servicevoorwaarden ", "Theme": "Thema", - "There_was_an_error_while_action": "Er was eer fout tijdens {{action}}!", + "The_user_wont_be_able_to_type_in_roomName": "De gebruiker zal in {{roomName}} niet kunnen typen", + "The_user_will_be_able_to_type_in_roomName": "De gebruiker zal in {{roomName}} kunnen typen", + "There_was_an_error_while_action": "Er is een fout opgetreden tijdens {{action}}!", "This_room_is_blocked": "Deze kamer is geblokkeerd", "This_room_is_read_only": "Deze kamer is alleen-lezen", - "Thread": "Thread", - "Threads": "Threads", + "Thread": "Draad", + "Threads": "Draden", "Timezone": "Tijdzone", "To": "Naar", "topic": "onderwerp", "Topic": "Onderwerp", "Translate": "Vertalen", - "Try_again": "Probeer opnieuw", - "Two_Factor_Authentication": "Tweee-factor Authenticatie", + "Try_again": "Probeer het opnieuw", + "Two_Factor_Authentication": "Twee-factor authenticatie", "Type_the_channel_name_here": "Typ hier de kanaalnaam", "unarchive": "dearchiveren", "UNARCHIVE": "DEARCHIVEREN", - "Unblock_user": "Gebruiker deblokkeren", + "Unblock_user": "Deblokkeer gebruiker", "Unfavorite": "Uit favorieten halen", - "Unfollowed_thread": "Thread ontvolgd", + "Unfollowed_thread": "Draad ontvolgd", "Unmute": "Dempen opheffen", "unmuted": "ongedempt", "Unpin": "Losmaken", @@ -423,60 +559,207 @@ "Updating": "Updaten...", "Uploading": "Uploaden", "Upload_file_question_mark": "Bestand uploaden?", + "User": "Gebruiker", "Users": "Gebruikers", "User_added_by": "Gebruiker {{userAdded}} toegevoegd door {{userBy}}", - "User_Info": "Gebruiker Info", + "User_Info": "Gebruikers info", "User_has_been_key": "Gebruiker is {{key}}", - "User_is_no_longer_role_by_": "{{user}} is geen {{role}} meer door {{userBy}}", + "User_is_no_longer_role_by_": "{{user}} is niet langer {{role}} door {{userBy}}", "User_muted_by": "Gebruiker {{userMuted}} gedempt door {{userBy}}", "User_removed_by": "Gebruiker {{userRemoved}} verwijderd door {{userBy}}", "User_sent_an_attachment": "{{user}} stuurde een bijlage", - "User_unmuted_by": "Dempen opgeheven voor {{userUnmuted}} door {{userBy}}", - "User_was_set_role_by_": "{{user}} is nu {{role}} door {{userBy}}", + "User_unmuted_by": "Dempen voor {{userUnmuted}} opgeheven door {{userBy}}", + "User_was_set_role_by_": "{{user}} is als {{role}} ingesteld door {{userBy}}", "Username_is_empty": "Gebruikersnaam is leeg", "Username": "Gebruikersnaam", - "Username_or_email": "Gebruikersnaam of email", - "Validating": "Aan het valideren", + "Username_or_email": "Gebruikersnaam of e-mail", + "Uses_server_configuration": "Gebruikt serverconfiguratie", + "Validating": "Valideren", + "Registration_Succeeded": "Registratie geslaagd!", + "Verify": "Verifiëren", + "Verify_email_title": "Registratie geslaagd!", + "Verify_email_desc": "We hebben je een e-mail gestuurd om je inschrijving te bevestigen. Als je binnenkort geen e-mail ontvangt, gelieve terug te komen en het opnieuw te proberen.", + "Verify_your_email_for_the_code_we_sent": "Verifieer je e-mail voor de code die we hebben gestuurd", "Video_call": "Videogesprek", "View_Original": "Bekijk origineel", - "Voice_call": "Audiogesprek", - "Websocket_disabled": "Websocket staat uit voor deze server.\n{{contact}}", + "Voice_call": "Spraakoproep", + "Waiting_for_network": "Wachten op netwerk...", + "Websocket_disabled": "Websocket is uitgeschakeld voor deze server.\n{{contact}}", "Welcome": "Welkom", + "What_are_you_doing_right_now": "Wat doe je op dit moment?", "Whats_your_2fa": "Wat is je 2FA code?", - "Without_Servers": "Zonder Servers", - "Write_External_Permission_Message": "Rocket.Chat moet bij je galerij kunnen om afbeeldingen op te slaan.", - "Write_External_Permission": "Galerij Toestemming", + "Without_Servers": "Zonder servers", + "Workspaces": "Werkruimten", + "Would_you_like_to_return_the_inquiry": "Wil je de aanvraag retourneren?", + "Write_External_Permission_Message": "Rocket.Chat heeft toegang nodig tot je galerij zodat je afbeeldingen kunt opslaan.", + "Write_External_Permission": "Galerij toestemming", + "Yes": "Ja", "Yes_action_it": "Ja, {{action}} het!", "Yesterday": "Gisteren", - "You_are_in_preview_mode": "Je bent in preview mode", + "You_are_in_preview_mode": "Je bent in voorbeeldmodus", "You_are_offline": "Je bent offline", - "You_can_search_using_RegExp_eg": "Je kan RegExp. gebruiken, bijv. `/^text$/i`", + "You_can_search_using_RegExp_eg": "Je kan RegExp. gebruiken, bijv. `/^tekst$/i`", "You_colon": "Jij: ", "you_were_mentioned": "je bent vermeld", + "You_were_removed_from_channel": "Je bent verwijderd uit {{channel}}", "you": "jij", "You": "Jij", - "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Je moet minimaal toegang hebben tot 1 Rocket.Chat server om iets te delen.", - "Your_certificate": "Jouw Certificaat", - "Your_invite_link_will_expire_after__usesLeft__uses": "Je uitnodigingslink wordt ongeldig over {{usesLeft}} keer.", - "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Je uitnodigingslink wordt ongeldig op {{date}} of na{{usesLeft}} keer.", - "Your_invite_link_will_expire_on__date__": "Je uitnodigingslink wordt ongeldig op {{date}}.", - "Your_invite_link_will_never_expire": "Je uitnodigingslink wordt nooit ongeldig.", + "Logged_out_by_server": "Je bent uitgelogd door de server. Gelieve opnieuw in te loggen.", + "You_need_to_access_at_least_one_RocketChat_server_to_share_something": "Je moet minstens toegang hebben tot één Rocket.Chat-server om iets te delen.", + "You_need_to_verifiy_your_email_address_to_get_notications": "Je moet je e-mailadres verifiëren om meldingen te ontvangen", + "Your_certificate": "Jouw certificaat", + "Your_invite_link_will_expire_after__usesLeft__uses": "Je uitnodigingslink verloopt na {{usesLeft}} keer.", + "Your_invite_link_will_expire_on__date__or_after__usesLeft__uses": "Je uitnodigingslink verloopt op {{date}} of na {{usesLeft}} keer.", + "Your_invite_link_will_expire_on__date__": "Je uitnodigingslink verloopt op {{date}}.", + "Your_invite_link_will_never_expire": "Je uitnodigingslink zal nooit verlopen.", + "Your_workspace": "Jouw werkruimte", + "Your_password_is": "Jouw wachtwoord is", "Version_no": "Versie: {{version}}", - "You_will_not_be_able_to_recover_this_message": "Je kan dit bericht niet meer terugkrijgen!", - "Change_Language": "Verander taal", - "Crash_report_disclaimer": "We kijken nooit naar de content van je chats. Het crashrapport bevat alleen relevante informatie voor ons om problemen te isoleren en op te lossen.", - "Type_message": "Type bericht", + "You_will_not_be_able_to_recover_this_message": "Je zal dit bericht niet meer kunnen herstellen!", + "You_will_unset_a_certificate_for_this_server": "Je zal een certificaat voor deze server uitschakelen", + "Change_Language": "Taal veranderen", + "Crash_report_disclaimer": "We volgen nooit nooit de inhoud van je chats. Het crashrapport en de analytische gebeurtenissen bevatten alleen relevante informatie voor ons om problemen te identificeren en op te lossen.", + "Type_message": "Typ bericht", "Room_search": "Kamers zoeken", - "Room_selection": "Kamerselectie 1...9", + "Room_selection": "Kamerkeuze 1...9", "Next_room": "Volgende kamer", "Previous_room": "Vorige kamer", - "New_room": "Nieuwe Kamer", - "Upload_room": "Upload naar kamer", - "Search_messages": "Doorzoek messages", - "Scroll_messages": "Scroll door messages", - "Reply_latest": "Beantwoord de laatste", + "New_room": "Nieuwe kamer", + "Upload_room": "Uploaden naar kamer", + "Search_messages": "Berichten zoeken", + "Scroll_messages": "Berichten scrollen", + "Reply_latest": "Antwoord op laatste", + "Reply_in_Thread": "Reageer in discussie", "Server_selection": "Server selectie", "Server_selection_numbers": "Server selectie 1...9", - "Add_server": "Voeg Server Toe", - "New_line": "Nieuwe Regel" + "Add_server": "Server toevoegen", + "New_line": "Nieuwe lijn", + "You_will_be_logged_out_of_this_application": "Je wordt uitgelogd van deze applicatie.", + "Clear": "Wissen", + "This_will_clear_all_your_offline_data": "Hiermee worden al jouw offline gegevens gewist.", + "This_will_remove_all_data_from_this_server": "Dit zal alle gegevens van deze server verwijderen.", + "Mark_unread": "Markeer als ongelezen", + "Wait_activation_warning": "Voordat u kunt inloggen, moet uw account handmatig worden geactiveerd door een beheerder.", + "Screen_lock": "Schermvergrendeling", + "Local_authentication_biometry_title": "Authenticeren", + "Local_authentication_biometry_fallback": "Gebruik toegangscode", + "Local_authentication_unlock_option": "Ontgrendelen met toegangscode", + "Local_authentication_change_passcode": "Wijzig toegangscode", + "Local_authentication_info": "Opmerking: als je de toegangscode vergeet, moet je de app verwijderen en opnieuw installeren.", + "Local_authentication_facial_recognition": "gezichtsherkenning", + "Local_authentication_fingerprint": "vingerafdruk", + "Local_authentication_unlock_with_label": "Ontgrendel met {{label}}", + "Local_authentication_auto_lock_60": "Na 1 minuut", + "Local_authentication_auto_lock_300": "Na 5 minuten", + "Local_authentication_auto_lock_900": "Na 15 minuten", + "Local_authentication_auto_lock_1800": "Na 30 minuten", + "Local_authentication_auto_lock_3600": "Na 1 uur", + "Passcode_enter_title": "Voer uw toegangscode in", + "Passcode_choose_title": "Kies je nieuwe toegangscode", + "Passcode_choose_confirm_title": "Bevestig je nieuwe toegangscode", + "Passcode_choose_error": "Toegangscodes komen niet overeen. Probeer het opnieuw.", + "Passcode_choose_force_set": "Toegangscode vereist door beheerder", + "Passcode_app_locked_title": "App vergrendeld", + "Passcode_app_locked_subtitle": "Probeer het over {{timeLeft}} seconden opnieuw", + "After_seconds_set_by_admin": "Na {{seconds}} seconden (ingesteld door beheerder)", + "Dont_activate": "Nu niet activeren", + "Queued_chats": "Chats in de wachtrij", + "Queue_is_empty": "Wachtrij is leeg", + "Logout_from_other_logged_in_locations": "Afmelden bij andere ingelogde locaties", + "You_will_be_logged_out_from_other_locations": "Je wordt uitgelogd van andere locaties.", + "Logged_out_of_other_clients_successfully": "Succesvol uitgelogd bij andere klanten", + "Logout_failed": "Uitloggen mislukt!", + "Log_analytics_events": "Analysegebeurtenissen loggen", + "E2E_encryption_change_password_title": "Versleutelingswachtwoord wijzigen", + "E2E_encryption_change_password_description": "Je kan nu versleutelde privégroepen en directe berichten aanmaken. Je kan ook bestaande privégroepen of DM's wijzigen in versleuteld.\nDit is end-to-end codering, dus de sleutel om jouw berichten te coderen/decoderen en deze wordt niet op de server opgeslagen. Daarom moet je dit wachtwoord op een veilige plaats opslaan. Je moet het invoeren op andere apparaten waarop je e2e-codering wilt gebruiken.", + "E2E_encryption_change_password_error": "Fout bij het wijzigen van het E2E-wachtwoord", + "E2E_encryption_change_password_success": "E2E-wachtwoord succesvol gewijzigd!", + "E2E_encryption_change_password_message": "Zorg ervoor dat je het zorgvuldig ergens anders hebt bewaard.", + "E2E_encryption_change_password_confirmation": "Ja, verander het", + "E2E_encryption_reset_title": "E2E-sleutel resetten", + "E2E_encryption_reset_description": "Deze optie zal je huidige E2E-sleutel verwijderen en je wordt uitgelogd.\nWanneer je opniew inlogt, genereert Rocket.Chat je een nieuwe sleutel en herstelt je toegang tot elke versleutelde kamer die een of meer leden heeft.\nDoor de aard van E2E-versleuteling kan Rocket.Chat de toegang tot een versleutelde kamer zonder online lid niet herstellen.", + "E2E_encryption_reset_button": "E2E-sleutel resetten", + "E2E_encryption_reset_error": "Fout bij het resetten van E2E-sleutel!", + "E2E_encryption_reset_message": "Je wordt uitgelogd.", + "E2E_encryption_reset_confirmation": "Ja, reset het", + "Following": "Volgend", + "Threads_displaying_all": "Alles weergeven", + "Threads_displaying_following": "Volgend weergeven", + "Threads_displaying_unread": "Ongelezen weergeven", + "No_threads": "Er zijn geen discussies", + "No_threads_following": "Je volgt geen discussies", + "No_threads_unread": "Er zijn geen ongelezen discussies", + "Messagebox_Send_to_channel": "Stuur naar kanaal", + "Leader": "Leider", + "Moderator": "Moderator", + "Owner": "Eigenaar", + "Remove_from_room": "Verwijderen uit kamer", + "Ignore": "Negeren", + "Unignore": "Niet meer negeren", + "User_has_been_ignored": "Gebruiker is genegeerd", + "User_has_been_unignored": "Gebruiker wordt niet langer genegeerd", + "User_has_been_removed_from_s": "Gebruiker is verwijderd van {{s}}", + "User__username__is_now_a_leader_of__room_name_": "Gebruiker {{username}} is nu een leider van {{room_name}}", + "User__username__is_now_a_moderator_of__room_name_": "Gebruiker {{username}} is nu een moderator van {{room_name}}", + "User__username__is_now_a_owner_of__room_name_": "Gebruiker {{username}} is nu eigenaar van {{room_name}}", + "User__username__removed_from__room_name__leaders": "Gebruiker {{username}} verwijderd uit {{room_name}} leiders", + "User__username__removed_from__room_name__moderators": "Gebruiker {{username}} verwijderd uit {{room_name}} moderators", + "User__username__removed_from__room_name__owners": "Gebruiker {{username}} verwijderd uit {{room_name}} eigenaars", + "The_user_will_be_removed_from_s": "De gebruiker wordt verwijderd uit {{s}}", + "Yes_remove_user": "Ja, verwijder gebruiker!", + "Direct_message": "Direct bericht", + "Message_Ignored": "Bericht genegeerd. Tik om het weer te geven.", + "Enter_workspace_URL": "Voer de werkruimte-URL in", + "Workspace_URL_Example": "Vb. uw-bedrijf.rocket.chat", + "This_room_encryption_has_been_enabled_by__username_": "De versleuteling van deze kamer is ingeschakeld door {{username}}", + "This_room_encryption_has_been_disabled_by__username_": "De versleuteling van deze kamer is uitgeschakeld door {{username}}", + "Teams": "Teams", + "No_team_channels_found": "Geen kanalen gevonden", + "Team_not_found": "Team niet gevonden", + "Create_Team": "Team aanmaken", + "Team_Name": "Teamnaam", + "Private_Team": "Privé team", + "Read_Only_Team": "Alleen-lezen team", + "Broadcast_Team": "Broadcast team", + "creating_team": "team maken", + "team-name-already-exists": "Er bestaat al een team met die naam", + "Add_Channel_to_Team": "Kanaal toevoegen aan team", + "Create_New": "Maak nieuw", + "Add_Existing": "Voeg bestaande", + "Add_Existing_Channel": "Bestaand kanaal toevoegen", + "Remove_from_Team": "Verwijderen uit team", + "Auto-join": "Automatisch deelnemen", + "Remove_Team_Room_Warning": "Wil je dit kanaal uit het team verwijderen? Het kanaal wordt terug naar de werkruimte verplaatst", + "Confirmation": "Bevestiging", + "invalid-room": "Ongeldige kamer", + "You_are_leaving_the_team": "Je verlaat het team '{{team}}'", + "Leave_Team": "Team verlaten", + "Select_Team": "Selecteer team", + "Select_Team_Channels": "Selecteer de kanalen van het team die je wilt verlaten.", + "Cannot_leave": "Kan niet weggaan", + "Cannot_remove": "Kan niet verwijderen", + "Cannot_delete": "Kan niet verwijderen", + "Last_owner_team_room": "Je bent de laatste eigenaar van dit kanaal. Zodra u het team verlaat, blijft het kanaal binnen het team, maar beheert u het van buitenaf.", + "last-owner-can-not-be-removed": "Laatste eigenaar kan niet worden verwijderd.", + "Remove_User_Teams": "Selecteer de kanalen waarvan je de gebruiker wilt verwijderen.", + "Delete_Team": "Team verwijderen", + "Select_channels_to_delete": "Dit kan niet ongedaan worden gemaakt. Zodra je een team verwijdert, worden alle chatinhoud en configuratie verwijderd.\n\nSelecteer de kanalen die je wilt verwijderen. Degene die je besluit te behouden, zullen in jouw werkruimte beschikbaar zijn. Hou er rekening mee dat openbare kanalen nog steeds openbaar en voor iedereen zichtbaar zijn.", + "You_are_deleting_the_team": "Je verwijdert dit team.", + "Removing_user_from_this_team": "Je verwijdert {{user}} uit dit team", + "Remove_User_Team_Channels": "Selecteer de kanalen waarvan je de gebruiker wilt verwijderen.", + "Remove_Member": "Lid verwijderen", + "leaving_team": "team verlaten", + "removing_team": "verwijderen uit team", + "moving_channel_to_team": "kanaal verplaatsen naar team", + "deleting_team": "team verwijderen", + "member-does-not-exist": "Lid bestaat niet", + "Convert": "Converteren", + "Convert_to_Team": "Converteren naar team", + "Convert_to_Team_Warning": "Dit kan niet ongedaan worden gemaakt. Eens je een kanaal naar een team hebt geconverteerd, kun je het niet meer naar een kanaal terugzetten.", + "Move_to_Team": "Verplaats naar team", + "Move_Channel_Paragraph": "Het verplaatsen van een kanaal binnen een team betekent dat dit kanaal wordt toegevoegd in de context van het team. Maar, alle leden van dit kanaal, die geen lid zijn van het respectieve team, zullen nog steeds toegang hebben tot dit kanaal, maar worden niet als teamleden toegevoegd.\n\nHet volledige beheer van dit kanaal wordt nog steeds door de eigenaren van dit kanaal gedaan.\n\nTeamleden en zelfs teameigenaren, wanneer ze geen lid zijn van dit kanaal, hebben geen toegang tot de content van het kanaal.\n\nHou er rekening mee dat de eigenaar van het team de leden uit het kanaal kan verwijderen.", + "Move_to_Team_Warning": "Wil je na het lezen van de vorige instructies over dit gedrag, dit kanaal nog steeds naar het geselecteerde team verplaatsen?", + "Load_More": "Meer laden", + "Load_Newer": "Nieuwer laden", + "Load_Older": "Ouder laden" } \ No newline at end of file diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 293959613d2..9b34d87d3f5 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -277,6 +277,7 @@ "last_message": "última mensagem", "Leave_channel": "Sair do canal", "leaving_room": "saindo do canal", + "Leave": "Sair da sala", "leave": "sair", "Legal": "Legal", "Light": "Claro", @@ -639,12 +640,6 @@ "No_threads_following": "Você não está seguindo tópicos", "No_threads_unread": "Não há tópicos não lidos", "Messagebox_Send_to_channel": "Mostrar no canal", - "Set_as_leader": "Definir como líder", - "Set_as_moderator": "Definir como moderador", - "Set_as_owner": "Definir como proprietário", - "Remove_as_leader": "Remover como líder", - "Remove_as_moderator": "Remover como moderador", - "Remove_as_owner": "Remover como owner", "Remove_from_room": "Remover do canal", "Ignore": "Ignorar", "Unignore": "Deixar de ignorar", @@ -669,5 +664,6 @@ "No_team_channels_found": "Nenhum canal encontrado", "Team_not_found": "Time não encontrado", "Private_Team": "Equipe Privada", - "Add_Existing_Channel": "Adicionar Canal Existente" + "Add_Existing_Channel": "Adicionar Canal Existente", + "invalid-room": "Sala inválida" } \ No newline at end of file diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json index 8b904c0ff9a..e5fca9504ab 100644 --- a/app/i18n/locales/ru.json +++ b/app/i18n/locales/ru.json @@ -61,6 +61,7 @@ "error-message-editing-blocked": "Правка сообщений заблокирована", "error-message-size-exceeded": "Размер сообщения превышает максимально разрешенный", "error-missing-unsubscribe-link": "Вы должны указать ссылку [отписаться].", + "error-no-owner-channel": "Вы не являетесь владельцем данного чата", "error-no-tokens-for-this-user": "Для этого пользователя нет токенов", "error-not-allowed": "Не допускается", "error-not-authorized": "Не разрешено", @@ -78,6 +79,7 @@ "error-user-registration-disabled": "Регистрация пользователей отключена", "error-user-registration-secret": "Регистрация пользователей разрешена только через секретный URL", "error-you-are-last-owner": "Вы последний владелец. Пожалуйста, назначьте нового владельца, прежде чем покинуть чат.", + "error-status-not-allowed": "Статус Невидимый отключён", "Actions": "Действия", "activity": "активности", "Activity": "По активности", @@ -90,6 +92,7 @@ "alert": "оповещение", "alerts": "оповещения", "All_users_in_the_channel_can_write_new_messages": "Все пользователи канала могут писать новые сообщения", + "All_users_in_the_team_can_write_new_messages": "Все пользователи в Команде могут писать новые сообщения", "A_meaningful_name_for_the_discussion_room": "Осмысленное имя для обсуждения", "All": "Все", "All_Messages": "Все сообщения", @@ -180,6 +183,7 @@ "delete": "удалить", "Delete": "Удалить", "DELETE": "УДАЛИТЬ", + "move": "переместить", "deleting_room": "удаление чата", "description": "описание", "Description": "Описание", @@ -225,6 +229,7 @@ "Encryption_error_title": "Введен не верный пароль шифрования", "Encryption_error_desc": "Невозможно расшифровать ваш ключ шифрования, чтобы импортировать его", "Everyone_can_access_this_channel": "Каждый может получить доступ к этому каналу", + "Everyone_can_access_this_team": "Каждый может получить доступ к этой Команде", "Error_uploading": "Ошибка загрузки", "Expiration_Days": "Срок действия (Дни)", "Favorite": "Избранное", @@ -286,10 +291,12 @@ "Join_our_open_workspace": "Присоединиться к нашему открытому серверу", "Join_your_workspace": "Присоединиться к вашему серверу", "Just_invited_people_can_access_this_channel": "Только приглашенные люди могут получить доступ к этому каналу", + "Just_invited_people_can_access_this_team": "Только приглашенные пользователи могут получить доступ к этой Команде", "Language": "Язык", "last_message": "последнее сообщение", "Leave_channel": "Покинуть канал", "leaving_room": "покинуть комнату", + "Leave": "Покинуть комнату", "leave": "покинуть", "Legal": "Правовые аспекты", "Light": "Светлая", @@ -326,6 +333,7 @@ "My_servers": "Мои серверы", "N_people_reacted": "отреагировало {{n}} человек", "N_users": "{{n}} пользователи", + "N_channels": "{{n}} каналов", "name": "имя", "Name": "Имя", "Navigation_history": "История навигации", @@ -435,6 +443,7 @@ "Review_app_unable_store": "Невозможно открыть {{store}}", "Review_this_app": "Оценить это приложение", "Remove": "Удалить", + "remove": "удалить", "Roles": "Роли", "Room_actions": "Действия с чатом", "Room_changed_announcement": "Объявление чата было изменено на: {{announcement}} пользователем {{userBy}}", @@ -681,12 +690,9 @@ "No_threads_following": "Нет тредов, за которыми вы следите", "No_threads_unread": "Непрочитанных тредов нет", "Messagebox_Send_to_channel": "Отправить в чат", - "Set_as_leader": "Назначить лидером", - "Set_as_moderator": "Назначить модератором", - "Set_as_owner": "Назначить владельцем", - "Remove_as_leader": "Удалить из лидеров", - "Remove_as_moderator": "Удалить из модераторов", - "Remove_as_owner": "Удалить из владельцев", + "Leader": "Лидер", + "Moderator": "Модератор", + "Owner": "Владелец", "Remove_from_room": "Удалить из чата", "Ignore": "Игнориновать", "Unignore": "Прекратить игнорировать", @@ -716,5 +722,44 @@ "Read_Only_Team": "Команда только для чтения", "Broadcast_Team": "Широковещательная Команда", "creating_team": "создание Команды", - "team-name-already-exists": "Команда с таким названием уже существует" + "team-name-already-exists": "Команда с таким названием уже существует", + "Add_Channel_to_Team": "Добавить канал в Команду", + "Create_New": "Создать", + "Add_Existing": "Добавить существующее", + "Add_Existing_Channel": "Добавить существующий канал", + "Remove_from_Team": "Удалить из Команды", + "Auto-join": "Автодобавление", + "Remove_Team_Room_Warning": "Хотите ли вы удалить этот канал из Команды? Канал будет перемещен обратно в рабочее пространство", + "Confirmation": "Подтверждение", + "invalid-room": "Такого канала не существует", + "You_are_leaving_the_team": "Вы покидаете Команду '{{team}}'", + "Leave_Team": "Покинуть команду", + "Select_Team": "Выберите Команду", + "Select_Team_Channels": "Выберите каналы Команды, которые вы хотите покинуть.", + "Cannot_leave": "Невозможно выйти", + "Cannot_remove": "Невозможно удалить", + "Cannot_delete": "Невозможно удалить", + "Last_owner_team_room": "Вы последний владелец этого чата. Как только вы покинете Команду, чат будет храниться внутри нее, но вы будете управлять ею снаружи.", + "last-owner-can-not-be-removed": "Последний владелец не может быть удален", + "Remove_User_Teams": "Выберите каналы, из которых вы хотите удалить пользователя.", + "Delete_Team": "Удалить Команду", + "Select_channels_to_delete": "Это нельзя отменить. После удаления Команды все содержимое чата и конфигурация будут удалены \n\nВыберите каналы, которые вы хотите удалить. Те, которые вы решите оставить, будут доступны в вашем рабочем пространстве. Обратите внимание, что публичные каналы по-прежнему будут открытыми и видимыми для всех.", + "You_are_deleting_the_team": "Вы удаляете эту Команду.", + "Removing_user_from_this_team": "Вы удаляете {{user}} из этой Команды", + "Remove_User_Team_Channels": "Выберите каналы, из которых вы хотите удалить пользователя.", + "Remove_Member": "Удалить участника", + "leaving_team": "выход из Команды", + "removing_team": "удаление из Команды", + "moving_channel_to_team": "перемещение канала в Команду", + "deleting_team": "удаление Команды", + "member-does-not-exist": "Участник не существует", + "Convert": "Конвертировать", + "Convert_to_Team": "Конвертировать в команду", + "Convert_to_Team_Warning": "Это нельзя отменить. После преобразования канала в Команду, вы не сможете преобразовать его обратно в канал.", + "Move_to_Team": "Перенести в команду", + "Move_Channel_Paragraph": "Перемещение канала внутрь Команды означает, что этот канал будет добавлен в контекст Команды, однако все участники канала, которые не являются членами соответствующей Команды, по-прежнему будут иметь доступ к этому каналу, но не будут добавлены как участники Команды \n\nВсе управление каналом по-прежнему будет осуществляться владельцами этого канала.\n\nЧлены Команды и даже владельцы Команды, если они не являются членами этого канала, не могут иметь доступ к содержимому канала \n\nОбратите внимание, что владелец Команды сможет удалять участников с канала.", + "Move_to_Team_Warning": "После прочтения предыдущих инструкций об этом поведении, вы все еще хотите переместить этот канал в выбранную Команду?", + "Load_More": "Загрузить еще", + "Load_Newer": "Загрузить более позднее", + "Load_Older": "Загрузить более раннее" } \ No newline at end of file diff --git a/app/i18n/locales/tr.json b/app/i18n/locales/tr.json index 4de4c1ecf42..82959de8bcb 100644 --- a/app/i18n/locales/tr.json +++ b/app/i18n/locales/tr.json @@ -290,6 +290,7 @@ "last_message": "son ileti", "Leave_channel": "Kanaldan ayrıl", "leaving_room": "odadan ayrılıyor", + "Leave": "Odadan ayrıl", "leave": "ayrıl", "Legal": "Yasal", "Light": "Açık", @@ -680,12 +681,6 @@ "No_threads_following": "Herhangi bir konuyu takip etmiyorsunuz", "No_threads_unread": "Okunmamış konu yok", "Messagebox_Send_to_channel": "Kanala gönder", - "Set_as_leader": "Lider olarak ayarla", - "Set_as_moderator": "Moderatör olarak ayarla", - "Set_as_owner": "Sahip olarak ayarla", - "Remove_as_leader": "Lider olarak kaldır", - "Remove_as_moderator": "Moderatör olarak kaldır", - "Remove_as_owner": "Sahip olarak kaldır", "Remove_from_room": "Odadan çıkar", "Ignore": "Yok say", "Unignore": "Yok sayma", @@ -703,5 +698,6 @@ "Direct_message": "Özel ileti", "Message_Ignored": "İleti yok sayıldı. Görüntülemek için dokunun.", "Enter_workspace_URL": "Çalışma alanı URL'nizi girin", - "Workspace_URL_Example": "Örn. sirketiniz.rocket.chat" + "Workspace_URL_Example": "Örn. sirketiniz.rocket.chat", + "invalid-room": "Geçersiz oda" } \ No newline at end of file diff --git a/app/i18n/locales/zh-TW.json b/app/i18n/locales/zh-TW.json index dc5748c2729..6f60d155adb 100644 --- a/app/i18n/locales/zh-TW.json +++ b/app/i18n/locales/zh-TW.json @@ -288,6 +288,7 @@ "last_message": "最後一則訊息", "Leave_channel": "離開頻道", "leaving_room": "離開聊天室", + "Leave": "離開", "leave": "離開", "Legal": "合法", "Light": "淺色", @@ -678,5 +679,7 @@ "No_threads": "當前沒有討論串", "No_threads_following": "當前沒有正在追蹤的討論", "No_threads_unread": "當前沒有未讀的討論", - "Messagebox_Send_to_channel": "發送至頻道" + "Messagebox_Send_to_channel": "發送至頻道", + "Confirmation": "確認", + "invalid-room": "無效的房間" } \ No newline at end of file From 7e31ac75f177511163e7af44164bf069450c9614 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 7 Jun 2021 14:27:15 -0300 Subject: [PATCH 147/177] [NEW] Support Google OAuth from external browser (#3134) * Deep linking to the app * Handle deep linking --- app/containers/LoginServices.js | 20 +++++++++++++++----- app/sagas/deepLinking.js | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/containers/LoginServices.js b/app/containers/LoginServices.js index 4ae647b5cea..11d5dd575a5 100644 --- a/app/containers/LoginServices.js +++ b/app/containers/LoginServices.js @@ -1,6 +1,6 @@ import React from 'react'; import { - View, StyleSheet, Text, Animated, Easing + View, StyleSheet, Text, Animated, Easing, Linking } from 'react-native'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; @@ -24,6 +24,9 @@ const SERVICE_HEIGHT = 58; const BORDER_RADIUS = 2; const SERVICES_COLLAPSED_HEIGHT = 174; +const LOGIN_STYPE_POPUP = 'popup'; +const LOGIN_STYPE_REDIRECT = 'redirect'; + const styles = StyleSheet.create({ serviceButton: { borderRadius: BORDER_RADIUS, @@ -122,9 +125,9 @@ class LoginServices extends React.PureComponent { const endpoint = 'https://accounts.google.com/o/oauth2/auth'; const redirect_uri = `${ server }/_oauth/google?close`; const scope = 'email'; - const state = this.getOAuthState(); + const state = this.getOAuthState(LOGIN_STYPE_REDIRECT); const params = `?client_id=${ clientId }&redirect_uri=${ redirect_uri }&scope=${ scope }&state=${ state }&response_type=code`; - this.openOAuth({ url: `${ endpoint }${ params }` }); + Linking.openURL(`${ endpoint }${ params }`); } onPressLinkedin = () => { @@ -219,9 +222,16 @@ class LoginServices extends React.PureComponent { } } - getOAuthState = () => { + getOAuthState = (loginStyle = LOGIN_STYPE_POPUP) => { const credentialToken = random(43); - return Base64.encodeURI(JSON.stringify({ loginStyle: 'popup', credentialToken, isCordova: true })); + let obj = { loginStyle, credentialToken, isCordova: true }; + if (loginStyle === LOGIN_STYPE_REDIRECT) { + obj = { + ...obj, + redirectUrl: 'rocketchat://auth' + }; + } + return Base64.encodeURI(JSON.stringify(obj)); } openOAuth = ({ url, ssoToken, authType = 'oauth' }) => { diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index 985a28556fd..556573a5407 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -16,6 +16,7 @@ import { import { localAuthenticate } from '../utils/localAuthentication'; import { goRoom } from '../utils/goRoom'; import { loginRequest } from '../actions/login'; +import log from '../utils/log'; const roomTypes = { channel: 'c', direct: 'd', group: 'p', channels: 'l' @@ -93,6 +94,15 @@ const fallbackNavigation = function* fallbackNavigation() { yield put(appInit()); }; +const handleOAuth = function* handleOAuth({ params }) { + const { credentialToken, credentialSecret } = params; + try { + yield RocketChat.loginOAuthOrSso({ oauth: { credentialToken, credentialSecret } }); + } catch (e) { + log(e); + } +}; + const handleOpen = function* handleOpen({ params }) { const serversDB = database.servers; const serversCollection = serversDB.get('servers'); @@ -108,6 +118,11 @@ const handleOpen = function* handleOpen({ params }) { }); } + if (params.type === 'oauth') { + yield handleOAuth({ params }); + return; + } + // If there's no host on the deep link params and the app is opened, just call appInit() if (!host) { yield fallbackNavigation(); From ec97d8417fc7edf72a27073dfd399c53f9e6d26d Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 7 Jun 2021 14:27:37 -0300 Subject: [PATCH 148/177] Bump version to 4.17.0 (#3093) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 69975e5d78c..e3da57bb90f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.16.2" + versionName "4.17.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 13f5b8caca5..bbebd2ee7b6 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1694,7 +1694,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.16.2; + MARKETING_VERSION = 4.17.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1731,7 +1731,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.16.2; + MARKETING_VERSION = 4.17.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index e6129268e43..4357a8abb7a 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.16.2</string> + <string>4.17.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 38a2e4cf666..e38798d7361 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.16.2</string> + <string>4.17.0</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 855b1df7312..7e0e5d6da5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.16.2", + "version": "4.17.0", "private": true, "scripts": { "start": "react-native start", From dfe9e4fccb3b769084cc30d16faabf1311a29a60 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 7 Jun 2021 16:08:20 -0300 Subject: [PATCH 149/177] Revert "[IMPROVEMENT] Load team's rooms from local database on team leave (#3185)" (#3194) This reverts commit fa00ef92efa45fef3938afbb92be52b97cb16358. --- app/views/RoomActionsView/index.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 7ed2e1a579c..f055b3649c4 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -436,16 +436,11 @@ class RoomActionsView extends React.Component { const { navigation, leaveRoom } = this.props; try { - const db = database.active; - const subCollection = db.get('subscriptions'); - const rooms = await subCollection.query( - Q.where('team_id', Q.eq(room.teamId)), - Q.where('team_main', Q.notEq(true)) - ); + const result = await RocketChat.teamListRoomsOfUser({ teamId: room.teamId, userId: room.u._id }); - if (rooms.length) { - const teamChannels = rooms.map(r => ({ - rid: r.id, + if (result.rooms?.length) { + const teamChannels = result.rooms.map(r => ({ + rid: r._id, name: r.name, teamId: r.teamId, alert: r.isLastOwner From 267dfc547ef4fdc37dc4e3c2e8fd40210b1b90a5 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Mon, 7 Jun 2021 17:20:07 -0300 Subject: [PATCH 150/177] [FIX] Teams tests (#3196) * Make team_main not optional and fix tests * Undo isOptional and fix query * Comment --- app/lib/database/schema/app.js | 2 +- app/sagas/room.js | 2 ++ app/views/RoomActionsView/index.js | 4 ++-- app/views/RoomInfoEditView/index.js | 2 +- e2e/tests/team/02-team.spec.js | 4 +--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/lib/database/schema/app.js b/app/lib/database/schema/app.js index 883e6dfd96b..ac7b97e78b6 100644 --- a/app/lib/database/schema/app.js +++ b/app/lib/database/schema/app.js @@ -59,7 +59,7 @@ export default appSchema({ { name: 'e2e_key_id', type: 'string', isOptional: true }, { name: 'avatar_etag', type: 'string', isOptional: true }, { name: 'team_id', type: 'string', isIndexed: true }, - { name: 'team_main', type: 'boolean', isOptional: true } + { name: 'team_main', type: 'boolean', isOptional: true } // Use `Q.notEq(true)` to get false or null ] }), tableSchema({ diff --git a/app/sagas/room.js b/app/sagas/room.js index 9789447862a..e17a06da971 100644 --- a/app/sagas/room.js +++ b/app/sagas/room.js @@ -72,6 +72,8 @@ const handleLeaveRoom = function* handleLeaveRoom({ room, roomType, selected }) logEvent(events.RA_LEAVE_F); if (e.data && e.data.errorType === 'error-you-are-last-owner') { Alert.alert(I18n.t('Oops'), I18n.t(e.data.errorType)); + } else if (e?.data?.error === 'last-owner-can-not-be-removed') { + Alert.alert(I18n.t('Oops'), I18n.t(e.data.error)); } else { Alert.alert(I18n.t('Oops'), I18n.t('There_was_an_error_while_action', { action: I18n.t('leaving_room') })); } diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index f055b3649c4..e5c630ebbe1 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -515,7 +515,7 @@ class RoomActionsView extends React.Component { const db = database.active; const subCollection = db.get('subscriptions'); const teamRooms = await subCollection.query( - Q.where('team_main', Q.notEq(null)) + Q.where('team_main', true) ); if (teamRooms.length) { @@ -558,7 +558,7 @@ class RoomActionsView extends React.Component { const teams = await db.collections .get('subscriptions') .query( - Q.where('team_main', Q.notEq(null)), + Q.where('team_main', true), Q.where('name', Q.like(`%${ onChangeText }%`)), Q.experimentalTake(QUERY_SIZE), Q.experimentalSortBy('room_updated_at', Q.desc) diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index 8905e5ee1ec..d5dd7f0c54f 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -326,7 +326,7 @@ class RoomInfoEditView extends React.Component { const subCollection = db.get('subscriptions'); const teamChannels = await subCollection.query( Q.where('team_id', room.teamId), - Q.where('team_main', null) + Q.where('team_main', Q.notEq(true)) ); if (teamChannels.length) { diff --git a/e2e/tests/team/02-team.spec.js b/e2e/tests/team/02-team.spec.js index f6f4d032946..b10fc820673 100644 --- a/e2e/tests/team/02-team.spec.js +++ b/e2e/tests/team/02-team.spec.js @@ -286,9 +286,7 @@ describe('Team', () => { await element(by.text('OK')).tap(); await waitFor(element(by.id('select-list-view-submit'))).toExist().withTimeout(2000); await element(by.id('select-list-view-submit')).tap(); - await waitFor(element(by.text(`You were removed from ${ team }`))).toExist().withTimeout(8000); - await element(by.text('OK')).tap(); - await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); + await waitFor(element(by.id(`rooms-list-view-item-${ team }`))).toBeNotVisible().withTimeout(60000); }); }); }); From 2d4bfa51f821e5e41aaed6aba5a6fa09aa00a12c Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 10 Jun 2021 14:06:03 -0300 Subject: [PATCH 151/177] [FIX] Wrong system messages being passed as parameters to room save (#3197) --- app/utils/messageTypes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/utils/messageTypes.js b/app/utils/messageTypes.js index f874a437a84..eacd2c514ef 100644 --- a/app/utils/messageTypes.js +++ b/app/utils/messageTypes.js @@ -27,10 +27,10 @@ export const MessageTypeValues = [ value: 'rm', text: 'Message_HideType_rm' }, { - value: 'subscription_role_added', + value: 'subscription-role-added', text: 'Message_HideType_subscription_role_added' }, { - value: 'subscription_role_removed', + value: 'subscription-role-removed', text: 'Message_HideType_subscription_role_removed' }, { value: 'room_archived', From 86ca76194dc1fdc77e99a29713c8ee1fb17d2539 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 10 Jun 2021 14:11:05 -0300 Subject: [PATCH 152/177] [FIX] RoomItem's long press crashing the app if prop is missing (#3199) * Check onLongPress prop * Add Touch stories --- .../__snapshots__/Storyshots.test.js.snap | 398 ++++++++++++++++++ app/presentation/RoomItem/index.js | 4 +- storybook/stories/RoomItem.js | 3 + 3 files changed, 404 insertions(+), 1 deletion(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 52fa5d01d5d..3e3106d94dd 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -59100,6 +59100,404 @@ exports[`Storyshots Room Item Tag 1`] = ` </RCTScrollView> `; +exports[`Storyshots Room Item Touch 1`] = ` +<RCTScrollView + style={ + Object { + "backgroundColor": "#ffffff", + } + } +> + <View> + <View> + <View> + <View + pointerEvents="box-none" + style={ + Array [ + Object { + "height": 150, + "left": 0, + "position": "absolute", + "right": 0, + }, + undefined, + ] + } + > + <View + style={ + Object { + "backgroundColor": "#1d74f5", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 670, + "top": 0, + "transform": Array [ + Object { + "translateX": -80, + }, + ], + "width": 750, + } + } + > + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "white", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Read + </Text> + </View> + </View> + </View> + <View + pointerEvents="box-none" + style={ + Object { + "flexDirection": "row", + "height": 75, + "left": 0, + "position": "absolute", + "right": 0, + } + } + > + <View + style={ + Object { + "backgroundColor": "#54585e", + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Favorite + </Text> + </View> + <View + style={ + Object { + "height": 150, + "justifyContent": "center", + "position": "absolute", + "top": 0, + "transform": Array [ + Object { + "translateX": 750, + }, + ], + "width": 750, + } + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#ffffff", + "fontSize": 20, + }, + undefined, + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + style={ + Array [ + Object { + "backgroundColor": "transparent", + "fontFamily": "System", + "fontSize": 15, + "fontWeight": "600", + "justifyContent": "center", + "marginTop": 4, + "textAlign": "left", + }, + Object { + "color": "#ffffff", + }, + ] + } + > + Hide + </Text> + </View> + </View> + <View + style={ + Object { + "transform": Array [ + Object { + "translateX": 0, + }, + ], + } + } + > + <View + style={ + Object { + "alignItems": "center", + "flexDirection": "row", + "height": 150, + "paddingLeft": 14, + } + } + > + <View + style={ + Array [ + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + Object { + "marginRight": 10, + }, + ] + } + > + <View + style={ + Array [ + Object { + "overflow": "hidden", + }, + Object { + "borderRadius": 4, + "height": 48, + "width": 48, + }, + ] + } + > + <FastImageView + resizeMode="cover" + source={ + Object { + "headers": undefined, + "priority": "high", + "uri": "https://open.rocket.chat/avatar/rocket.cat?format=png&size=48", + } + } + style={ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </View> + </View> + <View + style={ + Array [ + Object { + "borderBottomWidth": 0.5, + "flex": 1, + "paddingRight": 14, + "paddingVertical": 10, + }, + Object { + "borderColor": "#cbcbcc", + }, + ] + } + > + <View + style={ + Array [ + Object { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "center", + "width": "100%", + }, + Object { + "flex": 1, + }, + ] + } + > + <Text + allowFontScaling={false} + style={ + Array [ + Object { + "color": "#cbced1", + "fontSize": 16, + }, + Array [ + Object { + "height": 16, + "textAlignVertical": "center", + "width": 16, + }, + Array [ + Array [ + Object { + "marginRight": 4, + }, + Object { + "color": "#0d0e12", + }, + undefined, + ], + Object { + "color": "#cbced1", + }, + ], + ], + Object { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + Object {}, + ] + } + > +  + </Text> + <Text + ellipsizeMode="tail" + numberOfLines={1} + style={ + Array [ + Object { + "backgroundColor": "transparent", + "flex": 1, + "fontFamily": "System", + "fontSize": 17, + "fontWeight": "500", + "lineHeight": 20, + "textAlign": "left", + }, + undefined, + Object { + "color": "#0d0e12", + }, + ] + } + > + rocket.cat + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> +</RCTScrollView> +`; + exports[`Storyshots Room Item Type 1`] = ` <RCTScrollView style={ diff --git a/app/presentation/RoomItem/index.js b/app/presentation/RoomItem/index.js index d56194f8bd5..0b64437c6a8 100644 --- a/app/presentation/RoomItem/index.js +++ b/app/presentation/RoomItem/index.js @@ -117,7 +117,9 @@ class RoomItemContainer extends React.Component { onLongPress = () => { const { item, onLongPress } = this.props; - return onLongPress(item); + if (onLongPress) { + return onLongPress(item); + } } render() { diff --git a/storybook/stories/RoomItem.js b/storybook/stories/RoomItem.js index 025fbf7f534..c13eaa4d2cd 100644 --- a/storybook/stories/RoomItem.js +++ b/storybook/stories/RoomItem.js @@ -44,6 +44,9 @@ stories.add('Basic', () => ( <RoomItem /> )); +stories.add('Touch', () => ( + <RoomItem onPress={() => alert('on press')} onLongPress={() => alert('on long press')} /> +)); stories.add('User', () => ( <> From 303c26f71669c8f7e0e7e723716f4e4a0fe71cfe Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 10 Jun 2021 14:32:35 -0300 Subject: [PATCH 153/177] [FIX] Crashing on link press (#3204) --- app/containers/markdown/Link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/containers/markdown/Link.js b/app/containers/markdown/Link.js index 054b3d4d9e2..008dc0ba83d 100644 --- a/app/containers/markdown/Link.js +++ b/app/containers/markdown/Link.js @@ -12,7 +12,7 @@ const Link = React.memo(({ children, link, theme, onLinkPress }) => { const handlePress = () => { - if (!link) { + if (!link || !onLinkPress) { return; } onLinkPress(link); From 3177bc3e58cd30d6a3b9c33905eb01fc069ba29c Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 10 Jun 2021 14:52:00 -0300 Subject: [PATCH 154/177] [FIX] Don't show Block Button inside Group DM Actions (#3195) * [FIX] Don't show Block Button inside Group DM Actions * Use RocketChat.isGroupChat instead of simple if condition * Add return Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/views/RoomActionsView/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index e5c630ebbe1..d16ea57688e 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -714,7 +714,7 @@ class RoomActionsView extends React.Component { return null; } - if (t === 'd') { + if (t === 'd' && !RocketChat.isGroupChat(room)) { return ( <List.Section> <List.Separator /> @@ -751,6 +751,8 @@ class RoomActionsView extends React.Component { </List.Section> ); } + + return null; } teamChannelActions = (t, room) => { From c744672cbf8b61d2817d964d4026b026bcbf2f55 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 11 Jun 2021 15:23:43 -0300 Subject: [PATCH 155/177] [TEST] Fixed E2E tests (#3201) * [FIX] Test E2E i18n * 01-createroom and 02-room fixed * 03-roomactions and 04-discussions * 05-threads and 07-markasunread from room * Test 07-markasunread * Set notifications 'YES' and delete true in 03-forgotpassword and 04-createuser * Fixed the data that 02-team uses and changed the message in 07-markasunread * Added group.alternate to data.docker and commented the test for the fallback language Co-authored-by: Diego Mello <diegolmello@gmail.com> --- e2e/data.js | 3 +++ e2e/data/data.docker.js | 3 +++ e2e/tests/assorted/12-i18n.spec.js | 24 +++++++++---------- .../onboarding/03-forgotpassword.spec.js | 2 +- e2e/tests/onboarding/04-createuser.spec.js | 2 +- e2e/tests/room/01-createroom.spec.js | 4 ++-- e2e/tests/room/02-room.spec.js | 4 ++-- e2e/tests/room/03-roomactions.spec.js | 10 ++++---- e2e/tests/room/04-discussion.spec.js | 4 ++-- e2e/tests/room/05-threads.spec.js | 2 +- e2e/tests/room/07-markasunread.spec.js | 10 ++++---- e2e/tests/team/02-team.spec.js | 4 ++-- 12 files changed, 39 insertions(+), 33 deletions(-) diff --git a/e2e/data.js b/e2e/data.js index c69b72515bd..98257f71d76 100644 --- a/e2e/data.js +++ b/e2e/data.js @@ -40,6 +40,9 @@ const data = { groups: { private: { name: `detox-private-${ value }` + }, + alternate: { + name: `detox-alternate-${ value }` } }, teams: { diff --git a/e2e/data/data.docker.js b/e2e/data/data.docker.js index 1a6bb156997..31fb5c8e27d 100644 --- a/e2e/data/data.docker.js +++ b/e2e/data/data.docker.js @@ -40,6 +40,9 @@ const data = { groups: { private: { name: `detox-private-${ value }` + }, + alternate: { + name: `detox-alternate-${ value }` } }, teams: { diff --git a/e2e/tests/assorted/12-i18n.spec.js b/e2e/tests/assorted/12-i18n.spec.js index 13e7c79bebe..51273fd7268 100644 --- a/e2e/tests/assorted/12-i18n.spec.js +++ b/e2e/tests/assorted/12-i18n.spec.js @@ -52,18 +52,18 @@ describe('i18n', () => { * This test might become outdated as soon as we support the language * Although this seems to be a bad approach, that's the intention for having fallback enabled */ - it('OS set to available language and fallback to \'en\' on strings missing translation', async() => { - await device.launchApp({ - ...defaultLaunchArgs, - languageAndLocale: { - language: "nl", - locale: "nl" - } - }); - await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); - await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); // Missing nl translation - await expect(element(by.id('create-workspace-button').and(by.label('Een nieuwe workspace maken')))).toBeVisible(); - }); + // it('OS set to available language and fallback to \'en\' on strings missing translation', async() => { + // await device.launchApp({ + // ...defaultLaunchArgs, + // languageAndLocale: { + // language: "nl", + // locale: "nl" + // } + // }); + // await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); + // await expect(element(by.id('join-workspace').and(by.label('Word lid van een werkruimte')))).toBeVisible(); + // await expect(element(by.id('create-workspace-button').and(by.label('Een nieuwe werkruimte aanmaken')))).toBeVisible(); + // }); }); describe('Rocket.Chat language', () => { diff --git a/e2e/tests/onboarding/03-forgotpassword.spec.js b/e2e/tests/onboarding/03-forgotpassword.spec.js index 8b7fe9b5a86..03afe59250b 100644 --- a/e2e/tests/onboarding/03-forgotpassword.spec.js +++ b/e2e/tests/onboarding/03-forgotpassword.spec.js @@ -6,7 +6,7 @@ const { navigateToLogin } = require('../../helpers/app'); describe('Forgot password screen', () => { before(async() => { - await device.launchApp({ newInstance: true }); + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); await element(by.id('login-view-forgot-password')).tap(); await waitFor(element(by.id('forgot-password-view'))).toExist().withTimeout(2000); diff --git a/e2e/tests/onboarding/04-createuser.spec.js b/e2e/tests/onboarding/04-createuser.spec.js index aa75807f2c5..cf706d78bf8 100644 --- a/e2e/tests/onboarding/04-createuser.spec.js +++ b/e2e/tests/onboarding/04-createuser.spec.js @@ -6,7 +6,7 @@ const data = require('../../data'); describe('Create user screen', () => { before(async() => { - await device.launchApp({ newInstance: true }); + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToRegister(); }); diff --git a/e2e/tests/room/01-createroom.spec.js b/e2e/tests/room/01-createroom.spec.js index 5e7ae2ca564..874255e4386 100644 --- a/e2e/tests/room/01-createroom.spec.js +++ b/e2e/tests/room/01-createroom.spec.js @@ -96,8 +96,8 @@ describe('Create room screen', () => { it('should get invalid room', async() => { await element(by.id('create-channel-name')).typeText('general'); await element(by.id('create-channel-submit')).tap(); - await waitFor(element(by.text(`A channel with name 'general' exists`))).toExist().withTimeout(60000); - await expect(element(by.text(`A channel with name 'general' exists`))).toExist(); + await waitFor(element(by.text(`A channel with name general exists`))).toExist().withTimeout(60000); + await expect(element(by.text(`A channel with name general exists`))).toExist(); await element(by.text('OK')).tap(); }); diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index 02d87496380..d6a374185e6 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -191,7 +191,7 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'slow', 0.5); - await waitFor(element(by.label('Unstar')).atIndex(0)).toBeVisible().withTimeout(6000); + await waitFor(element(by.label('Unstar')).atIndex(0)).toExist().withTimeout(6000); await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8); }); @@ -272,7 +272,7 @@ describe('Room screen', () => { await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(1000); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await waitFor(element(by.label('Unpin'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.label('Unpin')).atIndex(0)).toExist().withTimeout(2000); await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.8); }); diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index 20423570530..ecbac2233b5 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -385,7 +385,7 @@ describe('Room actions screen', () => { it('should remove user from room', async() => { await openActionSheet('rocket.cat'); - await element(by.label('Remove from room')).tap(); + await element(by.label('Remove from room')).atIndex(0).tap(); await waitFor(element(by.label('Are you sure?'))).toExist().withTimeout(5000); await element(by.label('Yes, remove user!').and(by.type('_UIAlertControllerActionView'))).tap(); await waitFor(element(by.id('room-members-view-item-rocket.cat'))).toBeNotVisible().withTimeout(60000); @@ -456,13 +456,13 @@ describe('Room actions screen', () => { it('should set/remove as mute', async() => { await openActionSheet(user.username); - await element(by.label('Mute')).tap(); + await element(by.label('Mute')).atIndex(0).tap(); await waitFor(element(by.label('Are you sure?'))).toExist().withTimeout(5000); await element(by.label('Mute').and(by.type('_UIAlertControllerActionView'))).tap(); await waitForToast(); await openActionSheet(user.username); - await element(by.label('Unmute')).tap(); + await element(by.label('Unmute')).atIndex(0).tap(); await waitFor(element(by.label('Are you sure?'))).toExist().withTimeout(5000); await element(by.label('Unmute').and(by.type('_UIAlertControllerActionView'))).tap(); await waitForToast(); @@ -478,7 +478,7 @@ describe('Room actions screen', () => { const channelName = `#${ data.groups.private.name }`; await sendMessage(user, channelName, message); await openActionSheet(user.username); - await element(by.label('Ignore')).tap(); + await element(by.label('Ignore')).atIndex(0).tap(); await waitForToast(); await backToActions(); await tapBack(); @@ -497,7 +497,7 @@ describe('Room actions screen', () => { await element(by.id('room-members-view-toggle-status')).tap(); await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); await openActionSheet(user.username); - await element(by.label('Direct message')).tap(); + await element(by.label('Direct message')).atIndex(0).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(60000); await waitFor(element(by.id(`room-view-title-${ user.username }`))).toExist().withTimeout(60000); await tapBack(); diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js index fccc9618540..aa39f2eafbc 100644 --- a/e2e/tests/room/04-discussion.spec.js +++ b/e2e/tests/room/04-discussion.spec.js @@ -23,7 +23,7 @@ describe('Discussion', () => { const discussionName = `${data.random} Discussion NewMessageView`; await element(by.id('rooms-list-view-create-channel')).tap(); await waitFor(element(by.id('new-message-view'))).toExist().withTimeout(2000); - await element(by.label('Create Discussion')).tap(); + await element(by.label('Create Discussion')).atIndex(0).tap(); await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(60000); await expect(element(by.id('create-discussion-view'))).toExist(); await element(by.label('Select a Channel...')).tap(); @@ -44,7 +44,7 @@ describe('Discussion', () => { await navigateToRoom(); await element(by.id('messagebox-actions')).tap(); await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(2000); - await element(by.label('Create Discussion')).tap(); + await element(by.label('Create Discussion')).atIndex(0).tap(); await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(2000); await element(by.id('multi-select-discussion-name')).replaceText(discussionName); await waitFor(element(by.id(`create-discussion-submit`))).toExist().withTimeout(10000); diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js index 40652df7d55..381fa2b07a2 100644 --- a/e2e/tests/room/05-threads.spec.js +++ b/e2e/tests/room/05-threads.spec.js @@ -72,7 +72,7 @@ describe('Threads', () => { await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Reply in Thread')).tap(); + await element(by.label('Reply in Thread')).atIndex(0).tap(); await element(by.id('messagebox-input')).typeText('replied'); await element(by.id('messagebox-send-message')).tap(); await waitFor(element(by.id(`message-thread-button-${ thread }`))).toExist().withTimeout(5000); diff --git a/e2e/tests/room/07-markasunread.spec.js b/e2e/tests/room/07-markasunread.spec.js index dcbc503676a..383f49a7b9a 100644 --- a/e2e/tests/room/07-markasunread.spec.js +++ b/e2e/tests/room/07-markasunread.spec.js @@ -2,7 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, searchRoom } = require('../../helpers/app'); +const { navigateToLogin, login, searchRoom, sleep } = require('../../helpers/app'); const { sendMessage } = require('../../helpers/data_setup') async function navigateToRoom(user) { @@ -25,15 +25,15 @@ describe('Mark as unread', () => { describe('Usage', async() => { describe('Mark message as unread', async() => { it('should mark message as unread', async() => { - const message = `${ data.random }message`; + const message = `${ data.random }message-mark-as-unread`; const channelName = `@${ data.users.regular.username }`; await sendMessage(data.users.alternate, channelName, message); await waitFor(element(by.label(message)).atIndex(0)).toExist().withTimeout(30000); + await sleep(300); await element(by.label(message)).atIndex(0).longPress(); - await expect(element(by.id('action-sheet'))).toExist(); - await expect(element(by.id('action-sheet-handle'))).toBeVisible(); + await waitFor(element(by.id('action-sheet-handle'))).toBeVisible().withTimeout(3000); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Mark Unread')).tap(); + await element(by.label('Mark Unread')).atIndex(0).tap(); await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); await expect(element(by.id(`rooms-list-view-item-${data.users.alternate.username}`))).toExist(); }); diff --git a/e2e/tests/team/02-team.spec.js b/e2e/tests/team/02-team.spec.js index b10fc820673..f9b8195957e 100644 --- a/e2e/tests/team/02-team.spec.js +++ b/e2e/tests/team/02-team.spec.js @@ -39,8 +39,8 @@ async function waitForToast() { describe('Team', () => { const team = data.teams.private.name; const user = data.users.alternate; - const room = `private${ data.random }`; - const existingRoom = data.groups.private.name; + const room = `private${ data.random }-channel-team`; + const existingRoom = data.groups.alternate.name; before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); From a6ded9546b9d22b3fd4bf390f8acb87cdc41f6ba Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Tue, 22 Jun 2021 15:41:55 -0400 Subject: [PATCH 156/177] [TEST] E2E for Jump to Message (#3202) * E2E tests for jump to message * Fix thread tests * Remove unnecessary function and uncomment tests * Minor tweak * Fix tests and minor tweaks * Minor tweaks * Update docker data * Fix docker * Fix duplicated testid * Minor refactor * Fix jump to old message test * Fix load on scroll * Add fab test * Minor addition * stash * almost there * Final changes Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/Loading.js | 2 +- app/views/RoomView/List/NavBottomFAB.js | 2 +- app/views/SidebarView/index.js | 2 +- .../rocketchat_message.js | 337 +++++++++++++++++- .../rocketchat_room.js | 4 +- .../rocketchat_settings.js | 2 +- .../rocketchat_subscription.js | 4 +- e2e/tests/room/09-jumptomessage.spec.js | 154 ++++++++ 8 files changed, 500 insertions(+), 7 deletions(-) create mode 100644 e2e/tests/room/09-jumptomessage.spec.js diff --git a/app/containers/Loading.js b/app/containers/Loading.js index 03561a8fdea..656e476af88 100644 --- a/app/containers/Loading.js +++ b/app/containers/Loading.js @@ -103,7 +103,7 @@ export default class Loading extends React.PureComponent { transparent onRequestClose={() => {}} > - <View style={styles.container}> + <View style={styles.container} testID='loading'> <Animated.Image source={require('../static/images/logo.png')} style={[styles.image, { diff --git a/app/views/RoomView/List/NavBottomFAB.js b/app/views/RoomView/List/NavBottomFAB.js index 5c5aee746a1..481ac79a63d 100644 --- a/app/views/RoomView/List/NavBottomFAB.js +++ b/app/views/RoomView/List/NavBottomFAB.js @@ -52,7 +52,7 @@ const NavBottomFAB = ({ y, onPress, isThread }) => { bottom += SEND_TO_CHANNEL_HEIGHT; } return ( - <Animated.View style={[styles.container, { bottom }]}> + <Animated.View style={[styles.container, { bottom }]} testID='nav-jump-to-bottom'> <Touch onPress={handleOnPress} theme={theme} diff --git a/app/views/SidebarView/index.js b/app/views/SidebarView/index.js index fd9d9bcc964..5bb465fd0d0 100644 --- a/app/views/SidebarView/index.js +++ b/app/views/SidebarView/index.js @@ -154,7 +154,7 @@ class Sidebar extends Component { text={I18n.t('Admin_Panel')} left={<CustomIcon name='settings' size={20} color={themes[theme].titleText} />} onPress={() => this.sidebarNavigate(routeName)} - testID='sidebar-settings' + testID='sidebar-admin' current={this.currentItemKey === routeName} /> </> diff --git a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_message.js b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_message.js index 407e7a93a72..a553fcfe5af 100644 --- a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_message.js +++ b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_message.js @@ -1 +1,336 @@ -db.getCollection("rocketchat_message").insert({"_id":"fsy2dZJgmmboowJ8N","t":"uj","rid":"GENERAL","ts":new Date(1584022608462),"msg":"admin","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"groupable":false,"_updatedAt":new Date(1584022608462)}); +db.getCollection("rocketchat_message").insert({"_id":"25g4bk7cQTqeyW9xX","alias":"","msg":"269","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:44.857Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:44.877Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"269"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"27T4qRvruK3gEjecs","alias":"","msg":"65","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:26.854Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:26.877Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"65"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"28TThiTu5Zg8wQY9v","alias":"","msg":"140","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:56.012Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:56.077Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"140"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"2DgDaqyxjmY4svGae","alias":"","msg":"6","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:06.180Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:06.216Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"6"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"2SFwgauKjRMRR7xAw","alias":"","msg":"69","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:28.291Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:28.313Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"69"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"3G7XJ6EEy3vQdBQeh","alias":"","msg":"14","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:09.074Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:09.095Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"14"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"3T5juo5b4Co7uApwW","alias":"","msg":"277","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:47.697Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:47.749Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"277"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"3bMfuSmJ3iunG2kWG","alias":"","msg":"156","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:02.432Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:02.450Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"156"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4AcYis8t69TC9hxJp","alias":"","msg":"7","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:06.556Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:06.581Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"7"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4FiDijAfM3ANmQrkz","alias":"","msg":"141","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:56.415Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:56.436Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"141"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4S9c9YvEogNtfNH4c","alias":"","msg":"119","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:46.073Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:46.091Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"119"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4SzoQmu5hrY4a3M33","alias":"","msg":"252","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:38.832Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:38.859Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"252"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4fmsF37sxqF3LaKg8","alias":"","msg":"158","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:03.277Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:03.310Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"158"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4jZn8QgT2zggqpbtK","alias":"","msg":"230","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:30.893Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:30.929Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"230"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"4mGv8Pz8o4CDdN2oC","alias":"","msg":"264","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:43.105Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:43.131Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"264"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"5JuWjrs4ZgYa3CXxk","alias":"","msg":"49","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:21.227Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:21.244Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"49"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"5W9TAvaKJQfoFnftA","alias":"","msg":"37","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:17.145Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:17.159Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"37"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"5bqiprtBR4RAxWAcL","alias":"","msg":"43","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:19.185Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:19.198Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"43"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"5nCCCn7KHyca899Lj","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"23","ts":new Date("2021-06-14T21:27:07.177Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:07.273Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"23"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"6HicGvqNRy6dsDehP","alias":"","msg":"240","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:34.481Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:34.519Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"240"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"6oNMwTjCXmcXTWeLj","alias":"","msg":"279","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:48.701Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:48.797Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"279"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"6tHmYHoJAZqKSP7uw","alias":"","msg":"176","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:10.472Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:10.490Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"176"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"7QNXvEFxMPLDtemuA","alias":"","msg":"223","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:28.287Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:28.311Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"223"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"7f3WTwk9pZkbjDrZG","alias":"","msg":"52","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:22.277Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:22.290Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"52"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"7gkmpM68YanWe3JP2","alias":"","msg":"287","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:51.637Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:51.660Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"287"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"7mSpBnb8Bdt2aZoWL","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"19","ts":new Date("2021-06-14T21:27:02.653Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:02.754Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"19"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"7r8wpE8yzyiZEgpcw","alias":"","msg":"28","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:14.018Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:14.042Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"28"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"8KnWQxmRM5NGYt97J","alias":"","msg":"33","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:15.789Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:15.808Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"33"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"8vPWvDmtXEzEFwg4d","alias":"","msg":"96","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:37.960Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:37.980Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"96"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9DR7WEyTEAR6ExK4n","alias":"","msg":"19","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:10.849Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:10.868Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"19"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9FSFRTmi68FXt8xdT","alias":"","msg":"185","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:14.428Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:14.457Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"185"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9Nc4sS2DozyAiH8is","alias":"","msg":"13","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:08.724Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:08.740Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"13"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9R36G3Pe8yhFxWzar","alias":"","msg":"3","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:25:53.009Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:25:53.045Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"3"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9S5QEDoXxXZbf9Fsw","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"15","ts":new Date("2021-06-14T21:26:57.249Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:57.352Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"15"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9TXDBQRA375tcDAJG","alias":"","msg":"108","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:42.213Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:42.225Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"108"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9WvB32ZFdk7v7yrNb","alias":"","msg":"53","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:22.619Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:22.646Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"53"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9x8puw8kLeqXxajNW","alias":"","msg":"293","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:53.759Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:53.787Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"293"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"9xfhY2uCdwbGALd49","alias":"","msg":"91","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:36.152Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:36.169Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"91"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"AmnEoreNR26FcXbnh","alias":"","msg":"130","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:51.034Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:51.171Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"130"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ApW3E6fzGtuQLfvSX","alias":"","msg":"282","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:49.845Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:49.862Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"282"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"AqMwxaxRzT5neeEfe","alias":"","msg":"187","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:15.298Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:15.331Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"187"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"BE8zexooqkDwuKcu4","alias":"","msg":"56","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:23.666Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:23.691Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"56"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"BFMr3FJ9NNLP5wESf","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"27","ts":new Date("2021-06-14T21:27:11.827Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:11.887Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"27"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"BXRu9xh39qwHnEXka","alias":"","msg":"94","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:37.229Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:37.275Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"94"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Bs8ReZaE4SiwXH49J","alias":"","msg":"300","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:56.256Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:56.274Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"300"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Bsb2nDT8oPwFvj9gN","alias":"","msg":"217","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:26.154Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:26.179Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"217"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"BvrzmaZKFccyhkrf3","alias":"","msg":"296","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:54.842Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:54.879Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"296"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"C89pRcerYNnApXwKZ","rid":"GFR2xxircSsyJxx9F","msg":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs Go to a thread from another room","ts":new Date("2021-06-14T21:28:09.973Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:28:10.019Z"),"attachments":[{"text":"Go to jumping-thread's thread","author_name":"admin","author_icon":"/avatar/admin","message_link":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs","attachments":[],"ts":new Date("2021-06-14T21:26:48.151Z")}],"urls":[{"url":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs","ignoreParse":true}],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"LINK","value":{"src":{"type":"PLAIN_TEXT","value":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs"},"label":{"type":"PLAIN_TEXT","value":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs"}}},{"type":"PLAIN_TEXT","value":" Go to a thread from another room"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"CRefYtg5f6n2oZhJx","alias":"","msg":"274","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:46.586Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:46.637Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"274"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"CpMDo5fbb9Np54Xr7","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"30","ts":new Date("2021-06-14T21:27:14.710Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:14.781Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"30"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"CwHLm3reBwwttySP4","alias":"","msg":"117","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:45.367Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:45.387Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"117"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"D7kQQ9vtmq7LfJdFk","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"18","ts":new Date("2021-06-14T21:27:01.154Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:01.218Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"18"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"DR2ZakcJvyi3BTJLR","alias":"","msg":"54","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:22.975Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:22.992Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"54"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"DRAftv7fhYwBSF98P","alias":"","msg":"24","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:12.620Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:12.640Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"24"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"DuShMW4P9kiXnzMr4","alias":"","msg":"239","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:34.091Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:34.112Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"239"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"DvKX5qbzg8CWE3oNC","alias":"","msg":"1","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:24:50.182Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:24:50.225Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"1"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"DyAyQRLtPHqKwRYZb","alias":"","msg":"235","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:32.703Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:32.719Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"235"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"E5ntzuwrjmcGiyQFd","alias":"","msg":"299","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:55.903Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:55.925Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"299"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"EamwALjFX46fhnDC6","alias":"","msg":"268","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:44.506Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:44.520Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"268"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"EiMDrXBS86EqZGZhs","alias":"","msg":"234","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:32.356Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:32.376Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"234"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"EvEcMv66r75xb8FjX","alias":"","msg":"266","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:43.803Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:43.823Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"266"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FAzwPcfoLftoNXBLQ","alias":"","msg":"257","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:40.641Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:40.661Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"257"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FHdJd7cStGBRp6cRv","alias":"","msg":"215","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:25.459Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:25.478Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"215"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FKR35Rpc8zFnMAmSg","alias":"","msg":"160","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:04.127Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:04.167Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"160"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FKT9KKE4u8gW2jpSL","alias":"","msg":"281","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:49.486Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:49.509Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"281"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FLtBpqa6bPBqSYPMA","alias":"","msg":"100","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:39.373Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:39.392Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"100"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FcTYu6fzMbb28M75G","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"24","ts":new Date("2021-06-14T21:27:08.255Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:08.360Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"24"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"FhcwPfvAtFQ5D8MYQ","alias":"","msg":"22","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:11.904Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:11.922Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"22"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"G7zgSoyJuWhax8P3x","alias":"","msg":"95","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:37.608Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:37.628Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"95"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GBzrEAwBbEPPXD3M9","alias":"","msg":"74","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:30.074Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:30.091Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"74"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GEWmTKitDazAuaz6h","alias":"","msg":"86","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:34.353Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:34.369Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"86"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GJ4jWiCxgcJMapHTY","alias":"","msg":"61","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:25.432Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:25.457Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"61"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GKHJ9YE9P7CcpdzPZ","alias":"","msg":"213","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:24.750Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:24.766Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"213"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GXBzQmJ8FcBoC3gtP","alias":"","msg":"137","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:54.514Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:54.776Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"137"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GmEYWjr2Cxg59Cdy6","alias":"","msg":"275","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:46.972Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:46.993Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"275"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"GswMnTC73YmpAopoB","alias":"","msg":"165","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:06.067Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:06.088Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"165"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"H2Y7vC4CYLZHzrQCQ","alias":"","msg":"265","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:43.461Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:43.476Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"265"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"H2qrRsJ7B5iQb3nYa","alias":"","msg":"189","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:16.042Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:16.082Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"189"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"HEjouKohtxTSr4vYE","alias":"","msg":"232","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:31.648Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:31.668Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"232"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"HMe5BrNi5PYH4ydur","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"11","ts":new Date("2021-06-14T21:26:54.204Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:54.376Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"11"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"HP2vqtXk7H2kgopxM","alias":"","msg":"237","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:33.393Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:33.408Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"237"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"HZDTBZWzTtZG2wPYj","alias":"","msg":"162","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:04.922Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:05.009Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"162"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"HkveojpNbg6rkWrqJ","alias":"","msg":"284","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:50.555Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:50.573Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"284"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"HnZLZeDDsgF858kRx","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"9","ts":new Date("2021-06-14T21:26:52.386Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:52.531Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"9"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Hyt6k5bYadfc9sKJW","alias":"","msg":"89","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:35.380Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:35.400Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"89"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"J49cDnpaGPvuzf5s6","alias":"","msg":"124","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:47.930Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:47.947Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"124"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"J5ae5apoN8LZFyXiW","alias":"","msg":"199","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:19.666Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:19.685Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"199"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"J8jTENXHvWn4DCgcq","alias":"","msg":"88","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:35.036Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:35.050Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"88"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"JTQ4hu7SXXW24gRG9","alias":"","msg":"283","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:50.193Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:50.223Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"283"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"JZsxce8XjmNihE7AY","alias":"","msg":"168","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:07.339Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:07.432Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"168"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"K3twE3RhK3bskvP88","alias":"","msg":"258","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:40.989Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:41.008Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"258"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"K5tSCpctfdcB3Po9S","alias":"","msg":"63","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:26.138Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:26.168Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"63"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"KAZ24unKt2SzLiTwn","alias":"","msg":"34","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:16.140Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:16.160Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"34"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"KCGD75Dzg9sneF3yo","alias":"","msg":"29","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:14.372Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:14.395Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"29"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"KH2djT7TBQfnZtXzf","rid":"5iyMRT843rNn4wwHv","msg":"thread 2","ts":new Date("2021-06-14T21:26:44.015Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:44.085Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"thread 2"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"KZzFpygiB2sWXp7hd","alias":"","msg":"188","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:15.676Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:15.702Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"188"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"KuqHjst7QmS4s8qYX","alias":"","msg":"15","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:09.425Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:09.445Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"15"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"L2S3YC4AfW4SQaybC","alias":"","msg":"196","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:18.574Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:18.597Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"196"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"L4GFcEyoia8E9kkLb","alias":"","msg":"253","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:39.187Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:39.204Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"253"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"L8K2rLSpBbN3QQrXq","alias":"","msg":"38","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:17.484Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:17.498Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"38"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"LH6qPBWWfhotNdvW6","alias":"","msg":"194","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:17.860Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:17.886Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"194"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"LJudSHZjgvj3PYwPW","alias":"","msg":"229","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:30.535Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:30.556Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"229"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"LLQXCB4WnyHNwJRK4","alias":"","msg":"145","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:58.133Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:58.159Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"145"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"LLiby3sDRkQNKjG5w","alias":"","msg":"198","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:19.306Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:19.332Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"198"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"LQKgYipeHNG9wERPP","alias":"","msg":"2","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:25:52.639Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:25:52.672Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"2"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Lnpro7sThoN89jGbo","alias":"","msg":"8","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:06.915Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:06.936Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"8"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"LwAqBPzLDJmaRnSmr","alias":"","msg":"139","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:55.592Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:55.656Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"139"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"M6xT2Lxh7tFvARmRS","alias":"","msg":"236","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:33.048Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:33.064Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"236"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"MMYNkEdFcb42hwrob","alias":"","msg":"102","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:40.065Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:40.081Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"102"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"MbgeBDDrSfztwgFT3","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"10","ts":new Date("2021-06-14T21:26:53.404Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:53.517Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"10"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Mg4dY3XbRuokCL4mA","alias":"","msg":"111","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:43.254Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:43.282Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"111"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Mmxr3AgSkc9ZeCqfc","alias":"","msg":"180","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:12.402Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:12.438Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"180"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"MzTnyD7bHLQpDaDkt","alias":"","msg":"90","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:35.784Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:35.818Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"90"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"N6ADgwTr3cAkfAYr6","alias":"","msg":"173","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:09.323Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:09.397Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"173"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"NAXDFHoxA44rsyujh","rid":"5iyMRT843rNn4wwHv","msg":"thread 1","ts":new Date("2021-06-14T21:26:41.349Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:14.845Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"thread 1"}]}],"replies":["nM6vXyDLGGzSPsLNy"],"tcount":30,"tlm":new Date("2021-06-14T21:27:14.710Z")}); +db.getCollection("rocketchat_message").insert({"_id":"NopPvF5ocTcK9YWyY","alias":"","msg":"97","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:38.310Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:38.334Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"97"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"NqRvSpT6vWpaMyenq","alias":"","msg":"276","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:47.330Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:47.347Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"276"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"PAz8BppytThsiyaSv","alias":"","msg":"116","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:45.010Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:45.034Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"116"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Pi8mzMSsneD9Bku9d","alias":"","msg":"218","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:26.512Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:26.535Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"218"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Px7brmeNGnYiDZN48","alias":"","msg":"167","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:06.866Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:06.899Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"167"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Q9JZLA5uaiwvknQFL","alias":"","msg":"151","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:00.560Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:00.584Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"151"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Q9LHyGvCWj8TT26jj","alias":"","msg":"193","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:17.502Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:17.528Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"193"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Q9NgS9QRojajftfj6","alias":"","msg":"120","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:46.422Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:46.442Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"120"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"QEp4mdsvN7tATTTif","alias":"","msg":"105","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:41.105Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:41.123Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"105"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"QZncZeyQk4ach7TyF","alias":"","msg":"55","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:23.324Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:23.339Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"55"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"R7iDtoqMcP8iH9AZi","rid":"5iyMRT843rNn4wwHv","msg":"http://localhost:3000/group/jumping-thread?msg=wXb2eMCF5em722dSG Go to quoted","ts":new Date("2021-06-14T21:27:34.440Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:34.517Z"),"attachments":[{"text":"quoted","author_name":"admin","author_icon":"/avatar/admin","message_link":"http://localhost:3000/group/jumping-thread?msg=wXb2eMCF5em722dSG","attachments":[],"ts":new Date("2021-06-14T21:26:48.151Z")}],"urls":[{"url":"http://localhost:3000/group/jumping-thread?msg=5iyMRT843rNn4wwHv","ignoreParse":true}],"mentions":[],"channels":[]}); +db.getCollection("rocketchat_message").insert({"_id":"REFdN433cQ4knn4hY","alias":"","msg":"99","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:39.014Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:39.034Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"99"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"RKHTvjSKiGAPRRZfc","alias":"","msg":"251","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:38.455Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:38.495Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"251"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"RSEww3hBWuHhCkeeR","alias":"","msg":"211","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:24.027Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:24.064Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"211"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"RSJ2S4QoYYKTqcebb","alias":"","msg":"79","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:31.818Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:31.846Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"79"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"RWqSS9eFRtsW8kAxv","alias":"","msg":"260","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:41.693Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:41.717Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"260"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"RZ9tvpoxLm4chpayJ","alias":"","msg":"51","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:21.922Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:21.944Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"51"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"RcBwAoQHPodNp5urE","alias":"","msg":"16","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:09.778Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:09.797Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"16"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Rj5xni8Hj9RazWE3L","alias":"","msg":"87","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:34.695Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:34.711Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"87"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"S7KPMtHTniMLbnMRw","alias":"","msg":"220","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:27.214Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:27.239Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"220"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"S7pzSFnpoEi5Fc52S","alias":"","msg":"195","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:18.218Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:18.244Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"195"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"S8ZtZfXYdgHnbGDeh","alias":"","msg":"132","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:52.135Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:52.224Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"132"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"SAn6je34GPkDiyNEh","alias":"","msg":"221","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:27.574Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:27.601Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"221"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"SLEJ4mvSD3xh7Gaby","alias":"","msg":"224","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:28.711Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:28.736Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"224"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"SQM5sg8wKFyuiFp6N","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"16","ts":new Date("2021-06-14T21:26:58.848Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:58.998Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"16"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"SXzXF6bN4g3soN7nv","alias":"","msg":"183","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:13.641Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:13.663Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"183"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ScCeKQunf9XP85PvK","alias":"","msg":"226","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:29.429Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:29.453Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"226"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Sh8HLTpuRhE9bxd6w","alias":"","msg":"127","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:49.417Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:49.526Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"127"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Sj74bsHaXr7RKdf3g","alias":"","msg":"206","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:22.236Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:22.259Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"206"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"SpDjvPCCuhDKwqRjb","alias":"","msg":"186","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:14.868Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:14.949Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"186"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"TChAZirf4q3ZwgsAp","alias":"","msg":"84","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:33.613Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:33.665Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"84"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"TFA29pKXYWkNYPfF3","alias":"","msg":"177","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:10.883Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:11.172Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"177"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"TPyLu2TTXuLBM4Kmc","alias":"","msg":"154","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:01.709Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:01.728Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"154"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"TXcETF7ftNrki3ALu","alias":"","msg":"201","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:20.446Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:20.478Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"201"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"W2gRc5ajwmYrYYiBq","alias":"","msg":"290","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:52.687Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:52.715Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"290"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"W5wrodggp3Hwe2urC","alias":"","msg":"164","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:05.709Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:05.729Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"164"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"W6JAFqquRcwbTZqBS","alias":"","msg":"228","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:30.167Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:30.196Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"228"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"WDZP2fFGfQNB9pLBt","alias":"","msg":"171","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:08.525Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:08.585Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"171"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"WNjmDuKBtvdTk2sPo","alias":"","msg":"126","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:48.839Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:48.992Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"126"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"WW3jiRvwAZiAvFa8a","alias":"","msg":"64","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:26.499Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:26.518Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"64"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"WgjPSsi6ZJhgGZ9Yy","alias":"","msg":"294","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:54.118Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:54.138Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"294"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Wu6Q4rKfhqWgxqTwe","alias":"","msg":"85","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:34.009Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:34.028Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"85"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"X3d6dRXShATdWTAZQ","alias":"","msg":"216","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:25.808Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:25.826Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"216"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"X49ws5jXcMpaq7ywA","alias":"","msg":"238","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:33.738Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:33.759Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"238"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"XF32syPxCRi36aejC","alias":"","msg":"125","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:48.340Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:48.433Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"125"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Xvkhsa6ysfMZkehLF","alias":"","msg":"248","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:37.356Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:37.374Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"248"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Y8XHkq3WpexeY7Brw","alias":"","msg":"77","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:31.125Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:31.144Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"77"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"YEn2SpZ6QgeGjurvd","alias":"","msg":"208","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:22.955Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:22.973Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"208"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"YGkkNtQbXe9JbwnXn","alias":"","msg":"110","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:42.894Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:42.921Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"110"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Ymg9aMZH5u8cPQdye","alias":"","msg":"138","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:55.162Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:55.238Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"138"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"YuHwpNgMRje5MsQJG","alias":"","msg":"47","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:20.543Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:20.557Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"47"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Z7fqoZYFgA7TnNomA","alias":"","msg":"179","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:11.977Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:12.063Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"179"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Z9E3BZWejTKiSvaKE","alias":"","msg":"107","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:41.868Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:41.886Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"107"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZFuEA3XmwGu3PAzv9","alias":"","msg":"20","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:11.198Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:11.217Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"20"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZHpwo4dzEjJS4sSmG","alias":"","msg":"25","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:12.970Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:12.988Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"25"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZJQe834wHqGsHqoYL","alias":"","msg":"209","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:23.306Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:23.327Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"209"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZKSaW8vspoojf6bM2","alias":"","msg":"181","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:12.827Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:12.896Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"181"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZP8duwLKiLaGaaW5J","alias":"","msg":"60","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:25.068Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:25.095Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"60"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Zaoa684RSi7Rs7Rid","alias":"","msg":"192","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:17.144Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:17.170Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"192"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZgGv86jmZ2zFT2bHE","alias":"","msg":"76","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:30.767Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:30.799Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"76"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZgWXaPAjiYxNzCyYC","alias":"","msg":"203","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:21.193Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:21.209Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"203"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Zhq9AmbzgGFiWJDyd","alias":"","msg":"256","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:40.251Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:40.302Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"256"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"Zpscdpv4Mf99uczkH","alias":"","msg":"66","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:27.214Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:27.238Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"66"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZsRjyeDqxgQSXsb5G","alias":"","msg":"159","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:03.702Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:03.778Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"159"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ZzTWmQnPiHLCArw7s","alias":"","msg":"26","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:13.315Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:13.336Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"26"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"a82cWhkFEeCXEMxmP","alias":"","msg":"35","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:16.466Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:16.481Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"35"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"aFMhY68mGFMPD5eHM","alias":"","msg":"135","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:53.554Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:53.698Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"135"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"aqXfs7SvG4knixCE3","alias":"","msg":"259","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:41.335Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:41.353Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"259"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"asNxLidHfTi7E3rri","rid":"GFR2xxircSsyJxx9F","msg":"[ ](http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC) Quote first message","ts":new Date("2021-06-14T21:28:50.477Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:28:50.537Z"),"attachments":[{"text":"1","author_name":"admin","author_icon":"/avatar/admin","message_link":"http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC","attachments":[],"ts":new Date("2021-06-14T21:24:50.182Z")}],"urls":[{"url":"http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC","ignoreParse":true}],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"LINK","value":{"src":{"type":"PLAIN_TEXT","value":"http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC"},"label":{"type":"PLAIN_TEXT","value":" "}}},{"type":"PLAIN_TEXT","value":" Quote first message"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"axvp8s25ARwDpfzmh","alias":"","msg":"136","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:54.051Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:54.108Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"136"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"b4mfvGcu54E5fZcFT","alias":"","msg":"175","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:10.090Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:10.139Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"175"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"b5E537jXp9K4oN4Wi","alias":"","msg":"246","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:36.635Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:36.664Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"246"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"bKGeCjGTDGxqEZ6hm","alias":"","msg":"161","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:04.498Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:04.522Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"161"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"bQvAAAGyDWfFF6Y7A","alias":"","msg":"163","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:05.358Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:05.380Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"163"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"bTNtxyTgianagFSNx","alias":"","msg":"112","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:43.614Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:43.632Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"112"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"bYJ54jdELZ3QdHHas","alias":"","msg":"244","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:35.923Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:35.944Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"244"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"baWZ2thegi7MzuqdG","alias":"","msg":"254","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:39.537Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:39.557Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"254"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"bjJtt5nXd9WNgyFfH","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"21","ts":new Date("2021-06-14T21:27:04.747Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:04.852Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"21"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"bsefeQWb2q2TbtMw7","alias":"","msg":"242","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:35.213Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:35.231Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"242"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"btXJwZ48vySPKm53G","alias":"","msg":"40","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:18.166Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:18.181Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"40"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"c2iHGieZ8bpnt35rF","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"28","ts":new Date("2021-06-14T21:27:12.665Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:12.718Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"28"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"c3pTEP9xYmiMRbPZ4","alias":"","msg":"249","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:37.704Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:37.738Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"249"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"cFFH3n7Rt2ycvJyuj","alias":"","msg":"270","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:45.206Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:45.223Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"270"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"cZw93Xs7hCywM22rw","alias":"","msg":"101","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:39.717Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:39.736Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"101"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"coBfxKdjuMdr6nAo9","alias":"","msg":"115","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:44.656Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:44.677Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"115"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ctJwtBmsAragPidYK","alias":"","msg":"214","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:25.103Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:25.122Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"214"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"cu7CR5vzM7zhHcyxp","alias":"","msg":"155","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:02.072Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:02.101Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"155"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"czpi4xpGasv7qLEDG","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"5","ts":new Date("2021-06-14T21:26:50.306Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:50.415Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"5"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"dA923aH8Pum3yaGFH","alias":"","msg":"170","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:08.150Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:08.174Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"170"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"dADdCiC86XSM6x3H5","alias":"","msg":"113","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:43.956Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:43.974Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"113"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"dJ4RcvX7WP8xBjh3x","alias":"","msg":"57","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:24.020Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:24.043Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"57"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"dcYJDKLis496fq37P","alias":"","msg":"30","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:14.728Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:14.748Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"30"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"dsNcCY6TFcR8DJdhh","alias":"","msg":"45","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:19.860Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:19.874Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"45"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"duF48GeHr6JXE627H","alias":"","msg":"121","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:46.816Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:46.900Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"121"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"eCXzwsPZN4aC9oasY","alias":"","msg":"142","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:56.815Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:56.895Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"142"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ebRbDWuZ7HCgzAdnB","alias":"","msg":"288","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:51.990Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:52.012Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"288"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"etXetwZLWJ8quLbXY","alias":"","msg":"152","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:00.916Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:00.935Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"152"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"f2PJHaeQhN38ZWYPc","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"20","ts":new Date("2021-06-14T21:27:03.534Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:03.605Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"20"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"f36eGwj5ZXT3FzXsQ","alias":"","msg":"122","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:47.241Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:47.260Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"122"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"f3QBqS3TRsfQknctT","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"29","ts":new Date("2021-06-14T21:27:13.767Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:13.882Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"29"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"f5mHjp7PgC4oxKxWB","alias":"","msg":"233","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:31.997Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:32.023Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"233"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fH5EArKGppbm5fu4H","alias":"","msg":"207","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:22.600Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:22.624Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"207"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fWxDpwWjLtDiWaGNh","alias":"","msg":"298","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:55.560Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:55.576Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"298"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fjw4BsPLrxN8wRw9P","alias":"","msg":"123","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:47.587Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:47.603Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"123"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fmxCFF5urELfPt5o4","alias":"","msg":"210","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:23.661Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:23.687Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"210"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fpgKLzsGpj6YwX6nj","alias":"","msg":"247","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:36.999Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:37.026Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"247"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fsy2dZJgmmboowJ8N","t":"uj","rid":"GENERAL","ts":new Date("2020-03-12T14:16:48.462Z"),"msg":"admin","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"groupable":false,"_updatedAt":new Date("2020-03-12T14:16:48.462Z")}); +db.getCollection("rocketchat_message").insert({"_id":"fuaaSP7JwX7tBoQKf","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"22","ts":new Date("2021-06-14T21:27:06.201Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:06.309Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"22"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"fwdGhi3DjYRPCvK9a","alias":"","msg":"39","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:17.823Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:17.837Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"39"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"gMCRJXDfAz6iCz36n","alias":"","msg":"166","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:06.445Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:06.528Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"166"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"gSek3hYhat9HZgxZn","alias":"","msg":"263","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:42.744Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:42.769Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"263"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"gmNPD2NzrYTcL4vbi","alias":"","msg":"114","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:44.305Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:44.325Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"114"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"gqvXKFvaHviN6WT6d","alias":"","msg":"36","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:16.807Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:16.820Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"36"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"hADa3458ZBWoA2vis","alias":"","msg":"297","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:55.211Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:55.229Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"297"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"hWGecLQ9J3QmPb5tZ","alias":"","msg":"42","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:18.847Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:18.862Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"42"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"he7eJ5uQkavMG2pRw","alias":"","msg":"291","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:53.044Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:53.064Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"291"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"i5v8nqpENnELkuKKK","alias":"","msg":"98","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:38.669Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:38.686Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"98"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"iAHZaZtecC9DTPh5M","alias":"","msg":"118","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:45.719Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:45.741Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"118"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"iDhXx9AMwdGn6eA8g","alias":"","msg":"72","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:29.378Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:29.399Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"72"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"iEbZ89N6nn7BrNJjb","alias":"","msg":"143","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:57.291Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:57.428Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"143"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"iTD6csdpfXsBjw2Cm","alias":"","msg":"271","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:45.550Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:45.562Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"271"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"iXLFap36XtvBEFN5v","alias":"","msg":"10","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:07.627Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:07.651Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"10"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ind3Datf2D7PaZzFZ","alias":"","msg":"73","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:29.726Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:29.745Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"73"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"iuBBQN8GYYnzreXGr","alias":"","msg":"289","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:52.341Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:52.356Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"289"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ivZn9uDwQc5gQJM34","alias":"","msg":"93","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:36.852Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:36.882Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"93"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"j54HwbxYvXjRjMadK","alias":"","msg":"150","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:00.149Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:00.221Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"150"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"j9PSMJej8Wcpa4Ytx","alias":"","msg":"44","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:19.522Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:19.535Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"44"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"jLfKGGCYNK53XHSTL","alias":"","msg":"103","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:40.408Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:40.429Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"103"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"jPniEqszEwDwuaiuj","alias":"","msg":"21","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:11.551Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:11.571Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"21"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"jb9wEPkba3zpPEtmJ","alias":"","msg":"68","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:27.931Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:27.953Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"68"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"jvtiBQASkTzCAQbDR","alias":"","msg":"157","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:02.837Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:02.916Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"157"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"k4cpqEJdJswa9Gi5Y","alias":"","msg":"261","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:42.048Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:42.062Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"261"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"kDetPPBzhWn93cxRF","alias":"","msg":"225","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:29.069Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:29.093Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"225"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"kFSqxJp5KZvQ7D8aE","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"26","ts":new Date("2021-06-14T21:27:10.751Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:11.061Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"26"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"kS8jZdggkfgsTsZG5","alias":"","msg":"174","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:09.739Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:09.758Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"174"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"m7tDWPnGNRnGCue75","alias":"","msg":"280","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:49.134Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:49.157Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"280"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"mf4JSThGWDcKcMHpg","alias":"","msg":"227","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:29.784Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:29.833Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"227"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"mkh7E9F6DsZ4Tcdup","alias":"","msg":"295","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:54.475Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:54.502Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"295"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"n26SaSKE9K5om8yLj","alias":"","msg":"50","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:21.571Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:21.590Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"50"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"nCRBdtauhxPqBtg4g","alias":"","msg":"272","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:45.899Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:45.920Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"272"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"nHzxrRo6tBHscDDje","alias":"","msg":"17","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:10.137Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:10.157Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"17"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"nL6KxYJnhqiAnf6pH","alias":"","msg":"144","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:57.777Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:57.798Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"144"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"o5a6HfkxwT56K4jPQ","alias":"","msg":"292","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:53.406Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:53.431Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"292"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"o7ASiN5h6rWf5R6Zn","alias":"","msg":"71","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:29.010Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:29.045Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"71"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"oBai683KWMkxTbrXm","alias":"","msg":"109","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:42.551Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:42.565Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"109"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"oP4SBAiREiHxsCKuJ","alias":"","msg":"11","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:07.981Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:08.003Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"11"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"oR4yJeKsiAdbi2J3o","alias":"","msg":"31","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:15.084Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:15.105Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"31"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"oRgEHMjJwkK3QMPH6","alias":"","msg":"285","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:50.910Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:50.932Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"285"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"oamqgrpKs75TAzRDn","alias":"","msg":"182","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:13.249Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:13.302Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"182"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ooG2D2kA9XKEYfLxy","alias":"","msg":"184","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:14.009Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:14.085Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"184"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"owsKBceEBzCRenLf5","alias":"","msg":"128","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:49.939Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:50.099Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"128"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"pXkDBj6n8zs5QwgoP","alias":"","msg":"219","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:26.867Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:26.884Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"219"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"phg34vrw6zgeXNM4S","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"14","ts":new Date("2021-06-14T21:26:56.534Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:56.629Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"14"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"pobCPg2DEvSthxSms","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"17","ts":new Date("2021-06-14T21:26:59.957Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:00.029Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"17"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"pq95BBkovDfF9QXBz","alias":"","msg":"104","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:40.758Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:40.779Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"104"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"prLoRs2LovJ2ZwB69","alias":"","msg":"23","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:12.255Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:12.282Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"23"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"q9hHwTBcNAWHJTogx","alias":"","msg":"241","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:34.868Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:34.886Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"241"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"q9vSCngMpjFmJGYKD","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"to be searched","ts":new Date("2021-06-14T21:26:48.735Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:48.875Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"2"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"qS4Rk23v3makbdfbH","alias":"","msg":"131","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:51.580Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:51.717Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"131"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"qX4SgeQLSAkYM96JS","alias":"","msg":"46","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:20.199Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:20.217Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"46"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"qx3fGuWDaYM2KTP7b","alias":"","msg":"18","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:10.488Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:10.514Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"18"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"r3otdRoyGLyWE3QXt","alias":"","msg":"106","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:41.477Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:41.537Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"106"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"rFyiPh4ieazJ5Xujx","alias":"","msg":"212","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:24.396Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:24.419Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"212"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"rMbGKvG834q8EeNGs","rid":"5iyMRT843rNn4wwHv","tshow":false,"tmid":"NAXDFHoxA44rsyujh","msg":"Go to jumping-thread\'s thread","ts":new Date("2021-06-14T21:26:48.151Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:48.219Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"1"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"rRnLnmDmiEuAdCCxc","alias":"","msg":"27","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:13.667Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:13.686Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"27"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"rYdDqTMqdZc6iDfkR","alias":"","msg":"146","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:58.496Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:58.512Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"146"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"rzhvoTuvciCYKuWaz","alias":"","msg":"149","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:59.761Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:59.791Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"149"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"s6uQ9PgRQTj8eHcXd","alias":"","msg":"32","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:15.434Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:15.458Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"32"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sEFhTtHAnByAuhm9L","alias":"","msg":"250","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:38.081Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:38.113Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"250"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sL2q79eQMszvrndN4","alias":"","msg":"169","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:07.775Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:07.810Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"169"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sMNLLsoDjghCTvmwc","alias":"","msg":"273","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:46.242Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:46.269Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"273"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sPoHne32K2pdrqhmY","alias":"","msg":"80","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:32.181Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:32.203Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"80"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sQksqnBfdfuvvFTtZ","alias":"","msg":"204","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:21.538Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:21.555Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"204"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sYp5F5WSFBWP6dy4L","alias":"","msg":"4","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:05.437Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:05.484Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"4"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sarBNn8KXCDibD26Z","alias":"","msg":"133","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:52.631Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:52.716Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"133"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"seqFxn6iMnefCk4oL","alias":"","msg":"286","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:51.271Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:51.305Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"286"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"sjpPh6jnmQ9cT2XtA","alias":"","msg":"245","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:36.278Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:36.307Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"245"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"skTHqNq9QnaL6odE4","alias":"","msg":"62","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:25.787Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:25.808Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"62"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"syv4LYPK7pGwH6gMR","alias":"","msg":"205","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:21.886Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:21.905Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"205"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"tA26DWrEE44d2rrQF","alias":"","msg":"59","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:24.717Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:24.737Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"59"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"tLKnMvEAK7ELxqN9m","alias":"","msg":"190","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:16.420Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:16.423Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"190"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"tm9kzLG57tmTGuDga","alias":"","msg":"5","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:05.820Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:05.848Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"5"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"tpJ6jPcf8hTE6Y9my","alias":"","msg":"231","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:31.261Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:31.305Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"231"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ttcshiSSJSknTmXhN","alias":"","msg":"255","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:39.886Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:39.905Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"255"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"txf4Dih43e23ezkm6","alias":"","msg":"200","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:20.035Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:20.095Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"200"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"tyxqHBNYJpBs2DreP","alias":"","msg":"172","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:08.927Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:08.946Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"172"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"u3BjoxuA4pzjPGzyS","alias":"","msg":"9","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:07.267Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:07.295Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"9"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"uHwBGqbXsLWuQ4CP3","alias":"","msg":"262","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:42.389Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:42.409Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"262"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"uNzeBDetJgn9wEaQ4","alias":"","msg":"191","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:16.773Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:16.808Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"191"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"uqJDykHAvpnBrGMNF","alias":"","msg":"243","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:35.562Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:35.582Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"243"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"utqDfyM45QuRLzK3o","alias":"","msg":"78","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:31.473Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:31.491Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"78"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"v5upv7DR4BHbCwBEX","alias":"","msg":"48","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:20.883Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:20.899Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"48"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"v7HSMTfRa68Suh8at","alias":"","msg":"153","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:01.296Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:01.364Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"153"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"vYYLKrHc8yDr9AZC7","alias":"","msg":"178","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:11.540Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:11.576Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"178"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"vn9Qp6fC5s2cEKt3a","alias":"","msg":"267","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:44.152Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:44.176Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"267"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"voqrApbpcnuGtkLMp","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"7","ts":new Date("2021-06-14T21:26:51.398Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:51.520Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"7"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"vsYTFFAkiGKsWKPdz","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"thread message sent to main room","tshow":true,"ts":new Date("2021-06-14T21:26:49.776Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:49.935Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"4"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"vvEjAvsntsAuuPTKF","alias":"","msg":"83","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:33.249Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:33.276Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"83"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"w6HMBqLX9eYHvmZzD","alias":"","msg":"70","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:28.656Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:28.679Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"70"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"w7hroywNx2tecwn2b","alias":"","msg":"129","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:50.523Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:50.618Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"129"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wDgerDqxzMCmqSYKz","alias":"","msg":"58","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:24.376Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:24.390Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"58"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wSYKDGziubGABmmNb","alias":"","msg":"82","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:32.885Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:32.917Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"82"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wXScdaF6cs3tBLbvg","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"6","ts":new Date("2021-06-14T21:26:50.887Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:50.998Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"6"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wXb2eMCF5em722dSG","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"quoted","ts":new Date("2021-06-14T21:26:49.220Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:49.341Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"quoted"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wZ2FMa6d2zMFwZwjL","alias":"","msg":"12","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:08.336Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:08.359Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"12"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wg5oydMJc8fp5wgoR","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"8","ts":new Date("2021-06-14T21:26:51.875Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:52.025Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"8"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"wr9zgcFELuZGzo2Xe","alias":"","msg":"147","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:58.876Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:58.991Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"147"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"xXXexskd39XS4tfXE","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"25","ts":new Date("2021-06-14T21:27:09.149Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:09.219Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"25"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"xhCSEvqZjmWP8XCzv","alias":"","msg":"41","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:18.504Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:18.518Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"41"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"y4XkigXMgv6ACLd9R","alias":"","msg":"92","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:36.500Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:36.519Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"92"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"y8QHZid5pNvXyg9fX","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"13","ts":new Date("2021-06-14T21:26:55.736Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:55.823Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"13"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"yKoyhAhYETLv6kXdf","alias":"","msg":"81","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:32.531Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:32.554Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"81"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ygZKFw8DnQFhjxEnn","alias":"","msg":"148","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:59.377Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:59.427Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"148"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zApewG2ppDrjPqwHz","alias":"","msg":"278","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:48.137Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:48.298Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"278"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zAvAphoMoaS4m5z2s","alias":"","msg":"134","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:53.078Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:53.151Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"134"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zGMAPTHCPwt3jBCkm","alias":"","msg":"202","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:20.825Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:20.863Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"202"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zPfgHYTQeskiL8Jp6","alias":"","msg":"222","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:27.932Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:27.952Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"222"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zQu55sCe6sQaPwBHJ","alias":"","msg":"67","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:27.571Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:27.596Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"67"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zSZSann7XBW5672HA","rid":"5iyMRT843rNn4wwHv","tmid":"NAXDFHoxA44rsyujh","msg":"12","ts":new Date("2021-06-14T21:26:54.930Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:26:55.046Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"12"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"zjeYZ7WrpmJWwkuqB","alias":"","msg":"75","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:26:30.421Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:26:30.439Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"75"}]}]}); +db.getCollection("rocketchat_message").insert({"_id":"ztdbnfLLo6f6hnRMo","alias":"","msg":"197","attachments":[],"parseUrls":true,"groupable":false,"ts":new Date("2021-06-14T21:27:18.946Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"rid":"GFR2xxircSsyJxx9F","_updatedAt":new Date("2021-06-14T21:27:18.970Z"),"urls":[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"197"}]}]}); diff --git a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_room.js b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_room.js index 09640ac1c39..078c7e5096a 100644 --- a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_room.js +++ b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_room.js @@ -1 +1,3 @@ -db.getCollection("rocketchat_room").insert({"_id":"GENERAL","ts":new Date(1584022382998),"t":"c","name":"general","usernames":[],"msgs":NumberInt(3),"usersCount":NumberInt(3),"default":true,"_updatedAt":new Date(1589465366516),"lastMessage":{"_id":"fsy2dZJgmmboowJ8N","t":"uj","rid":"GENERAL","ts":new Date(1584022608462),"msg":"admin","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"groupable":false,"_updatedAt":new Date(1584022608462)},"lm":new Date(1584022608462)}); +db.getCollection("rocketchat_room").insert({"_id":"5iyMRT843rNn4wwHv","fname":"jumping-thread","customFields":{},"description":"","broadcast":false,"encrypted":false,"name":"jumping-thread","t":"p","msgs":33,"usersCount":1,"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"ts":new Date("2021-06-14T21:26:33.120Z"),"ro":false,"default":false,"sysMes":true,"_updatedAt":new Date("2021-06-14T21:27:34.527Z"),"lastMessage":{"_id":"R7iDtoqMcP8iH9AZi","rid":"5iyMRT843rNn4wwHv","msg":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs Go to 1","ts":new Date("2021-06-14T21:27:34.440Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:27:34.517Z"),"attachments":[{"text":"1","author_name":"admin","author_icon":"/avatar/admin","message_link":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs","attachments":[],"ts":new Date("2021-06-14T21:26:48.151Z")}],"urls":[{"url":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs","ignoreParse":true}],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"LINK","value":{"src":{"type":"PLAIN_TEXT","value":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs"},"label":{"type":"PLAIN_TEXT","value":"http://localhost:3000/group/jumping-thread?msg=rMbGKvG834q8EeNGs"}}},{"type":"PLAIN_TEXT","value":" Go to 1"}]}]},"lm":new Date("2021-06-14T21:27:34.440Z")}); +db.getCollection("rocketchat_room").insert({"_id":"GENERAL","ts":new Date("2020-03-12T14:13:02.998Z"),"t":"c","name":"general","usernames":[],"msgs":3,"usersCount":3,"default":true,"_updatedAt":new Date("2020-05-14T14:09:26.516Z"),"lastMessage":{"_id":"fsy2dZJgmmboowJ8N","t":"uj","rid":"GENERAL","ts":new Date("2020-03-12T14:16:48.462Z"),"msg":"admin","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"groupable":false,"_updatedAt":new Date("2020-03-12T14:16:48.462Z")},"lm":new Date("2020-03-12T14:16:48.462Z")}); +db.getCollection("rocketchat_room").insert({"_id":"GFR2xxircSsyJxx9F","fname":"jumping","customFields":{},"description":"","broadcast":false,"encrypted":false,"name":"jumping","t":"p","msgs":302,"usersCount":1,"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"ts":new Date("2021-06-14T21:23:44.808Z"),"ro":false,"default":false,"sysMes":true,"_updatedAt":new Date("2021-06-14T21:28:50.547Z"),"lastMessage":{"_id":"asNxLidHfTi7E3rri","rid":"GFR2xxircSsyJxx9F","msg":"[ ](http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC) Quote first message","ts":new Date("2021-06-14T21:28:50.477Z"),"u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2021-06-14T21:28:50.537Z"),"attachments":[{"text":"1","author_name":"admin","author_icon":"/avatar/admin","message_link":"http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC","attachments":[],"ts":new Date("2021-06-14T21:24:50.182Z")}],"urls":[{"url":"http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC","ignoreParse":true}],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"LINK","value":{"src":{"type":"PLAIN_TEXT","value":"http://localhost:3000/group/jumping?msg=DvKX5qbzg8CWE3oNC"},"label":{"type":"PLAIN_TEXT","value":" "}}},{"type":"PLAIN_TEXT","value":" Quote first message"}]}]},"lm":new Date("2021-06-14T21:28:50.477Z")}); diff --git a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_settings.js b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_settings.js index d602c8e23eb..13f672f76b1 100644 --- a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_settings.js +++ b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_settings.js @@ -333,7 +333,7 @@ db.getCollection("rocketchat_settings").insert({"_id":"Discussion","_updatedAt": db.getCollection("rocketchat_settings").insert({"_id":"Discussion_enabled","_updatedAt":new Date(1591734399894),"autocomplete":true,"blocked":false,"createdAt":new Date(1584022382543),"group":"Discussion","hidden":false,"i18nDescription":"Discussion_enabled_Description","i18nLabel":"Enable","packageValue":true,"public":true,"secret":false,"sorter":NumberInt(0),"ts":new Date(1587032125124),"type":"boolean","value":true,"valueSource":"meteorSettingsValue","meteorSettingsValue":true}); db.getCollection("rocketchat_settings").insert({"_id":"Document_Domain","_updatedAt":new Date(1591734378033),"autocomplete":true,"blocked":false,"createdAt":new Date(1584022363283),"group":"General","hidden":false,"i18nDescription":"Document_Domain_Description","i18nLabel":"Document_Domain","packageValue":"","public":true,"secret":false,"sorter":NumberInt(13),"ts":new Date(1589465206477),"type":"string","value":"","valueSource":"packageValue"}); db.getCollection("rocketchat_settings").insert({"_id":"E2E Encryption","_updatedAt":new Date(1591734392055),"blocked":false,"createdAt":new Date(1584022376881),"hidden":false,"i18nDescription":"E2E Encryption_Description","i18nLabel":"E2E Encryption","ts":new Date(1591734392055),"type":"group"}); -db.getCollection("rocketchat_settings").insert({"_id":"E2E_Enable","_updatedAt":new Date(1591734392060),"alert":"E2E_Enable_alert","autocomplete":true,"blocked":false,"createdAt":new Date(1584022376886),"group":"E2E Encryption","hidden":false,"i18nDescription":"E2E_Enable_description","i18nLabel":"Enabled","packageValue":false,"public":true,"secret":false,"sorter":NumberInt(0),"ts":new Date(1587032118031),"type":"boolean","value":false,"valueSource":"meteorSettingsValue","meteorSettingsValue":false}); +db.getCollection("rocketchat_settings").insert({"_id":"E2E_Enable","_updatedAt":new Date(1591734392060),"alert":"E2E_Enable_alert","autocomplete":true,"blocked":false,"createdAt":new Date(1584022376886),"group":"E2E Encryption","hidden":false,"i18nDescription":"E2E_Enable_description","i18nLabel":"Enabled","packageValue":false,"public":true,"secret":false,"sorter":NumberInt(0),"ts":new Date(1587032118031),"type":"boolean","value":true,"valueSource":"meteorSettingsValue","meteorSettingsValue":false}); db.getCollection("rocketchat_settings").insert({"_id":"E2E_Enabled_Default_DirectRooms","_updatedAt":new Date(1591734392064),"autocomplete":true,"blocked":false,"createdAt":new Date(1589465219630),"enableQuery":"{\"_id\":\"E2E_Enable\",\"value\":true}","group":"E2E Encryption","hidden":false,"i18nDescription":"E2E_Enabled_Default_DirectRooms_Description","i18nLabel":"E2E_Enabled_Default_DirectRooms","packageValue":false,"secret":false,"sorter":NumberInt(1),"ts":new Date(1591648586549),"type":"boolean","value":false,"valueSource":"meteorSettingsValue","meteorSettingsValue":false}); db.getCollection("rocketchat_settings").insert({"_id":"E2E_Enabled_Default_PrivateRooms","_updatedAt":new Date(1591734392068),"autocomplete":true,"blocked":false,"createdAt":new Date(1589465219635),"enableQuery":"{\"_id\":\"E2E_Enable\",\"value\":true}","group":"E2E Encryption","hidden":false,"i18nDescription":"E2E_Enabled_Default_PrivateRooms_Description","i18nLabel":"E2E_Enabled_Default_PrivateRooms","packageValue":false,"secret":false,"sorter":NumberInt(2),"ts":new Date(1591648586557),"type":"boolean","value":false,"valueSource":"meteorSettingsValue","meteorSettingsValue":false}); db.getCollection("rocketchat_settings").insert({"_id":"Email","_updatedAt":new Date(1591734377231),"blocked":false,"createdAt":new Date(1584022362339),"hidden":false,"i18nDescription":"Email_Description","i18nLabel":"Email","ts":new Date(1591734377231),"type":"group"}); diff --git a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_subscription.js b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_subscription.js index 72b264e32e4..acaef055458 100644 --- a/e2e/docker/docker-entrypoint-initdb.d/rocketchat_subscription.js +++ b/e2e/docker/docker-entrypoint-initdb.d/rocketchat_subscription.js @@ -1 +1,3 @@ -db.getCollection("rocketchat_subscription").insert({"_id":"KRktZiYdT9DK3dZgJ","open":true,"alert":false,"unread":NumberInt(0),"userMentions":NumberInt(0),"groupMentions":NumberInt(0),"ts":new Date(1584022608447),"rid":"GENERAL","name":"general","t":"c","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date(1589465366503),"ls":new Date(1589465366503)}); +db.getCollection("rocketchat_subscription").insert({"_id":"KRktZiYdT9DK3dZgJ","open":true,"alert":false,"unread":0,"userMentions":0,"groupMentions":0,"ts":new Date("2020-03-12T14:16:48.447Z"),"rid":"GENERAL","name":"general","t":"c","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin","name":"Admin"},"_updatedAt":new Date("2020-05-14T14:09:26.503Z"),"ls":new Date("2020-05-14T14:09:26.503Z")}); +db.getCollection("rocketchat_subscription").insert({"_id":"MMF5fwJkT8zrTjX9b","open":true,"alert":false,"unread":0,"userMentions":0,"groupMentions":0,"ts":new Date("2021-06-14T21:26:33.120Z"),"rid":"5iyMRT843rNn4wwHv","name":"jumping-thread","fname":"jumping-thread","customFields":{},"t":"p","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"ls":new Date("2021-06-14T21:27:34.525Z"),"_updatedAt":new Date("2021-06-14T21:27:34.525Z"),"roles":["owner"],"lr":new Date("2021-06-14T21:27:14.840Z")}); +db.getCollection("rocketchat_subscription").insert({"_id":"o3jB8uKAC2cBkYhcL","open":true,"alert":false,"unread":0,"userMentions":0,"groupMentions":0,"ts":new Date("2021-06-14T21:23:44.808Z"),"rid":"GFR2xxircSsyJxx9F","name":"jumping","fname":"jumping","customFields":{},"t":"p","u":{"_id":"nM6vXyDLGGzSPsLNy","username":"admin"},"ls":new Date("2021-06-14T21:28:50.546Z"),"_updatedAt":new Date("2021-06-14T21:28:50.546Z"),"roles":["owner"]}); diff --git a/e2e/tests/room/09-jumptomessage.spec.js b/e2e/tests/room/09-jumptomessage.spec.js new file mode 100644 index 00000000000..5071e4de9bd --- /dev/null +++ b/e2e/tests/room/09-jumptomessage.spec.js @@ -0,0 +1,154 @@ +const { + device, expect, element, by, waitFor +} = require('detox'); +const data = require('../../data'); +const { navigateToLogin, mockMessage, tapBack, login, sleep, searchRoom } = require('../../helpers/app'); + +async function navigateToRoom(roomName) { + await searchRoom(`${ roomName }`); + await element(by.id(`rooms-list-view-item-${ roomName }`)).tap(); + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); +} + +async function clearCache() { + await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await element(by.id('sidebar-settings')).tap(); + await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); + await element(by.id('settings-view-clear-cache')).tap(); + await waitFor(element(by.text('This will clear all your offline data.'))).toExist().withTimeout(2000); + await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id(`rooms-list-view-item-jumping`))).toExist().withTimeout(10000); +} + +async function waitForLoading() { + await waitFor(element(by.id('loading'))).toBeVisible().withTimeout(5000); + await waitFor(element(by.id('loading'))).toBeNotVisible().withTimeout(5000); +} + +describe('Room', () => { + before(async() => { + await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); + await navigateToLogin(); + await login(data.adminUser, data.adminPassword); + }); + + it('should jump to an old message and load its surroundings', async() => { + await navigateToRoom('jumping'); + await waitFor(element(by.label('Quote first message'))).toExist().withTimeout(5000); + await element(by.label('1')).atIndex(0).tap(); + await waitForLoading(); + await expect(element(by.label('1')).atIndex(0)).toExist(); + await expect(element(by.label('2'))).toExist(); + }); + + it('should tap FAB and scroll to bottom', async() => { + await waitFor(element(by.id('nav-jump-to-bottom'))).toExist().withTimeout(5000); + await element(by.id('nav-jump-to-bottom')).tap(); + await waitFor(element(by.label('Quote first message'))).toExist().withTimeout(5000); + await clearCache(); + }) + + it('should load messages on scroll', async() => { + await navigateToRoom('jumping'); + await waitFor(element(by.id('room-view-messages'))).toExist().withTimeout(5000); + await waitFor(element(by.label('300'))).toExist().withTimeout(5000); + let found = false; + while (!found) { + await element(by.id('room-view-messages')).atIndex(0).scroll(500, 'up'); + try { + await expect(element(by.label('249'))).toExist(); + found = true; + } catch { + } + } + await clearCache(); + }); + + it('should search for old message and load its surroundings', async() => { + await navigateToRoom('jumping'); + await element(by.id('room-view-search')).tap(); + await waitFor(element(by.id('search-messages-view'))).toExist().withTimeout(5000); + await element(by.id('search-message-view-input')).typeText('30\n'); + await waitFor(element(by.label('30')).atIndex(0)).toExist().withTimeout(5000); + await element(by.label('30')).atIndex(0).tap(); + await waitForLoading(); + await expect(element(by.label('30'))).toExist(); + await expect(element(by.label('31'))).toExist(); + await expect(element(by.label('32'))).toExist(); + }) + + it('should load newer and older messages', async() => { + await element(by.id('room-view-messages')).atIndex(0).swipe('down', 'fast', 0.8); + await waitFor(element(by.label('5'))).toExist().withTimeout(5000); + await waitFor(element(by.label('Load Older'))).toExist().withTimeout(5000); + await element(by.label('Load Older')).atIndex(0).tap(); + await waitFor(element(by.label('4'))).toExist().withTimeout(5000); + await element(by.id('room-view-messages')).atIndex(0).swipe('down', 'fast', 0.5); + await waitFor(element(by.label('1'))).toExist().withTimeout(5000); + await element(by.id('room-view-messages')).atIndex(0).swipe('up', 'fast', 0.5); + await waitFor(element(by.label('25'))).toExist().withTimeout(5000); + await element(by.id('room-view-messages')).atIndex(0).swipe('up', 'fast', 0.5); + await waitFor(element(by.label('50'))).toExist().withTimeout(5000); + await element(by.id('room-view-messages')).atIndex(0).swipe('up', 'slow', 0.5); + await waitFor(element(by.label('Load Newer'))).toExist().withTimeout(5000); + await element(by.label('Load Newer')).atIndex(0).tap(); + await waitFor(element(by.label('104'))).toExist().withTimeout(5000); + await waitFor(element(by.label('Load Newer'))).toExist().withTimeout(5000); + await element(by.label('Load Newer')).atIndex(0).tap(); + await waitFor(element(by.label('154'))).toExist().withTimeout(5000); + await waitFor(element(by.label('Load Newer'))).toExist().withTimeout(5000); + await element(by.label('Load Newer')).atIndex(0).tap(); + await waitFor(element(by.label('Load Newer'))).toNotExist().withTimeout(5000); + await expect(element(by.label('Load More'))).toNotExist(); + await expect(element(by.label('201'))).toExist(); + await expect(element(by.label('202'))).toExist(); + await tapBack(); + }); +}); + +const expectThreadMessages = async(message) => { + await waitFor(element(by.id('room-view-title-jumping-thread'))).toExist().withTimeout(5000); + await expect(element(by.label(message))).toExist(); +} + +describe('Threads', async() => { + it('should navigate to a thread from another room', async() => { + await navigateToRoom('jumping'); + await waitFor(element(by.label('Go to jumping-thread\'s thread')).atIndex(0)).toExist().withTimeout(5000); + await element(by.label('Go to jumping-thread\'s thread')).atIndex(0).tap(); + await waitForLoading(); + await expectThreadMessages('Go to jumping-thread\'s thread'); + await tapBack(); + }); + + it('should tap on thread message from main room', async() => { + await waitFor(element(by.label('thread message sent to main room')).atIndex(0)).toExist().withTimeout(5000); + await element(by.label('thread message sent to main room')).atIndex(0).tap(); + await expectThreadMessages('thread message sent to main room'); + await tapBack(); + }); + + it('should tap on quote', async() => { + await waitFor(element(by.label('quoted'))).toExist().withTimeout(5000); + await element(by.label('quoted')).atIndex(0).tap(); + await expectThreadMessages('quoted'); + await tapBack(); + }); + + it('should jump from search message', async() => { + await waitFor(element(by.id('room-view-title-jumping-thread'))).toExist().withTimeout(5000); + await element(by.id('room-view-search')).atIndex(0).tap(); + await waitFor(element(by.id('search-messages-view'))).toExist().withTimeout(5000); + await element(by.id('search-message-view-input')).typeText('to be searched\n'); + await waitFor(element(by.label('to be searched'))).toExist().withTimeout(5000); + await element(by.label('to be searched')).atIndex(1).tap(); + await expectThreadMessages('to be searched'); + }); + + //TODO: Threads pagination +}); \ No newline at end of file From 30487c392fbd6c90703bcc78ad7a359252af3fef Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Thu, 1 Jul 2021 21:57:23 +0800 Subject: [PATCH 157/177] [IMPROVE] Subscribe to permissions (#2993) * [CHORE] Subscribe to permissions * add redux action for update * Minor tweaks Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/actions/actionsTypes.js | 2 +- app/actions/permissions.js | 7 +++++++ app/lib/methods/getPermissions.js | 3 ++- app/lib/rocketchat.js | 16 ++++++++++++++++ app/reducers/permissions.js | 5 +++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index 1fd8679bcd1..6bb1690095c 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -71,4 +71,4 @@ export const APP_STATE = createRequestTypes('APP_STATE', ['FOREGROUND', 'BACKGRO export const ENTERPRISE_MODULES = createRequestTypes('ENTERPRISE_MODULES', ['CLEAR', 'SET']); export const ENCRYPTION = createRequestTypes('ENCRYPTION', ['INIT', 'STOP', 'DECODE_KEY', 'SET', 'SET_BANNER']); -export const PERMISSIONS = createRequestTypes('PERMISSIONS', ['SET']); +export const PERMISSIONS = createRequestTypes('PERMISSIONS', ['SET', 'UPDATE']); diff --git a/app/actions/permissions.js b/app/actions/permissions.js index 88179c34f52..444d9f11ce8 100644 --- a/app/actions/permissions.js +++ b/app/actions/permissions.js @@ -6,3 +6,10 @@ export function setPermissions(permissions) { permissions }; } + +export function updatePermission(id, roles) { + return { + type: types.PERMISSIONS.UPDATE, + payload: { id, roles } + }; +} diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 2b7da47652a..6e68f5c3336 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -6,6 +6,7 @@ import { compareServerVersion, methods } from '../utils'; import database from '../database'; import log from '../../utils/log'; import reduxStore from '../createStore'; +import RocketChat from '../rocketchat'; import protectedFunction from './helpers/protectedFunction'; import { setPermissions as setPermissionsAction } from '../../actions/permissions'; @@ -128,7 +129,7 @@ export function getPermissions() { const db = database.active; const permissionsCollection = db.get('permissions'); const allRecords = await permissionsCollection.query().fetch(); - + RocketChat.subscribe('stream-notify-logged', 'permissions-changed'); // if server version is lower than 0.73.0, fetches from old api if (compareServerVersion(serverVersion, '0.73.0', methods.lowerThan)) { // RC 0.66.0 diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 6e7b3bcb217..bcff9e30037 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -63,6 +63,7 @@ import UserPreferences from './userPreferences'; import { Encryption } from './encryption'; import EventEmitter from '../utils/events'; import { sanitizeLikeString } from './database/utils'; +import { updatePermission } from '../actions/permissions'; import { TEAM_TYPE } from '../definition/ITeam'; const TOKEN_KEY = 'reactnativemeteor_usertoken'; @@ -310,6 +311,21 @@ const RocketChat = { } catch { // We can't create a new record since we don't receive the user._id } + } else if (/permissions-changed/.test(eventName)) { + const { _id, roles } = ddpMessage.fields.args[1]; + const db = database.active; + const permissionsCollection = db.get('permissions'); + try { + const permissionsRecord = await permissionsCollection.find(_id); + await db.action(async() => { + await permissionsRecord.update((u) => { + u.roles = roles; + }); + }); + reduxStore.dispatch(updatePermission(_id, roles)); + } catch (err) { + // + } } else if (/Users:NameChanged/.test(eventName)) { const userNameChanged = ddpMessage.fields.args[0]; const db = database.active; diff --git a/app/reducers/permissions.js b/app/reducers/permissions.js index 1b3a14ec210..dbba0e1077b 100644 --- a/app/reducers/permissions.js +++ b/app/reducers/permissions.js @@ -8,6 +8,11 @@ export default function permissions(state = initialState, action) { switch (action.type) { case PERMISSIONS.SET: return action.permissions; + case PERMISSIONS.UPDATE: + return { + ...state, + [action.payload.id]: action.payload.roles + }; default: return state; } From 88191b965a6cec03190202f652bddc2b31f604dd Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Fri, 2 Jul 2021 00:51:19 +0800 Subject: [PATCH 158/177] [IMPROVE] Subscribe to roles (#2992) * [CHORE] Subscribe to Roles * subscribe to roles-change * add subscribe for stream-roles * fixed subscribe roles * Add componentDidUpdate to RoomMembersView and propType * Update componentDidUpdate in RoomMembersView, roles reducer, getRoles method and actionType * Minor tweaks * Remove componentDidUpdate * Fix add role * Fix initialState and remove role * Minor try/catch fix * Fix lint * Fix offline first Co-authored-by: Diego Mello <diegolmello@gmail.com> Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> --- app/actions/actionsTypes.js | 1 + app/actions/roles.js | 20 ++++++++++ app/lib/methods/getRoles.js | 60 +++++++++++++++++++++++++++++- app/lib/rocketchat.js | 5 ++- app/reducers/index.js | 4 +- app/reducers/permissions.js | 4 +- app/reducers/roles.js | 22 +++++++++++ app/sagas/login.js | 1 + app/sagas/selectServer.js | 1 + app/views/RoomInfoView/index.js | 22 ++++------- app/views/RoomMembersView/index.js | 3 +- 11 files changed, 121 insertions(+), 22 deletions(-) create mode 100644 app/actions/roles.js create mode 100644 app/reducers/roles.js diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index 6bb1690095c..7bba8309fe4 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -72,3 +72,4 @@ export const ENTERPRISE_MODULES = createRequestTypes('ENTERPRISE_MODULES', ['CLE export const ENCRYPTION = createRequestTypes('ENCRYPTION', ['INIT', 'STOP', 'DECODE_KEY', 'SET', 'SET_BANNER']); export const PERMISSIONS = createRequestTypes('PERMISSIONS', ['SET', 'UPDATE']); +export const ROLES = createRequestTypes('ROLES', ['SET', 'UPDATE', 'REMOVE']); diff --git a/app/actions/roles.js b/app/actions/roles.js new file mode 100644 index 00000000000..8ee30425b6e --- /dev/null +++ b/app/actions/roles.js @@ -0,0 +1,20 @@ +import * as types from './actionsTypes'; + +export function setRoles(roles) { + return { + type: types.ROLES.SET, + roles + }; +} +export function updateRoles(id, desc) { + return { + type: types.ROLES.UPDATE, + payload: { id, desc } + }; +} +export function removeRoles(id) { + return { + type: types.ROLES.REMOVE, + payload: { id } + }; +} diff --git a/app/lib/methods/getRoles.js b/app/lib/methods/getRoles.js index df22d382be4..98a3895e393 100644 --- a/app/lib/methods/getRoles.js +++ b/app/lib/methods/getRoles.js @@ -2,9 +2,66 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import database from '../database'; import log from '../../utils/log'; +import reduxStore from '../createStore'; import protectedFunction from './helpers/protectedFunction'; +import { + removeRoles, setRoles as setRolesAction, updateRoles +} from '../../actions/roles'; -export default function() { +export async function setRoles() { + const db = database.active; + const rolesCollection = db.collections.get('roles'); + const allRoles = await rolesCollection.query().fetch(); + const parsed = allRoles.reduce((acc, item) => ({ ...acc, [item.id]: item.description || item.id }), {}); + reduxStore.dispatch(setRolesAction(parsed)); +} + +export async function onRolesChanged(ddpMessage) { + const { type, _id, description } = ddpMessage.fields.args[0]; + if (/changed/.test(type)) { + const db = database.active; + const rolesCollection = db.get('roles'); + try { + const rolesRecord = await rolesCollection.find(_id); + try { + await db.action(async() => { + await rolesRecord.update((u) => { + u.description = description; + }); + }); + } catch (e) { + log(e); + } + reduxStore.dispatch(updateRoles(_id, description)); + } catch (err) { + try { + await db.action(async() => { + await rolesCollection.create((post) => { + post._raw = sanitizedRaw({ id: _id, description }, rolesCollection.schema); + }); + }); + } catch (e) { + log(e); + } + reduxStore.dispatch(updateRoles(_id, description || _id)); + } + } + if (/removed/.test(type)) { + const db = database.active; + const rolesCollection = db.get('roles'); + try { + const rolesRecord = await rolesCollection.find(_id); + await db.action(async() => { + await rolesRecord.destroyPermanently(); + }); + reduxStore.dispatch(removeRoles(_id)); + } catch (err) { + console.log(err); + } + } +} + +export function getRoles() { const db = database.active; return new Promise(async(resolve) => { try { @@ -50,6 +107,7 @@ export default function() { } catch (e) { log(e); } + setRoles(); return allRecords.length; }); return resolve(); diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index bcff9e30037..59b85b73d63 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -37,7 +37,7 @@ import { getEnterpriseModules, setEnterpriseModules, hasLicense, isOmnichannelModuleAvailable } from './methods/enterpriseModules'; import getSlashCommands from './methods/getSlashCommands'; -import getRoles from './methods/getRoles'; +import { getRoles, setRoles, onRolesChanged } from './methods/getRoles'; import canOpenRoom from './methods/canOpenRoom'; import triggerBlockAction, { triggerSubmitView, triggerCancel } from './methods/actions'; @@ -275,6 +275,8 @@ const RocketChat = { this.usersListener = this.sdk.onStreamData('users', protectedFunction(ddpMessage => RocketChat._setUser(ddpMessage))); + this.rolesListener = this.sdk.onStreamData('stream-roles', protectedFunction(ddpMessage => onRolesChanged(ddpMessage))); + this.notifyLoggedListener = this.sdk.onStreamData('stream-notify-logged', protectedFunction(async(ddpMessage) => { const { eventName } = ddpMessage.fields; if (/user-status/.test(eventName)) { @@ -859,6 +861,7 @@ const RocketChat = { isOmnichannelModuleAvailable, getSlashCommands, getRoles, + setRoles, parseSettings: settings => settings.reduce((ret, item) => { ret[item._id] = defaultSettings[item._id] && item[defaultSettings[item._id].type]; if (item._id === 'Hide_System_Messages') { diff --git a/app/reducers/index.js b/app/reducers/index.js index dfee5f3eb9c..eb8f09d82ad 100644 --- a/app/reducers/index.js +++ b/app/reducers/index.js @@ -19,6 +19,7 @@ import createDiscussion from './createDiscussion'; import enterpriseModules from './enterpriseModules'; import encryption from './encryption'; import permissions from './permissions'; +import roles from './roles'; import inquiry from '../ee/omnichannel/reducers/inquiry'; @@ -43,5 +44,6 @@ export default combineReducers({ inquiry, enterpriseModules, encryption, - permissions + permissions, + roles }); diff --git a/app/reducers/permissions.js b/app/reducers/permissions.js index dbba0e1077b..034c514208a 100644 --- a/app/reducers/permissions.js +++ b/app/reducers/permissions.js @@ -1,8 +1,6 @@ import { PERMISSIONS } from '../actions/actionsTypes'; -const initialState = { - permissions: {} -}; +const initialState = {}; export default function permissions(state = initialState, action) { switch (action.type) { diff --git a/app/reducers/roles.js b/app/reducers/roles.js new file mode 100644 index 00000000000..93cbffcb080 --- /dev/null +++ b/app/reducers/roles.js @@ -0,0 +1,22 @@ +import { ROLES } from '../actions/actionsTypes'; + +const initialState = {}; + +export default function permissions(state = initialState, action) { + switch (action.type) { + case ROLES.SET: + return action.roles; + case ROLES.UPDATE: + return { + ...state, + [action.payload.id]: action.payload.desc || action.payload.id + }; + case ROLES.REMOVE: { + const newState = { ...state }; + delete newState[action.payload.id]; + return newState; + } + default: + return state; + } +} diff --git a/app/sagas/login.js b/app/sagas/login.js index 77eda761156..de82cfb7e11 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -90,6 +90,7 @@ const fetchCustomEmojis = function* fetchCustomEmojis() { }; const fetchRoles = function* fetchRoles() { + RocketChat.subscribe('stream-roles', 'roles'); yield RocketChat.getRoles(); }; diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index d367274a30c..2abf4706179 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -125,6 +125,7 @@ const handleSelectServer = function* handleSelectServer({ server, version, fetch RocketChat.setSettings(); RocketChat.setCustomEmojis(); RocketChat.setPermissions(); + RocketChat.setRoles(); RocketChat.setEnterpriseModules(); let serverInfo; diff --git a/app/views/RoomInfoView/index.js b/app/views/RoomInfoView/index.js index 93a7e3a16fe..a966463bf65 100644 --- a/app/views/RoomInfoView/index.js +++ b/app/views/RoomInfoView/index.js @@ -6,7 +6,6 @@ import { connect } from 'react-redux'; import UAParser from 'ua-parser-js'; import isEmpty from 'lodash/isEmpty'; -import database from '../../lib/database'; import { CustomIcon } from '../../lib/Icons'; import Status from '../../containers/Status'; import Avatar from '../../containers/Avatar'; @@ -55,7 +54,8 @@ class RoomInfoView extends React.Component { theme: PropTypes.string, isMasterDetail: PropTypes.bool, jitsiEnabled: PropTypes.bool, - editRoomPermission: PropTypes.array + editRoomPermission: PropTypes.array, + roles: PropTypes.array } constructor(props) { @@ -133,18 +133,9 @@ class RoomInfoView extends React.Component { return room.t === 'l'; } - getRoleDescription = async(id) => { - const db = database.active; - try { - const rolesCollection = db.get('roles'); - const role = await rolesCollection.find(id); - if (role) { - return role.description; - } - return null; - } catch (e) { - return null; - } + getRoleDescription = (id) => { + const { roles } = this.props; + return roles[id]; }; loadVisitor = async() => { @@ -378,7 +369,8 @@ const mapStateToProps = state => ({ rooms: state.room.rooms, isMasterDetail: state.app.isMasterDetail, jitsiEnabled: state.settings.Jitsi_Enabled || false, - editRoomPermission: state.permissions['edit-room'] + editRoomPermission: state.permissions['edit-room'], + roles: state.roles }); export default connect(mapStateToProps)(withTheme(RoomInfoView)); diff --git a/app/views/RoomMembersView/index.js b/app/views/RoomMembersView/index.js index 5f0deb32695..aaa0c98f908 100644 --- a/app/views/RoomMembersView/index.js +++ b/app/views/RoomMembersView/index.js @@ -49,7 +49,8 @@ class RoomMembersView extends React.Component { room: PropTypes.object, user: PropTypes.shape({ id: PropTypes.string, - token: PropTypes.string + token: PropTypes.string, + roles: PropTypes.array }), showActionSheet: PropTypes.func, theme: PropTypes.string, From d547b6129fd1ccf9f1cf5f76c61db988c23fb72e Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Thu, 1 Jul 2021 15:30:55 -0400 Subject: [PATCH 159/177] [IMPROVE] Subscribe to settings (#3222) * Add action and reducer * Add streamNotifyAll listener * Minor tweak * Minor tweak * Fix update not taking in consideration other type columnns Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/actions/actionsTypes.js | 2 +- app/actions/settings.js | 7 +++++++ app/lib/methods/getSettings.js | 1 + app/lib/rocketchat.js | 32 ++++++++++++++++++++++++++++++++ app/reducers/settings.js | 5 +++++ 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index 7bba8309fe4..0790b7bad97 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -66,7 +66,7 @@ export const INVITE_LINKS = createRequestTypes('INVITE_LINKS', [ 'CLEAR', ...defaultTypes ]); -export const SETTINGS = createRequestTypes('SETTINGS', ['CLEAR', 'ADD']); +export const SETTINGS = createRequestTypes('SETTINGS', ['CLEAR', 'ADD', 'UPDATE']); export const APP_STATE = createRequestTypes('APP_STATE', ['FOREGROUND', 'BACKGROUND']); export const ENTERPRISE_MODULES = createRequestTypes('ENTERPRISE_MODULES', ['CLEAR', 'SET']); export const ENCRYPTION = createRequestTypes('ENCRYPTION', ['INIT', 'STOP', 'DECODE_KEY', 'SET', 'SET_BANNER']); diff --git a/app/actions/settings.js b/app/actions/settings.js index 381958c54c2..6fae375bc54 100644 --- a/app/actions/settings.js +++ b/app/actions/settings.js @@ -7,6 +7,13 @@ export function addSettings(settings) { }; } +export function updateSettings(id, value) { + return { + type: SETTINGS.UPDATE, + payload: { id, value } + }; +} + export function clearSettings() { return { type: SETTINGS.CLEAR diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index 6935631ef93..f68995af83e 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -146,6 +146,7 @@ export default async function() { const filteredSettingsIds = filteredSettings.map(s => s._id); reduxStore.dispatch(addSettings(this.parseSettings(filteredSettings))); + RocketChat.subscribe('stream-notify-all', 'public-settings-changed'); // filter server info const serverInfo = filteredSettings.filter(i1 => serverInfoKeys.includes(i1._id)); diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 59b85b73d63..dcb3358cb7b 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -65,6 +65,7 @@ import EventEmitter from '../utils/events'; import { sanitizeLikeString } from './database/utils'; import { updatePermission } from '../actions/permissions'; import { TEAM_TYPE } from '../definition/ITeam'; +import { updateSettings } from '../actions/settings'; const TOKEN_KEY = 'reactnativemeteor_usertoken'; const CURRENT_SERVER = 'currentServer'; @@ -226,6 +227,14 @@ const RocketChat = { this.usersListener.then(this.stopListener); } + if (this.notifyAllListener) { + this.notifyAllListener.then(this.stopListener); + } + + if (this.rolesListener) { + this.rolesListener.then(this.stopListener); + } + if (this.notifyLoggedListener) { this.notifyLoggedListener.then(this.stopListener); } @@ -275,6 +284,29 @@ const RocketChat = { this.usersListener = this.sdk.onStreamData('users', protectedFunction(ddpMessage => RocketChat._setUser(ddpMessage))); + this.notifyAllListener = this.sdk.onStreamData('stream-notify-all', protectedFunction(async(ddpMessage) => { + const { eventName } = ddpMessage.fields; + if (/public-settings-changed/.test(eventName)) { + const { _id, value } = ddpMessage.fields.args[1]; + const db = database.active; + const settingsCollection = db.get('settings'); + try { + const settingsRecord = await settingsCollection.find(_id); + const { type } = defaultSettings[_id]; + if (type) { + await db.action(async() => { + await settingsRecord.update((u) => { + u[type] = value; + }); + }); + } + reduxStore.dispatch(updateSettings(_id, value)); + } catch (e) { + log(e); + } + } + })); + this.rolesListener = this.sdk.onStreamData('stream-roles', protectedFunction(ddpMessage => onRolesChanged(ddpMessage))); this.notifyLoggedListener = this.sdk.onStreamData('stream-notify-logged', protectedFunction(async(ddpMessage) => { diff --git a/app/reducers/settings.js b/app/reducers/settings.js index 9e037b1d093..6e9ab5005ed 100644 --- a/app/reducers/settings.js +++ b/app/reducers/settings.js @@ -9,6 +9,11 @@ export default (state = initialState, action) => { ...state, ...action.payload }; + case SETTINGS.UPDATE: + return { + ...state, + [action.payload.id]: action.payload.value + }; case SETTINGS.CLEAR: return initialState; default: From 8517b1fd138de84be8f81f7975b6a9f3670a169b Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 2 Jul 2021 14:39:39 -0300 Subject: [PATCH 160/177] Chore: Add Lint to E2E tests (#3217) * Added eslint plugin dependencie and fixed the eslint.js * E2E Tests folder Assorted * Linted all e2e, just e2e/docker that don't changed * Update 09-jumptomessage.spec.js * Removed async from describe function * Remove outdated detox linter lib * Add overrides to eslintrc Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- .eslintignore | 2 +- .eslintrc.js | 23 +- e2e/data.js | 143 ++++---- e2e/data/data.cloud.js | 138 ++++---- e2e/data/data.docker.js | 144 ++++---- e2e/helpers/app.js | 171 +++++---- e2e/helpers/data_setup.js | 328 +++++++++--------- e2e/helpers/random.js | 2 +- e2e/tests/assorted/01-e2eencryption.spec.js | 65 ++-- e2e/tests/assorted/02-broadcast.spec.js | 26 +- e2e/tests/assorted/03-profile.spec.js | 13 +- e2e/tests/assorted/04-setting.spec.js | 15 +- e2e/tests/assorted/05-joinpublicroom.spec.js | 21 +- e2e/tests/assorted/06-status.spec.js | 20 +- e2e/tests/assorted/07-changeserver.spec.js | 9 +- .../assorted/08-joinprotectedroom.spec.js | 17 +- .../assorted/09-joinfromdirectory.spec.js | 33 +- e2e/tests/assorted/10-deleteserver.spec.js | 13 +- e2e/tests/assorted/11-deeplinking.spec.js | 15 +- e2e/tests/assorted/12-i18n.spec.js | 22 +- e2e/tests/init.js | 12 +- e2e/tests/onboarding/01-onboarding.spec.js | 11 +- e2e/tests/onboarding/02-legal.spec.js | 24 +- .../onboarding/03-forgotpassword.spec.js | 7 +- e2e/tests/onboarding/04-createuser.spec.js | 6 +- e2e/tests/onboarding/05-login.spec.js | 11 +- e2e/tests/onboarding/06-roomslist.spec.js | 12 +- .../onboarding/07-server-history.spec.js | 7 +- e2e/tests/room/01-createroom.spec.js | 51 ++- e2e/tests/room/02-room.spec.js | 55 ++- e2e/tests/room/03-roomactions.spec.js | 122 ++++--- e2e/tests/room/04-discussion.spec.js | 31 +- e2e/tests/room/05-threads.spec.js | 39 +-- e2e/tests/room/06-createdmgroup.spec.js | 29 +- e2e/tests/room/07-markasunread.spec.js | 18 +- e2e/tests/room/08-roominfo.spec.js | 86 +++-- e2e/tests/room/09-jumptomessage.spec.js | 24 +- e2e/tests/team/01-createteam.spec.js | 19 +- e2e/tests/team/02-team.spec.js | 63 ++-- e2e/tests/team/03-moveconvert.spec.js | 21 +- 40 files changed, 911 insertions(+), 957 deletions(-) diff --git a/.eslintignore b/.eslintignore index 398578ec481..9594dcce67b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,6 @@ __tests__ node_modules coverage -e2e +e2e/docker android ios \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 31146aefefd..409efb70a77 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -29,7 +29,8 @@ module.exports = { "commonjs": true, "es6": true, "node": true, - "jquery": true + "jquery": true, + "mocha": true }, "rules": { "react/jsx-filename-extension": [1, { @@ -155,5 +156,23 @@ module.exports = { }, "globals": { "__DEV__": true - } + }, + overrides: [ + { + files: ['e2e/**'], + globals: { + by: true, + detox: true, + device: true, + element: true, + expect: true, + waitFor: true + }, + rules: { + 'import/no-extraneous-dependencies': 0, + 'no-await-in-loop': 0, + 'no-restricted-syntax': 0 + } + } + ] }; diff --git a/e2e/data.js b/e2e/data.js index 98257f71d76..4dc093cc6c0 100644 --- a/e2e/data.js +++ b/e2e/data.js @@ -1,75 +1,76 @@ const random = require('./helpers/random'); + const value = random(20); const data = { - server: 'https://mobile.rocket.chat', - adminUser: 'e2e_admin', - adminPassword: 'p7mFh4yLwCRXSnMvG', - alternateServer: 'https://stable.rocket.chat', - users: { - regular: { - username: `userone${ value }`, - password: '123', - email: `mobile+regular${ value }@rocket.chat` - }, - alternate: { - username: `usertwo${ value }`, - password: '123', - email: `mobile+alternate${ value }@rocket.chat`, - totpSecret: 'NA4GOMZGHBQSK6KEFRVT62DMGJJGSYZJFZIHO3ZOGVXWCYZ6MMZQ' - }, - profileChanges: { - username: `userthree${ value }`, - password: '123', - email: `mobile+profileChanges${ value }@rocket.chat` - }, - existing: { - username: `existinguser${ value }`, - password: '123', - email: `mobile+existing${ value }@rocket.chat` - } - }, - channels: { - detoxpublic: { - name: 'detox-public' - }, - detoxpublicprotected: { - name: 'detox-public-protected', - joinCode: '123' - } - }, - groups: { - private: { - name: `detox-private-${ value }` - }, - alternate: { - name: `detox-alternate-${ value }` - } - }, - teams: { - private: { - name: `detox-team-${ value }` - } - }, - registeringUser: { - username: `newuser${ value }`, - password: `password${ value }`, - email: `mobile+registering${ value }@rocket.chat` - }, - registeringUser2: { - username: `newusertwo${ value }`, - password: `passwordtwo${ value }`, - email: `mobile+registeringtwo${ value }@rocket.chat` - }, - registeringUser3: { - username: `newuserthree${ value }`, - password: `passwordthree${ value }`, - email: `mobile+registeringthree${ value }@rocket.chat` - }, - registeringUser4: { - username: `newuserfour${ value }`, - password: `passwordfour${ value }`, - email: `mobile+registeringfour${ value }@rocket.chat` - }, - random: value -} + server: 'https://mobile.rocket.chat', + adminUser: 'e2e_admin', + adminPassword: 'p7mFh4yLwCRXSnMvG', + alternateServer: 'https://stable.rocket.chat', + users: { + regular: { + username: `userone${ value }`, + password: '123', + email: `mobile+regular${ value }@rocket.chat` + }, + alternate: { + username: `usertwo${ value }`, + password: '123', + email: `mobile+alternate${ value }@rocket.chat`, + totpSecret: 'NA4GOMZGHBQSK6KEFRVT62DMGJJGSYZJFZIHO3ZOGVXWCYZ6MMZQ' + }, + profileChanges: { + username: `userthree${ value }`, + password: '123', + email: `mobile+profileChanges${ value }@rocket.chat` + }, + existing: { + username: `existinguser${ value }`, + password: '123', + email: `mobile+existing${ value }@rocket.chat` + } + }, + channels: { + detoxpublic: { + name: 'detox-public' + }, + detoxpublicprotected: { + name: 'detox-public-protected', + joinCode: '123' + } + }, + groups: { + private: { + name: `detox-private-${ value }` + }, + alternate: { + name: `detox-alternate-${ value }` + } + }, + teams: { + private: { + name: `detox-team-${ value }` + } + }, + registeringUser: { + username: `newuser${ value }`, + password: `password${ value }`, + email: `mobile+registering${ value }@rocket.chat` + }, + registeringUser2: { + username: `newusertwo${ value }`, + password: `passwordtwo${ value }`, + email: `mobile+registeringtwo${ value }@rocket.chat` + }, + registeringUser3: { + username: `newuserthree${ value }`, + password: `passwordthree${ value }`, + email: `mobile+registeringthree${ value }@rocket.chat` + }, + registeringUser4: { + username: `newuserfour${ value }`, + password: `passwordfour${ value }`, + email: `mobile+registeringfour${ value }@rocket.chat` + }, + random: value +}; module.exports = data; diff --git a/e2e/data/data.cloud.js b/e2e/data/data.cloud.js index c69b72515bd..df98fdd7a7b 100644 --- a/e2e/data/data.cloud.js +++ b/e2e/data/data.cloud.js @@ -1,72 +1,74 @@ +// eslint-disable-next-line import/no-unresolved const random = require('./helpers/random'); + const value = random(20); const data = { - server: 'https://mobile.rocket.chat', - adminUser: 'e2e_admin', - adminPassword: 'p7mFh4yLwCRXSnMvG', - alternateServer: 'https://stable.rocket.chat', - users: { - regular: { - username: `userone${ value }`, - password: '123', - email: `mobile+regular${ value }@rocket.chat` - }, - alternate: { - username: `usertwo${ value }`, - password: '123', - email: `mobile+alternate${ value }@rocket.chat`, - totpSecret: 'NA4GOMZGHBQSK6KEFRVT62DMGJJGSYZJFZIHO3ZOGVXWCYZ6MMZQ' - }, - profileChanges: { - username: `userthree${ value }`, - password: '123', - email: `mobile+profileChanges${ value }@rocket.chat` - }, - existing: { - username: `existinguser${ value }`, - password: '123', - email: `mobile+existing${ value }@rocket.chat` - } - }, - channels: { - detoxpublic: { - name: 'detox-public' - }, - detoxpublicprotected: { - name: 'detox-public-protected', - joinCode: '123' - } - }, - groups: { - private: { - name: `detox-private-${ value }` - } - }, - teams: { - private: { - name: `detox-team-${ value }` - } - }, - registeringUser: { - username: `newuser${ value }`, - password: `password${ value }`, - email: `mobile+registering${ value }@rocket.chat` - }, - registeringUser2: { - username: `newusertwo${ value }`, - password: `passwordtwo${ value }`, - email: `mobile+registeringtwo${ value }@rocket.chat` - }, - registeringUser3: { - username: `newuserthree${ value }`, - password: `passwordthree${ value }`, - email: `mobile+registeringthree${ value }@rocket.chat` - }, - registeringUser4: { - username: `newuserfour${ value }`, - password: `passwordfour${ value }`, - email: `mobile+registeringfour${ value }@rocket.chat` - }, - random: value -} + server: 'https://mobile.rocket.chat', + adminUser: 'e2e_admin', + adminPassword: 'p7mFh4yLwCRXSnMvG', + alternateServer: 'https://stable.rocket.chat', + users: { + regular: { + username: `userone${ value }`, + password: '123', + email: `mobile+regular${ value }@rocket.chat` + }, + alternate: { + username: `usertwo${ value }`, + password: '123', + email: `mobile+alternate${ value }@rocket.chat`, + totpSecret: 'NA4GOMZGHBQSK6KEFRVT62DMGJJGSYZJFZIHO3ZOGVXWCYZ6MMZQ' + }, + profileChanges: { + username: `userthree${ value }`, + password: '123', + email: `mobile+profileChanges${ value }@rocket.chat` + }, + existing: { + username: `existinguser${ value }`, + password: '123', + email: `mobile+existing${ value }@rocket.chat` + } + }, + channels: { + detoxpublic: { + name: 'detox-public' + }, + detoxpublicprotected: { + name: 'detox-public-protected', + joinCode: '123' + } + }, + groups: { + private: { + name: `detox-private-${ value }` + } + }, + teams: { + private: { + name: `detox-team-${ value }` + } + }, + registeringUser: { + username: `newuser${ value }`, + password: `password${ value }`, + email: `mobile+registering${ value }@rocket.chat` + }, + registeringUser2: { + username: `newusertwo${ value }`, + password: `passwordtwo${ value }`, + email: `mobile+registeringtwo${ value }@rocket.chat` + }, + registeringUser3: { + username: `newuserthree${ value }`, + password: `passwordthree${ value }`, + email: `mobile+registeringthree${ value }@rocket.chat` + }, + registeringUser4: { + username: `newuserfour${ value }`, + password: `passwordfour${ value }`, + email: `mobile+registeringfour${ value }@rocket.chat` + }, + random: value +}; module.exports = data; diff --git a/e2e/data/data.docker.js b/e2e/data/data.docker.js index 31fb5c8e27d..6c3ce19258a 100644 --- a/e2e/data/data.docker.js +++ b/e2e/data/data.docker.js @@ -1,75 +1,77 @@ +// eslint-disable-next-line import/no-unresolved const random = require('./helpers/random'); + const value = random(20); const data = { - server: 'http://localhost:3000', - adminUser: 'admin', - adminPassword: 'password', - alternateServer: 'https://stable.rocket.chat', - users: { - regular: { - username: `userone${ value }`, - password: '123', - email: `mobile+regular${ value }@rocket.chat` - }, - alternate: { - username: `usertwo${ value }`, - password: '123', - email: `mobile+alternate${ value }@rocket.chat`, - totpSecret: 'NA4GOMZGHBQSK6KEFRVT62DMGJJGSYZJFZIHO3ZOGVXWCYZ6MMZQ' - }, - profileChanges: { - username: `userthree${ value }`, - password: '123', - email: `mobile+profileChanges${ value }@rocket.chat` - }, - existing: { - username: `existinguser${ value }`, - password: '123', - email: `mobile+existing${ value }@rocket.chat` - } - }, - channels: { - detoxpublic: { - name: 'detox-public' - }, - detoxpublicprotected: { - name: 'detox-public-protected', - joinCode: '123' - } - }, - groups: { - private: { - name: `detox-private-${ value }` - }, - alternate: { - name: `detox-alternate-${ value }` - } - }, - teams: { - private: { - name: `detox-team-${ value }` - } - }, - registeringUser: { - username: `newuser${ value }`, - password: `password${ value }`, - email: `mobile+registering${ value }@rocket.chat` - }, - registeringUser2: { - username: `newusertwo${ value }`, - password: `passwordtwo${ value }`, - email: `mobile+registeringtwo${ value }@rocket.chat` - }, - registeringUser3: { - username: `newuserthree${ value }`, - password: `passwordthree${ value }`, - email: `mobile+registeringthree${ value }@rocket.chat` - }, - registeringUser4: { - username: `newuserfour${ value }`, - password: `passwordfour${ value }`, - email: `mobile+registeringfour${ value }@rocket.chat` - }, - random: value -} + server: 'http://localhost:3000', + adminUser: 'admin', + adminPassword: 'password', + alternateServer: 'https://stable.rocket.chat', + users: { + regular: { + username: `userone${ value }`, + password: '123', + email: `mobile+regular${ value }@rocket.chat` + }, + alternate: { + username: `usertwo${ value }`, + password: '123', + email: `mobile+alternate${ value }@rocket.chat`, + totpSecret: 'NA4GOMZGHBQSK6KEFRVT62DMGJJGSYZJFZIHO3ZOGVXWCYZ6MMZQ' + }, + profileChanges: { + username: `userthree${ value }`, + password: '123', + email: `mobile+profileChanges${ value }@rocket.chat` + }, + existing: { + username: `existinguser${ value }`, + password: '123', + email: `mobile+existing${ value }@rocket.chat` + } + }, + channels: { + detoxpublic: { + name: 'detox-public' + }, + detoxpublicprotected: { + name: 'detox-public-protected', + joinCode: '123' + } + }, + groups: { + private: { + name: `detox-private-${ value }` + }, + alternate: { + name: `detox-alternate-${ value }` + } + }, + teams: { + private: { + name: `detox-team-${ value }` + } + }, + registeringUser: { + username: `newuser${ value }`, + password: `password${ value }`, + email: `mobile+registering${ value }@rocket.chat` + }, + registeringUser2: { + username: `newusertwo${ value }`, + password: `passwordtwo${ value }`, + email: `mobile+registeringtwo${ value }@rocket.chat` + }, + registeringUser3: { + username: `newuserthree${ value }`, + password: `passwordthree${ value }`, + email: `mobile+registeringthree${ value }@rocket.chat` + }, + registeringUser4: { + username: `newuserfour${ value }`, + password: `passwordfour${ value }`, + email: `mobile+registeringfour${ value }@rocket.chat` + }, + random: value +}; module.exports = data; diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index 7c71c9f3e17..45a67df5699 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -1,122 +1,119 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../data'); async function navigateToWorkspace(server = data.server) { - await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000); await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).typeText(`${server}\n`); + await element(by.id('new-server-view-input')).typeText(`${ server }\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); await expect(element(by.id('workspace-view'))).toBeVisible(); } async function navigateToLogin(server) { - await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); - await navigateToWorkspace(server); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); + await navigateToWorkspace(server); await element(by.id('workspace-view-login')).tap(); - await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); - await expect(element(by.id('login-view'))).toBeVisible(); + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + await expect(element(by.id('login-view'))).toBeVisible(); } async function navigateToRegister(server) { - await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); - await navigateToWorkspace(server); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); + await navigateToWorkspace(server); await element(by.id('workspace-view-register')).tap(); - await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); } async function login(username, password) { - await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); - await element(by.id('login-view-email')).replaceText(username); - await element(by.id('login-view-password')).replaceText(password); - await element(by.id('login-view-submit')).tap(); - await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(30000); + await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); + await element(by.id('login-view-email')).replaceText(username); + await element(by.id('login-view-password')).replaceText(password); + await element(by.id('login-view-submit')).tap(); + await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(30000); } async function logout() { - await element(by.id('rooms-list-view-sidebar')).tap(); - await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); + await element(by.id('rooms-list-view-sidebar')).tap(); + await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); await waitFor(element(by.id('sidebar-settings'))).toBeVisible().withTimeout(2000); - await element(by.id('sidebar-settings')).tap(); - await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); - await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); - await element(by.id('settings-logout')).tap(); - const logoutAlertMessage = 'You will be logged out of this application.'; - await waitFor(element(by.text(logoutAlertMessage)).atIndex(0)).toExist().withTimeout(10000); - await expect(element(by.text(logoutAlertMessage)).atIndex(0)).toExist(); - await element(by.text('Logout')).tap(); - await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000); - await expect(element(by.id('onboarding-view'))).toBeVisible(); + await element(by.id('sidebar-settings')).tap(); + await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); + await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom'); + await element(by.id('settings-logout')).tap(); + const logoutAlertMessage = 'You will be logged out of this application.'; + await waitFor(element(by.text(logoutAlertMessage)).atIndex(0)).toExist().withTimeout(10000); + await expect(element(by.text(logoutAlertMessage)).atIndex(0)).toExist(); + await element(by.text('Logout')).tap(); + await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000); + await expect(element(by.id('onboarding-view'))).toBeVisible(); } async function mockMessage(message, isThread = false) { - let input = isThread ? 'messagebox-input-thread' : 'messagebox-input'; + const input = isThread ? 'messagebox-input-thread' : 'messagebox-input'; await element(by.id(input)).tap(); await element(by.id(input)).typeText(`${ data.random }${ message }`); await element(by.id('messagebox-send-message')).tap(); await waitFor(element(by.label(`${ data.random }${ message }`))).toExist().withTimeout(60000); - await expect(element(by.label(`${ data.random }${ message }`))).toExist(); - await element(by.label(`${ data.random }${ message }`)).atIndex(0).tap(); -}; + await expect(element(by.label(`${ data.random }${ message }`))).toExist(); + await element(by.label(`${ data.random }${ message }`)).atIndex(0).tap(); +} -async function starMessage(message){ - const messageLabel = `${ data.random }${ message }` - await element(by.label(messageLabel)).atIndex(0).longPress(); - await expect(element(by.id('action-sheet'))).toExist(); - await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Star')).atIndex(0).tap(); - await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); -}; +async function starMessage(message) { + const messageLabel = `${ data.random }${ message }`; + await element(by.label(messageLabel)).atIndex(0).longPress(); + await expect(element(by.id('action-sheet'))).toExist(); + await expect(element(by.id('action-sheet-handle'))).toBeVisible(); + await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); + await element(by.label('Star')).atIndex(0).tap(); + await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); +} -async function pinMessage(message){ - const messageLabel = `${ data.random }${ message }` - await waitFor(element(by.label(messageLabel)).atIndex(0)).toExist(); - await element(by.label(messageLabel)).atIndex(0).longPress(); - await expect(element(by.id('action-sheet'))).toExist(); - await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); - await element(by.label('Pin')).atIndex(0).tap(); - await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); +async function pinMessage(message) { + const messageLabel = `${ data.random }${ message }`; + await waitFor(element(by.label(messageLabel)).atIndex(0)).toExist(); + await element(by.label(messageLabel)).atIndex(0).longPress(); + await expect(element(by.id('action-sheet'))).toExist(); + await expect(element(by.id('action-sheet-handle'))).toBeVisible(); + await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); + await element(by.label('Pin')).atIndex(0).tap(); + await waitFor(element(by.id('action-sheet'))).not.toExist().withTimeout(5000); } -async function dismissReviewNag(){ - await waitFor(element(by.text('Are you enjoying this app?'))).toExist().withTimeout(60000); - await element(by.label('No').and(by.type('_UIAlertControllerActionView'))).tap(); // Tap `no` on ask for review alert +async function dismissReviewNag() { + await waitFor(element(by.text('Are you enjoying this app?'))).toExist().withTimeout(60000); + await element(by.label('No').and(by.type('_UIAlertControllerActionView'))).tap(); // Tap `no` on ask for review alert } async function tapBack() { - await element(by.id('header-back')).atIndex(0).tap(); + await element(by.id('header-back')).atIndex(0).tap(); } -async function sleep(ms) { - return new Promise(res => setTimeout(res, ms)); +function sleep(ms) { + return new Promise(res => setTimeout(res, ms)); } async function searchRoom(room) { - await element(by.id('rooms-list-view-search')).tap(); + await element(by.id('rooms-list-view-search')).tap(); await expect(element(by.id('rooms-list-view-search-input'))).toExist(); await waitFor(element(by.id('rooms-list-view-search-input'))).toExist().withTimeout(5000); - await element(by.id('rooms-list-view-search-input')).typeText(room); - await sleep(300); + await element(by.id('rooms-list-view-search-input')).typeText(room); + await sleep(300); await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); } -async function tryTapping(theElement, timeout, longtap = false){ +async function tryTapping(theElement, timeout, longtap = false) { try { - if(longtap){ - await theElement.longPress() - } else { - await theElement.tap() - } - } catch(e) { - if(timeout <= 0){ //TODO: Maths. How closely has the timeout been honoured here? - throw e + if (longtap) { + await theElement.longPress(); + } else { + await theElement.tap(); + } + } catch (e) { + if (timeout <= 0) { // TODO: Maths. How closely has the timeout been honoured here? + throw e; } - await sleep(100) - await tryTapping(theElement, timeout - 100) + await sleep(100); + await tryTapping(theElement, timeout - 100); } } @@ -126,21 +123,21 @@ const checkServer = async(server) => { await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); await waitFor(element(by.label(label))).toBeVisible().withTimeout(10000); await element(by.id('sidebar-close-drawer')).tap(); -} +}; module.exports = { - navigateToWorkspace, - navigateToLogin, - navigateToRegister, - login, - logout, - mockMessage, - starMessage, - pinMessage, - dismissReviewNag, - tapBack, - sleep, - searchRoom, - tryTapping, - checkServer -}; \ No newline at end of file + navigateToWorkspace, + navigateToLogin, + navigateToRegister, + login, + logout, + mockMessage, + starMessage, + pinMessage, + dismissReviewNag, + tapBack, + sleep, + searchRoom, + tryTapping, + checkServer +}; diff --git a/e2e/helpers/data_setup.js b/e2e/helpers/data_setup.js index 7e744f54a0a..fd02a20c5b2 100644 --- a/e2e/helpers/data_setup.js +++ b/e2e/helpers/data_setup.js @@ -6,176 +6,174 @@ const TEAM_TYPE = { PRIVATE: 1 }; -let server = data.server +const { server } = data; const rocketchat = axios.create({ - baseURL: `${server}/api/v1/`, - headers: { - 'Content-Type': 'application/json;charset=UTF-8', - } -}) - -const login = async (username, password) => { - console.log(`Logging in as user ${username}`) - const response = await rocketchat.post('login', { - "user": username, - "password": password - }) - const userId = response.data.data.userId - const authToken = response.data.data.authToken - rocketchat.defaults.headers.common['X-User-Id'] = userId - rocketchat.defaults.headers.common['X-Auth-Token'] = authToken - return { authToken, userId }; -} - -const createUser = async (username, password, name, email) => { - console.log(`Creating user ${username}`) - try { - await rocketchat.post('users.create', { - "username": username, - "password": password, - "name": name, - "email": email - }) - } catch (error) { - console.log(JSON.stringify(error)) - throw "Failed to create user" - } -} - -const createChannelIfNotExists = async (channelname) => { - console.log(`Creating public channel ${channelname}`) - try { - const room = await rocketchat.post('channels.create', { - "name": channelname - }) - return room - } catch (createError) { - try { //Maybe it exists already? - const room = rocketchat.get(`channels.info?roomName=${channelname}`) - return room - } catch (infoError) { - console.log(JSON.stringify(createError)) - console.log(JSON.stringify(infoError)) - throw "Failed to find or create public channel" - } - } -} - -const createTeamIfNotExists = async (teamname) => { - console.log(`Creating private team ${teamname}`) - try { - await rocketchat.post('teams.create', { - "name": teamname, - "type": TEAM_TYPE.PRIVATE - }) - } catch (createError) { - try { //Maybe it exists already? - await rocketchat.get(`teams.info?teamName=${teamname}`) - } catch (infoError) { - console.log(JSON.stringify(createError)) - console.log(JSON.stringify(infoError)) - throw "Failed to find or create private team" - } - } -} - -const createGroupIfNotExists = async (groupname) => { - console.log(`Creating private group ${groupname}`) - try { - await rocketchat.post('groups.create', { - "name": groupname - }) - } catch (createError) { - try { //Maybe it exists already? - await rocketchat.get(`groups.info?roomName=${groupname}`) - } catch (infoError) { - console.log(JSON.stringify(createError)) - console.log(JSON.stringify(infoError)) - throw "Failed to find or create private group" - } - } -} - -const changeChannelJoinCode = async (roomId, joinCode) => { - console.log(`Changing channel Join Code ${roomId}`) - try { - await rocketchat.post('method.call/saveRoomSettings', { - message: JSON.stringify({ - method: 'saveRoomSettings', - params: [ - roomId, - { joinCode } - ] - }) - }) - } catch (createError) { - console.log(JSON.stringify(createError)) - throw "Failed to create protected channel" - } -} - -const sendMessage = async (user, channel, msg) => { - console.log(`Sending message to ${channel}`) - try { - await login(user.username, user.password); - await rocketchat.post('chat.postMessage', { channel, msg }); - } catch (infoError) { - console.log(JSON.stringify(infoError)) - throw "Failed to find or create private group" - } -} - -const setup = async () => { - await login(data.adminUser, data.adminPassword) - - for (var userKey in data.users) { - if (data.users.hasOwnProperty(userKey)) { - const user = data.users[userKey] - await createUser(user.username, user.password, user.username, user.email) - } - } - - for (var channelKey in data.channels) { - if (data.channels.hasOwnProperty(channelKey)) { - const channel = data.channels[channelKey] - const { data: { channel: { _id } } } = await createChannelIfNotExists(channel.name) - - if (channel.joinCode) { - await changeChannelJoinCode(_id, channel.joinCode); - } - } - } - - await login(data.users.regular.username, data.users.regular.password) - - for (var groupKey in data.groups) { - if (data.groups.hasOwnProperty(groupKey)) { - const group = data.groups[groupKey] - await createGroupIfNotExists(group.name) - } - } - - for (var teamKey in data.teams) { - if (data.teams.hasOwnProperty(teamKey)) { - const team = data.teams[teamKey] - await createTeamIfNotExists(team.name) - } - } - - return -} + baseURL: `${ server }/api/v1/`, + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + } +}); + +const login = async(username, password) => { + console.log(`Logging in as user ${ username }`); + const response = await rocketchat.post('login', { + user: username, + password + }); + const { userId } = response.data.data; + const { authToken } = response.data.data; + rocketchat.defaults.headers.common['X-User-Id'] = userId; + rocketchat.defaults.headers.common['X-Auth-Token'] = authToken; + return { authToken, userId }; +}; + +const createUser = async(username, password, name, email) => { + console.log(`Creating user ${ username }`); + try { + await rocketchat.post('users.create', { + username, + password, + name, + email + }); + } catch (error) { + console.log(JSON.stringify(error)); + throw new Error('Failed to create user'); + } +}; + +const createChannelIfNotExists = async(channelname) => { + console.log(`Creating public channel ${ channelname }`); + try { + const room = await rocketchat.post('channels.create', { + name: channelname + }); + return room; + } catch (createError) { + try { // Maybe it exists already? + const room = rocketchat.get(`channels.info?roomName=${ channelname }`); + return room; + } catch (infoError) { + console.log(JSON.stringify(createError)); + console.log(JSON.stringify(infoError)); + throw new Error('Failed to find or create public channel'); + } + } +}; + +const createTeamIfNotExists = async(teamname) => { + console.log(`Creating private team ${ teamname }`); + try { + await rocketchat.post('teams.create', { + name: teamname, + type: TEAM_TYPE.PRIVATE + }); + } catch (createError) { + try { // Maybe it exists already? + await rocketchat.get(`teams.info?teamName=${ teamname }`); + } catch (infoError) { + console.log(JSON.stringify(createError)); + console.log(JSON.stringify(infoError)); + throw new Error('Failed to find or create private team'); + } + } +}; + +const createGroupIfNotExists = async(groupname) => { + console.log(`Creating private group ${ groupname }`); + try { + await rocketchat.post('groups.create', { + name: groupname + }); + } catch (createError) { + try { // Maybe it exists already? + await rocketchat.get(`groups.info?roomName=${ groupname }`); + } catch (infoError) { + console.log(JSON.stringify(createError)); + console.log(JSON.stringify(infoError)); + throw new Error('Failed to find or create private group'); + } + } +}; + +const changeChannelJoinCode = async(roomId, joinCode) => { + console.log(`Changing channel Join Code ${ roomId }`); + try { + await rocketchat.post('method.call/saveRoomSettings', { + message: JSON.stringify({ + method: 'saveRoomSettings', + params: [ + roomId, + { joinCode } + ] + }) + }); + } catch (createError) { + console.log(JSON.stringify(createError)); + throw new Error('Failed to create protected channel'); + } +}; + +const sendMessage = async(user, channel, msg) => { + console.log(`Sending message to ${ channel }`); + try { + await login(user.username, user.password); + await rocketchat.post('chat.postMessage', { channel, msg }); + } catch (infoError) { + console.log(JSON.stringify(infoError)); + throw new Error('Failed to find or create private group'); + } +}; + +const setup = async() => { + await login(data.adminUser, data.adminPassword); + + for (const userKey in data.users) { + if (Object.prototype.hasOwnProperty.call(data.users, userKey)) { + const user = data.users[userKey]; + await createUser(user.username, user.password, user.username, user.email); + } + } + + for (const channelKey in data.channels) { + if (Object.prototype.hasOwnProperty.call(data.channels, channelKey)) { + const channel = data.channels[channelKey]; + const { data: { channel: { _id } } } = await createChannelIfNotExists(channel.name); + + if (channel.joinCode) { + await changeChannelJoinCode(_id, channel.joinCode); + } + } + } + + await login(data.users.regular.username, data.users.regular.password); + + for (const groupKey in data.groups) { + if (Object.prototype.hasOwnProperty.call(data.groups, groupKey)) { + const group = data.groups[groupKey]; + await createGroupIfNotExists(group.name); + } + } + + for (const teamKey in data.teams) { + if (Object.prototype.hasOwnProperty.call(data.teams, teamKey)) { + const team = data.teams[teamKey]; + await createTeamIfNotExists(team.name); + } + } +}; const get = (endpoint) => { - console.log(`GET /${ endpoint }`) - return rocketchat.get(endpoint); -} + console.log(`GET /${ endpoint }`); + return rocketchat.get(endpoint); +}; const post = (endpoint, body) => { - console.log(`POST /${ endpoint } ${ JSON.stringify(body) }`) - return rocketchat.post(endpoint, body); -} + console.log(`POST /${ endpoint } ${ JSON.stringify(body) }`); + return rocketchat.post(endpoint, body); +}; module.exports = { - setup, sendMessage, get, post, login -} \ No newline at end of file + setup, sendMessage, get, post, login +}; diff --git a/e2e/helpers/random.js b/e2e/helpers/random.js index d26e832e3c4..d41575c0795 100644 --- a/e2e/helpers/random.js +++ b/e2e/helpers/random.js @@ -6,4 +6,4 @@ function random(length) { } return text; } -module.exports = random; \ No newline at end of file +module.exports = random; diff --git a/e2e/tests/assorted/01-e2eencryption.spec.js b/e2e/tests/assorted/01-e2eencryption.spec.js index 423d9615208..de5ccb225a3 100644 --- a/e2e/tests/assorted/01-e2eencryption.spec.js +++ b/e2e/tests/assorted/01-e2eencryption.spec.js @@ -1,12 +1,11 @@ const { - expect, element, by, waitFor -} = require('detox'); -const { navigateToLogin, login, sleep, tapBack, mockMessage, searchRoom, logout } = require('../../helpers/app'); + navigateToLogin, login, sleep, tapBack, mockMessage, searchRoom, logout +} = require('../../helpers/app'); const data = require('../../data'); -const testuser = data.users.regular -const otheruser = data.users.alternate +const testuser = data.users.regular; +const otheruser = data.users.alternate; const checkServer = async(server) => { const label = `Connected to ${ server }`; @@ -14,11 +13,11 @@ const checkServer = async(server) => { await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000); await waitFor(element(by.label(label))).toBeVisible().withTimeout(60000); await element(by.id('sidebar-close-drawer')).tap(); -} +}; const checkBanner = async() => { await waitFor(element(by.id('listheader-encryption').withDescendant(by.label('Save Your Encryption Password')))).toBeVisible().withTimeout(10000); -} +}; async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); @@ -45,36 +44,36 @@ describe('E2E Encryption', () => { const room = `encrypted${ data.random }`; const newPassword = 'abc'; - before(async () => { + before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); await login(testuser.username, testuser.password); }); - describe('Banner', async() => { - describe('Render', async () => { - it('should have encryption badge', async () => { + describe('Banner', () => { + describe('Render', () => { + it('should have encryption badge', async() => { await checkBanner(); }); }); - - describe('Usage', async () => { + + describe('Usage', () => { it('should tap encryption badge and open save password modal', async() => { await element(by.id('listheader-encryption')).tap(); await waitFor(element(by.id('e2e-save-password-view'))).toBeVisible().withTimeout(2000); }); - + it('should tap "How it works" and navigate', async() => { await element(by.id('e2e-save-password-view-how-it-works').and(by.label('How It Works'))).tap(); await waitFor(element(by.id('e2e-how-it-works-view'))).toBeVisible().withTimeout(2000); await tapBack(); }); - + it('should tap "Save my password" and close modal', async() => { await element(by.id('e2e-save-password-view-saved-password').and(by.label('I Saved My E2E Password'))).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); }); - + it('should create encrypted room', async() => { await element(by.id('rooms-list-view-create-channel')).tap(); await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000); @@ -92,15 +91,15 @@ describe('E2E Encryption', () => { await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000); await waitFor(element(by.id(`room-view-title-${ room }`))).toBeVisible().withTimeout(60000); }); - + it('should send message and be able to read it', async() => { await mockMessage('message'); await tapBack(); }); }); - }) + }); - describe('Security and Privacy', async() => { + describe('Security and Privacy', () => { it('should navigate to security privacy', async() => { await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); await element(by.id('rooms-list-view-sidebar')).tap(); @@ -120,7 +119,7 @@ describe('E2E Encryption', () => { }); }); - describe('E2E Encryption Security', async() => { + describe('E2E Encryption Security', () => { it('should navigate to e2e encryption security', async() => { await element(by.id('security-privacy-view-e2e-encryption')).tap(); await waitFor(element(by.id('e2e-encryption-security-view'))).toBeVisible().withTimeout(2000); @@ -133,9 +132,9 @@ describe('E2E Encryption', () => { await expect(element(by.id('e2e-encryption-security-view-change-password').and(by.label('Save Changes')))).toExist(); await expect(element(by.id('e2e-encryption-security-view-reset-key').and(by.label('Reset E2E Key')))).toExist(); }); - }) + }); - describe('Change password', async() => { + describe('Change password', () => { it('should change password', async() => { await element(by.id('e2e-encryption-security-view-password')).typeText(newPassword); await element(by.id('e2e-encryption-security-view-change-password')).tap(); @@ -184,7 +183,7 @@ describe('E2E Encryption', () => { }); }); - describe('Reset E2E key', async() => { + describe('Reset E2E key', () => { it('should reset e2e key', async() => { await tapBack(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); @@ -195,7 +194,7 @@ describe('E2E Encryption', () => { await waitFor(element(by.text('Are you sure?'))).toExist().withTimeout(2000); await expect(element(by.text('You\'re going to be logged out.'))).toExist(); await element(by.label('Yes, reset it').and(by.type('UILabel'))).tap(); - await sleep(2000) + await sleep(2000); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(10000); await waitFor(element(by.text('You\'ve been logged out by the server. Please log in again.'))).toExist().withTimeout(2000); await element(by.label('OK').and(by.type('_UIAlertControllerActionView'))).tap(); @@ -203,7 +202,7 @@ describe('E2E Encryption', () => { await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000); await login(testuser.username, testuser.password); await waitFor(element(by.id('listheader-encryption').withDescendant(by.label('Save Your Encryption Password')))).toBeVisible().withTimeout(2000); - }) + }); }); }); @@ -211,21 +210,21 @@ describe('E2E Encryption', () => { it('check save banner', async() => { await checkServer(data.server); await checkBanner(); - }) - + }); + it('should add server and create new user', async() => { await sleep(5000); await element(by.id('rooms-list-header-server-dropdown-button')).tap(); await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); await element(by.id('rooms-list-header-server-add')).tap(); - + // TODO: refactor await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).typeText(`${data.alternateServer}\n`); + await element(by.id('new-server-view-input')).typeText(`${ data.alternateServer }\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); await element(by.id('workspace-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); - + // Register new user await element(by.id('register-view-name')).replaceText(data.registeringUser.username); await element(by.id('register-view-username')).replaceText(data.registeringUser.username); @@ -233,10 +232,10 @@ describe('E2E Encryption', () => { await element(by.id('register-view-password')).typeText(data.registeringUser.password); await element(by.id('register-view-submit')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000); - + await checkServer(data.alternateServer); }); - + it('should change back', async() => { await element(by.id('rooms-list-header-server-dropdown-button')).tap(); await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); @@ -255,4 +254,4 @@ describe('E2E Encryption', () => { await checkBanner(); }); }); -}); \ No newline at end of file +}); diff --git a/e2e/tests/assorted/02-broadcast.spec.js b/e2e/tests/assorted/02-broadcast.spec.js index 059643c0269..12350ee86fa 100644 --- a/e2e/tests/assorted/02-broadcast.spec.js +++ b/e2e/tests/assorted/02-broadcast.spec.js @@ -1,13 +1,13 @@ +// const OTP = require('otp.js'); +// const GA = OTP.googleAuthenticator; + const { - device, expect, element, by, waitFor -} = require('detox'); -const OTP = require('otp.js'); -const GA = OTP.googleAuthenticator; -const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom } = require('../../helpers/app'); + navigateToLogin, login, mockMessage, tapBack, searchRoom +} = require('../../helpers/app'); const data = require('../../data'); -const testuser = data.users.regular -const otheruser = data.users.alternate +const testuser = data.users.regular; +const otheruser = data.users.alternate; describe('Broadcast room', () => { before(async() => { @@ -28,7 +28,7 @@ describe('Broadcast room', () => { await element(by.id('selected-users-view-submit')).tap(); await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(5000); await element(by.id('create-channel-name')).replaceText(`broadcast${ data.random }`); - await element(by.id('create-channel-broadcast')).longPress(); //https://github.com/facebook/react-native/issues/28032 + await element(by.id('create-channel-broadcast')).longPress(); // https://github.com/facebook/react-native/issues/28032 await element(by.id('create-channel-submit')).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000); await waitFor(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible().withTimeout(60000); @@ -54,11 +54,11 @@ describe('Broadcast room', () => { await navigateToLogin(); await login(otheruser.username, otheruser.password); - //await waitFor(element(by.id('two-factor'))).toBeVisible().withTimeout(5000); - //await expect(element(by.id('two-factor'))).toBeVisible(); - //const code = GA.gen(data.alternateUserTOTPSecret); - //await element(by.id('two-factor-input')).replaceText(code); - //await element(by.id('two-factor-send')).tap(); + // await waitFor(element(by.id('two-factor'))).toBeVisible().withTimeout(5000); + // await expect(element(by.id('two-factor'))).toBeVisible(); + // const code = GA.gen(data.alternateUserTOTPSecret); + // await element(by.id('two-factor-input')).replaceText(code); + // await element(by.id('two-factor-send')).tap(); await searchRoom(`broadcast${ data.random }`); await element(by.id(`rooms-list-view-item-broadcast${ data.random }`)).tap(); diff --git a/e2e/tests/assorted/03-profile.spec.js b/e2e/tests/assorted/03-profile.spec.js index 86fc001db16..b17485a3f94 100644 --- a/e2e/tests/assorted/03-profile.spec.js +++ b/e2e/tests/assorted/03-profile.spec.js @@ -1,10 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const { navigateToLogin, login, sleep } = require('../../helpers/app'); const data = require('../../data'); -const profileChangeUser = data.users.profileChanges +const profileChangeUser = data.users.profileChanges; const scrollDown = 200; @@ -28,7 +25,7 @@ describe('Profile screen', () => { await waitFor(element(by.id('profile-view'))).toBeVisible().withTimeout(2000); }); - describe('Render', async() => { + describe('Render', () => { it('should have profile view', async() => { await expect(element(by.id('profile-view'))).toBeVisible(); }); @@ -56,7 +53,7 @@ describe('Profile screen', () => { it('should have avatar url', async() => { await expect(element(by.id('profile-view-avatar-url'))).toExist(); }); - + it('should have reset avatar button', async() => { await waitFor(element(by.id('profile-view-reset-avatar'))).toExist().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down'); }); @@ -74,7 +71,7 @@ describe('Profile screen', () => { }); }); - describe('Usage', async() => { + describe('Usage', () => { it('should change name and username', async() => { await element(by.id('profile-view-name')).replaceText(`${ profileChangeUser.username }new`); await element(by.id('profile-view-username')).typeText(`${ profileChangeUser.username }new`); @@ -87,7 +84,7 @@ describe('Profile screen', () => { await element(by.id('profile-view-email')).replaceText(`mobile+profileChangesNew${ data.random }@rocket.chat`); await element(by.id('profile-view-new-password')).replaceText(`${ profileChangeUser.password }new`); await element(by.id('profile-view-submit')).tap(); - await element(by.type('_UIAlertControllerTextField')).typeText(`${ profileChangeUser.password }\n`) + await element(by.type('_UIAlertControllerTextField')).typeText(`${ profileChangeUser.password }\n`); await waitForToast(); }); diff --git a/e2e/tests/assorted/04-setting.spec.js b/e2e/tests/assorted/04-setting.spec.js index 14bdbe71f39..edfb3fd40a9 100644 --- a/e2e/tests/assorted/04-setting.spec.js +++ b/e2e/tests/assorted/04-setting.spec.js @@ -1,11 +1,8 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); -const { navigateToLogin, login, tapBack } = require('../../helpers/app'); +const { navigateToLogin, login } = require('../../helpers/app'); const data = require('../../data'); -const testuser = data.users.regular +const testuser = data.users.regular; describe('Settings screen', () => { before(async() => { @@ -20,7 +17,7 @@ describe('Settings screen', () => { await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); }); - describe('Render', async() => { + describe('Render', () => { it('should have settings view', async() => { await expect(element(by.id('settings-view'))).toBeVisible(); }); @@ -62,14 +59,14 @@ describe('Settings screen', () => { }); }); - describe('Usage', async() => { + describe('Usage', () => { it('should tap clear cache and navigate to roomslistview', async() => { await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); await element(by.id('settings-view-clear-cache')).tap(); await waitFor(element(by.text('This will clear all your offline data.'))).toExist().withTimeout(2000); - await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); + await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toExist().withTimeout(10000); - }) + }); }); }); diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 15acbda9ce3..afeff4f7615 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -1,10 +1,9 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom } = require('../../helpers/app'); +const { + navigateToLogin, login, mockMessage, tapBack, searchRoom +} = require('../../helpers/app'); -const testuser = data.users.regular +const testuser = data.users.regular; const room = data.channels.detoxpublic.name; async function navigateToRoom() { @@ -26,7 +25,7 @@ describe('Join public room', () => { await navigateToRoom(); }); - describe('Render', async() => { + describe('Render', () => { it('should have room screen', async() => { await expect(element(by.id('room-view'))).toBeVisible(); }); @@ -36,14 +35,14 @@ describe('Join public room', () => { // }); // Render - Header - describe('Header', async() => { + describe('Header', () => { it('should have actions button ', async() => { await expect(element(by.id('room-header'))).toBeVisible(); }); }); // Render - Join - describe('Join', async() => { + describe('Join', () => { it('should have join', async() => { await expect(element(by.id('room-view-join'))).toBeVisible(); }); @@ -61,7 +60,7 @@ describe('Join public room', () => { }); }); - describe('Room Actions', async() => { + describe('Room Actions', () => { before(async() => { await navigateToRoomActions(); }); @@ -117,11 +116,11 @@ describe('Join public room', () => { after(async() => { await tapBack(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(2000); - }) + }); }); }); - describe('Usage', async() => { + describe('Usage', () => { it('should join room', async() => { await element(by.id('room-view-join-button')).tap(); await tapBack(); diff --git a/e2e/tests/assorted/06-status.spec.js b/e2e/tests/assorted/06-status.spec.js index 52c6f9b9814..7eeb246b1e3 100644 --- a/e2e/tests/assorted/06-status.spec.js +++ b/e2e/tests/assorted/06-status.spec.js @@ -1,17 +1,15 @@ -const { - expect, element, by, waitFor -} = require('detox'); const { navigateToLogin, login, sleep } = require('../../helpers/app'); const data = require('../../data'); -const testuser = data.users.regular + +const testuser = data.users.regular; async function waitForToast() { await sleep(300); } describe('Status screen', () => { - before(async () => { + before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); await login(testuser.username, testuser.password); @@ -24,8 +22,8 @@ describe('Status screen', () => { await waitFor(element(by.id('status-view'))).toBeVisible().withTimeout(2000); }); - describe('Render', async () => { - it('should have status input', async () => { + describe('Render', () => { + it('should have status input', async() => { await expect(element(by.id('status-view-input'))).toBeVisible(); await expect(element(by.id('status-view-online'))).toExist(); await expect(element(by.id('status-view-busy'))).toExist(); @@ -34,17 +32,17 @@ describe('Status screen', () => { }); }); - describe('Usage', async () => { - it('should change status', async () => { + describe('Usage', () => { + it('should change status', async() => { await element(by.id('status-view-busy')).tap(); await waitFor(element(by.id('status-view-current-busy'))).toExist().withTimeout(2000); }); - it('should change status text', async () => { + it('should change status text', async() => { await element(by.id('status-view-input')).typeText('status-text-new'); await element(by.id('status-view-submit')).tap(); await waitForToast(); await waitFor(element(by.label('status-text-new').withAncestor(by.id('sidebar-custom-status')))).toExist().withTimeout(2000); }); }); -}); \ No newline at end of file +}); diff --git a/e2e/tests/assorted/07-changeserver.spec.js b/e2e/tests/assorted/07-changeserver.spec.js index 06ac7c36a0c..4ed0d6b586a 100644 --- a/e2e/tests/assorted/07-changeserver.spec.js +++ b/e2e/tests/assorted/07-changeserver.spec.js @@ -1,6 +1,3 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); const { navigateToLogin, login, checkServer } = require('../../helpers/app'); @@ -8,7 +5,7 @@ const reopenAndCheckServer = async(server) => { await device.launchApp({ permissions: { notifications: 'YES' } }); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(6000); await checkServer(server); -} +}; describe('Change server', () => { before(async() => { @@ -24,7 +21,7 @@ describe('Change server', () => { await element(by.id('rooms-list-header-server-add')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(6000); - await element(by.id('new-server-view-input')).typeText(`${data.alternateServer}\n`); + await element(by.id('new-server-view-input')).typeText(`${ data.alternateServer }\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(10000); await reopenAndCheckServer(data.server); }); @@ -64,5 +61,5 @@ describe('Change server', () => { it('should reopen the app and show main server', async() => { await reopenAndCheckServer(data.server); - }) + }); }); diff --git a/e2e/tests/assorted/08-joinprotectedroom.spec.js b/e2e/tests/assorted/08-joinprotectedroom.spec.js index 9101a965951..f10d7bc5f2b 100644 --- a/e2e/tests/assorted/08-joinprotectedroom.spec.js +++ b/e2e/tests/assorted/08-joinprotectedroom.spec.js @@ -1,12 +1,11 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom } = require('../../helpers/app'); +const { + navigateToLogin, login, mockMessage, searchRoom +} = require('../../helpers/app'); -const testuser = data.users.regular -const room = data.channels.detoxpublicprotected.name -const joinCode = data.channels.detoxpublicprotected.joinCode +const testuser = data.users.regular; +const room = data.channels.detoxpublicprotected.name; +const { joinCode } = data.channels.detoxpublicprotected; async function navigateToRoom() { await searchRoom(room); @@ -27,10 +26,10 @@ describe('Join protected room', () => { await navigateToRoom(); }); - describe('Usage', async() => { + describe('Usage', () => { it('should tap join and ask for join code', async() => { await openJoinCode(); - }) + }); it('should cancel join room', async() => { await element(by.id('join-code-cancel')).tap(); diff --git a/e2e/tests/assorted/09-joinfromdirectory.spec.js b/e2e/tests/assorted/09-joinfromdirectory.spec.js index 039ef823c71..e04faabf4e4 100644 --- a/e2e/tests/assorted/09-joinfromdirectory.spec.js +++ b/e2e/tests/assorted/09-joinfromdirectory.spec.js @@ -1,13 +1,12 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, tapBack, sleep } = require('../../helpers/app'); +const { + navigateToLogin, login, tapBack, sleep +} = require('../../helpers/app'); -const testuser = data.users.regular +const testuser = data.users.regular; async function navigateToRoom(search) { - await element(by.id('directory-view-search')).replaceText(search); + await element(by.id('directory-view-search')).replaceText(search); await waitFor(element(by.id(`directory-view-item-${ search }`))).toBeVisible().withTimeout(10000); await sleep(300); // app takes some time to animate await element(by.id(`directory-view-item-${ search }`)).tap(); @@ -22,34 +21,34 @@ describe('Join room from directory', () => { await login(testuser.username, testuser.password); }); - describe('Usage', async() => { + describe('Usage', () => { it('should tap directory', async() => { - await element(by.id('rooms-list-view-directory')).tap(); + await element(by.id('rooms-list-view-directory')).tap(); await waitFor(element(by.id('directory-view'))).toExist().withTimeout(2000); - }) + }); it('should search public channel and navigate', async() => { await navigateToRoom(data.channels.detoxpublic.name); - }) + }); it('should search user and navigate', async() => { await tapBack(); - await element(by.id('rooms-list-view-directory')).tap(); + await element(by.id('rooms-list-view-directory')).tap(); await waitFor(element(by.id('directory-view'))).toExist().withTimeout(2000); - await element(by.id('directory-view-dropdown')).tap(); + await element(by.id('directory-view-dropdown')).tap(); await element(by.label('Users')).tap(); - await element(by.label('Search by')).tap(); + await element(by.label('Search by')).tap(); await navigateToRoom(data.users.alternate.username); - }) + }); it('should search user and navigate', async() => { await tapBack(); await element(by.id('rooms-list-view-directory')).tap(); await waitFor(element(by.id('directory-view'))).toExist().withTimeout(2000); - await element(by.id('directory-view-dropdown')).tap(); + await element(by.id('directory-view-dropdown')).tap(); await element(by.label('Teams')).tap(); - await element(by.label('Search by')).tap(); + await element(by.label('Search by')).tap(); await navigateToRoom(data.teams.private.name); - }) + }); }); }); diff --git a/e2e/tests/assorted/10-deleteserver.spec.js b/e2e/tests/assorted/10-deleteserver.spec.js index 8e260fd70de..d92d3c442d6 100644 --- a/e2e/tests/assorted/10-deleteserver.spec.js +++ b/e2e/tests/assorted/10-deleteserver.spec.js @@ -1,8 +1,7 @@ -const { - device, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { sleep, navigateToLogin, login, checkServer } = require('../../helpers/app'); +const { + sleep, navigateToLogin, login, checkServer +} = require('../../helpers/app'); describe('Delete server', () => { before(async() => { @@ -13,7 +12,7 @@ describe('Delete server', () => { it('should be logged in main server', async() => { await checkServer(data.server); - }) + }); it('should add server', async() => { await sleep(5000); @@ -22,7 +21,7 @@ describe('Delete server', () => { await element(by.id('rooms-list-header-server-add')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(10000); - await element(by.id('new-server-view-input')).typeText(`${data.alternateServer}\n`); + await element(by.id('new-server-view-input')).typeText(`${ data.alternateServer }\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(10000); await element(by.id('workspace-view-register')).tap(); await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); @@ -42,7 +41,7 @@ describe('Delete server', () => { await element(by.id('rooms-list-header-server-dropdown-button')).tap(); await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); await element(by.id(`rooms-list-header-server-${ data.server }`)).longPress(1500); - await element(by.label('Delete').and(by.type('_UIAlertControllerActionView'))).tap(); + await element(by.label('Delete').and(by.type('_UIAlertControllerActionView'))).tap(); await element(by.id('rooms-list-header-server-dropdown-button')).tap(); await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000); await waitFor(element(by.id(`rooms-list-header-server-${ data.server }`))).toBeNotVisible().withTimeout(10000); diff --git a/e2e/tests/assorted/11-deeplinking.spec.js b/e2e/tests/assorted/11-deeplinking.spec.js index c40cff7bf08..8a30be0a9ef 100644 --- a/e2e/tests/assorted/11-deeplinking.spec.js +++ b/e2e/tests/assorted/11-deeplinking.spec.js @@ -1,13 +1,10 @@ -const { - device, element, by, waitFor -} = require('detox'); const data = require('../../data'); const { tapBack, checkServer, navigateToRegister } = require('../../helpers/app'); -const { post, get, login } = require('../../helpers/data_setup'); +const { get, login } = require('../../helpers/data_setup'); const DEEPLINK_METHODS = { AUTH: 'auth', ROOM: 'room' }; const getDeepLink = (method, server, params) => { - const deeplink = `rocketchat://${ method }?host=${ server.replace(/^(http:\/\/|https:\/\/)/, '') }&${params}`; + const deeplink = `rocketchat://${ method }?host=${ server.replace(/^(http:\/\/|https:\/\/)/, '') }&${ params }`; console.log(`Deeplinking to: ${ deeplink }`); return deeplink; }; @@ -43,7 +40,7 @@ describe('Deep linking', () => { await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); await checkServer(data.server); await waitFor(element(by.id(`rooms-list-view-item-${ data.groups.private.name }`))).toBeVisible().withTimeout(2000); - } + }; it('should authenticate and navigate', async() => { await authAndNavigate(); @@ -63,7 +60,7 @@ describe('Deep linking', () => { }); describe('Room', () => { - describe('While logged in', async() => { + describe('While logged in', () => { it('should navigate to the room using path', async() => { await device.launchApp({ permissions: { notifications: 'YES' }, @@ -75,7 +72,7 @@ describe('Deep linking', () => { }); it('should navigate to the room using rid', async() => { - const roomResult = await get(`groups.info?roomName=${ data.groups.private.name }`) + const roomResult = await get(`groups.info?roomName=${ data.groups.private.name }`); await device.launchApp({ permissions: { notifications: 'YES' }, newInstance: true, @@ -87,7 +84,7 @@ describe('Deep linking', () => { }); }); - describe('Others', async() => { + describe('Others', () => { it('should change server', async() => { await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); await element(by.id('rooms-list-header-server-dropdown-button')).tap(); diff --git a/e2e/tests/assorted/12-i18n.spec.js b/e2e/tests/assorted/12-i18n.spec.js index 51273fd7268..1c4a6a9d582 100644 --- a/e2e/tests/assorted/12-i18n.spec.js +++ b/e2e/tests/assorted/12-i18n.spec.js @@ -1,11 +1,9 @@ -const { - device, element, by, waitFor -} = require('detox'); const { navigateToLogin, login, sleep } = require('../../helpers/app'); const { post } = require('../../helpers/data_setup'); const data = require('../../data'); -const testuser = data.users.regular + +const testuser = data.users.regular; const defaultLaunchArgs = { permissions: { notifications: 'YES' } }; const navToLanguage = async() => { @@ -25,8 +23,8 @@ describe('i18n', () => { await device.launchApp({ ...defaultLaunchArgs, languageAndLocale: { - language: "en", - locale: "en" + language: 'en', + locale: 'en' }, delete: true }); @@ -34,20 +32,20 @@ describe('i18n', () => { await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); await expect(element(by.id('create-workspace-button').and(by.label('Create a new workspace')))).toBeVisible(); }); - + it('OS set to unavailable language and fallback to \'en\'', async() => { await device.launchApp({ ...defaultLaunchArgs, languageAndLocale: { - language: "es-MX", - locale: "es-MX" + language: 'es-MX', + locale: 'es-MX' } }); await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(20000); await expect(element(by.id('join-workspace').and(by.label('Join a workspace')))).toBeVisible(); await expect(element(by.id('create-workspace-button').and(by.label('Create a new workspace')))).toBeVisible(); }); - + /** * This test might become outdated as soon as we support the language * Although this seems to be a bad approach, that's the intention for having fallback enabled @@ -110,5 +108,5 @@ describe('i18n', () => { await expect(element(by.id('sidebar-settings').withDescendant(by.label('Settings')))).toBeVisible(); await post('users.setPreferences', { data: { language: 'en' } }); // Set back to english }); - }) -}); \ No newline at end of file + }); +}); diff --git a/e2e/tests/init.js b/e2e/tests/init.js index 18ad9832731..b1e08a2bd49 100644 --- a/e2e/tests/init.js +++ b/e2e/tests/init.js @@ -1,13 +1,13 @@ const detox = require('detox'); -const config = require('../../package.json').detox; -const { setup } = require('../helpers/data_setup') const adapter = require('detox/runners/mocha/adapter'); +const config = require('../../package.json').detox; +const { setup } = require('../helpers/data_setup'); before(async() => { - await Promise.all([setup(), detox.init(config, { launchApp: false })]) - //await dataSetup() - //await detox.init(config, { launchApp: false }); - //await device.launchApp({ permissions: { notifications: 'YES' } }); + await Promise.all([setup(), detox.init(config, { launchApp: false })]); + // await dataSetup() + // await detox.init(config, { launchApp: false }); + // await device.launchApp({ permissions: { notifications: 'YES' } }); }); beforeEach(async function() { diff --git a/e2e/tests/onboarding/01-onboarding.spec.js b/e2e/tests/onboarding/01-onboarding.spec.js index e38a83764f5..a8cad899172 100644 --- a/e2e/tests/onboarding/01-onboarding.spec.js +++ b/e2e/tests/onboarding/01-onboarding.spec.js @@ -1,6 +1,3 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); describe('Onboarding', () => { @@ -12,10 +9,10 @@ describe('Onboarding', () => { describe('Render', () => { it('should have onboarding screen', async() => { await expect(element(by.id('onboarding-view'))).toBeVisible(); - }); + }); it('should have "Join a workspace"', async() => { - await expect(element(by.id('join-workspace'))).toBeVisible(); + await expect(element(by.id('join-workspace'))).toBeVisible(); }); it('should have "Create a new workspace"', async() => { @@ -27,7 +24,7 @@ describe('Onboarding', () => { // it('should navigate to create new workspace', async() => { // // webviews are not supported by detox: https://github.com/wix/detox/issues/136#issuecomment-306591554 // }); - + it('should navigate to join a workspace', async() => { await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); @@ -50,7 +47,7 @@ describe('Onboarding', () => { await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000); await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - await element(by.id('new-server-view-input')).typeText(`${data.server}\n`); + await element(by.id('new-server-view-input')).typeText(`${ data.server }\n`); await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000); }); }); diff --git a/e2e/tests/onboarding/02-legal.spec.js b/e2e/tests/onboarding/02-legal.spec.js index 191e0647caa..4ac96d985d0 100644 --- a/e2e/tests/onboarding/02-legal.spec.js +++ b/e2e/tests/onboarding/02-legal.spec.js @@ -1,24 +1,20 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const { navigateToRegister, navigateToLogin } = require('../../helpers/app'); describe('Legal screen', () => { - describe('From Login', () => { before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); }); - - it('should have legal button on login', async() => { + + it('should have legal button on login', async() => { await waitFor(element(by.id('login-view-more'))).toBeVisible().withTimeout(60000); }); - + it('should navigate to legal from login', async() => { await expect(element(by.id('login-view-more'))).toBeVisible(); await element(by.id('login-view-more')).tap(); - await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(4000) + await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(4000); }); }); @@ -28,32 +24,32 @@ describe('Legal screen', () => { await navigateToRegister(); }); - it('should have legal button on register', async() => { + it('should have legal button on register', async() => { await waitFor(element(by.id('register-view-more'))).toBeVisible().withTimeout(60000); }); - + it('should navigate to legal from register', async() => { await expect(element(by.id('register-view-more'))).toBeVisible(); await element(by.id('register-view-more')).tap(); await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(4000); }); - + it('should have terms of service button', async() => { await expect(element(by.id('legal-terms-button'))).toBeVisible(); }); - + it('should have privacy policy button', async() => { await expect(element(by.id('legal-privacy-button'))).toBeVisible(); }); // We can't simulate how webview behaves, so I had to disable :( - /* + /* it('should navigate to terms', async() => { await element(by.id('legal-terms-button')).tap(); await waitFor(element(by.id('terms-view'))).toBeVisible().withTimeout(2000); await expect(element(by.id('terms-view'))).toBeVisible(); }); - + it('should navigate to privacy', async() => { await tapBack(); await element(by.id('legal-privacy-button')).tap(); diff --git a/e2e/tests/onboarding/03-forgotpassword.spec.js b/e2e/tests/onboarding/03-forgotpassword.spec.js index 03afe59250b..d53690d6fbe 100644 --- a/e2e/tests/onboarding/03-forgotpassword.spec.js +++ b/e2e/tests/onboarding/03-forgotpassword.spec.js @@ -1,6 +1,3 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); const { navigateToLogin } = require('../../helpers/app'); @@ -12,7 +9,7 @@ describe('Forgot password screen', () => { await waitFor(element(by.id('forgot-password-view'))).toExist().withTimeout(2000); }); - describe('Render', async() => { + describe('Render', () => { it('should have forgot password screen', async() => { await expect(element(by.id('forgot-password-view'))).toExist(); }); @@ -26,7 +23,7 @@ describe('Forgot password screen', () => { }); }); - describe('Usage', async() => { + describe('Usage', () => { it('should reset password and navigate to login', async() => { await element(by.id('forgot-password-view-email')).replaceText(data.users.existing.email); await element(by.id('forgot-password-view-submit')).tap(); diff --git a/e2e/tests/onboarding/04-createuser.spec.js b/e2e/tests/onboarding/04-createuser.spec.js index cf706d78bf8..e88e9eab3e9 100644 --- a/e2e/tests/onboarding/04-createuser.spec.js +++ b/e2e/tests/onboarding/04-createuser.spec.js @@ -1,7 +1,4 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); -const { navigateToRegister, sleep } = require('../../helpers/app'); +const { navigateToRegister } = require('../../helpers/app'); const data = require('../../data'); describe('Create user screen', () => { @@ -37,7 +34,6 @@ describe('Create user screen', () => { }); describe('Usage', () => { - // FIXME: Detox isn't able to check if it's tappable: https://github.com/wix/Detox/issues/246 // it('should submit invalid email and do nothing', async() => { // const invalidEmail = 'invalidemail'; diff --git a/e2e/tests/onboarding/05-login.spec.js b/e2e/tests/onboarding/05-login.spec.js index 7c6b4853c08..91cb917377d 100644 --- a/e2e/tests/onboarding/05-login.spec.js +++ b/e2e/tests/onboarding/05-login.spec.js @@ -1,7 +1,4 @@ -const { - expect, element, by, waitFor -} = require('detox'); -const { navigateToLogin, tapBack, sleep } = require('../../helpers/app'); +const { navigateToLogin, tapBack } = require('../../helpers/app'); const data = require('../../data'); describe('Login screen', () => { @@ -46,13 +43,13 @@ describe('Login screen', () => { await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000); await tapBack(); }); - + it('should navigate to forgot password', async() => { await element(by.id('login-view-forgot-password')).tap(); await waitFor(element(by.id('forgot-password-view'))).toExist().withTimeout(2000); await tapBack(); }); - + it('should insert wrong password and get error', async() => { await element(by.id('login-view-email')).replaceText(data.users.regular.username); await element(by.id('login-view-password')).replaceText('NotMyActualPassword'); @@ -60,7 +57,7 @@ describe('Login screen', () => { await waitFor(element(by.text('Your credentials were rejected! Please try again.'))).toBeVisible().withTimeout(10000); await element(by.text('OK')).tap(); }); - + it('should login with success', async() => { await element(by.id('login-view-password')).replaceText(data.users.regular.password); await element(by.id('login-view-submit')).tap(); diff --git a/e2e/tests/onboarding/06-roomslist.spec.js b/e2e/tests/onboarding/06-roomslist.spec.js index ea6dc06c173..03e595edfba 100644 --- a/e2e/tests/onboarding/06-roomslist.spec.js +++ b/e2e/tests/onboarding/06-roomslist.spec.js @@ -1,15 +1,13 @@ const { - device, expect, element, by, waitFor -} = require('detox'); -const { login, navigateToLogin, logout, tapBack, sleep, searchRoom } = require('../../helpers/app'); + login, navigateToLogin, logout, tapBack, searchRoom +} = require('../../helpers/app'); const data = require('../../data'); describe('Rooms list screen', () => { - before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, newInstance: true, delete: true }); await navigateToLogin(); - await login(data.users.regular.username, data.users.regular.password) + await login(data.users.regular.username, data.users.regular.password); }); describe('Render', () => { @@ -20,13 +18,13 @@ describe('Rooms list screen', () => { it('should have room item', async() => { await expect(element(by.id('rooms-list-view-item-general'))).toExist(); }); - + // Render - Header describe('Header', () => { it('should have create channel button', async() => { await expect(element(by.id('rooms-list-view-create-channel'))).toBeVisible(); }); - + it('should have sidebar button', async() => { await expect(element(by.id('rooms-list-view-sidebar'))).toBeVisible(); }); diff --git a/e2e/tests/onboarding/07-server-history.spec.js b/e2e/tests/onboarding/07-server-history.spec.js index fc1d6af9c1d..b984b9c8b66 100644 --- a/e2e/tests/onboarding/07-server-history.spec.js +++ b/e2e/tests/onboarding/07-server-history.spec.js @@ -1,7 +1,6 @@ const { - device, expect, element, by, waitFor -} = require('detox'); -const { login, navigateToLogin, logout, tapBack } = require('../../helpers/app'); + login, navigateToLogin, logout, tapBack +} = require('../../helpers/app'); const data = require('../../data'); describe('Server history', () => { @@ -16,7 +15,7 @@ describe('Server history', () => { await logout(); await element(by.id('join-workspace')).tap(); await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000); - }) + }); it('should show servers history', async() => { await element(by.id('new-server-view-input')).tap(); diff --git a/e2e/tests/room/01-createroom.spec.js b/e2e/tests/room/01-createroom.spec.js index 874255e4386..bc67b2c3ee4 100644 --- a/e2e/tests/room/01-createroom.spec.js +++ b/e2e/tests/room/01-createroom.spec.js @@ -1,10 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { tapBack, sleep, navigateToLogin, login, tryTapping } = require('../../helpers/app'); - - +const { + tapBack, navigateToLogin, login, tryTapping +} = require('../../helpers/app'); describe('Create room screen', () => { before(async() => { @@ -13,30 +10,30 @@ describe('Create room screen', () => { await login(data.users.regular.username, data.users.regular.password); }); - describe('New Message', async() => { + describe('New Message', () => { before(async() => { await element(by.id('rooms-list-view-create-channel')).tap(); }); - describe('Render', async() => { + describe('Render', () => { it('should have new message screen', async() => { await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000); }); - + it('should have search input', async() => { await waitFor(element(by.id('new-message-view-search'))).toBeVisible().withTimeout(2000); }); - }) + }); - describe('Usage', async() => { + describe('Usage', () => { it('should back to rooms list', async() => { await waitFor(element(by.id('new-message-view-close'))).toBeVisible().withTimeout(5000); await element(by.id('new-message-view-close')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); - + await tryTapping(element(by.id('rooms-list-view-create-channel')), 3000); - //await element(by.id('rooms-list-view-create-channel')).tap(); + // await element(by.id('rooms-list-view-create-channel')).tap(); await waitFor(element(by.id('new-message-view'))).toExist().withTimeout(5000); }); @@ -56,13 +53,13 @@ describe('Create room screen', () => { await element(by.id('new-message-view-create-channel')).tap(); await waitFor(element(by.id('select-users-view'))).toExist().withTimeout(5000); }); - }) + }); }); - describe('Select Users', async() => { + describe('Select Users', () => { it('should search users', async() => { await element(by.id('select-users-view-search')).replaceText('rocket.cat'); - await waitFor(element(by.id(`select-users-view-item-rocket.cat`))).toBeVisible().withTimeout(10000); + await waitFor(element(by.id('select-users-view-item-rocket.cat'))).toBeVisible().withTimeout(10000); }); it('should select/unselect user', async() => { @@ -80,27 +77,27 @@ describe('Create room screen', () => { await element(by.id('selected-users-view-submit')).tap(); await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); }); - }) + }); - describe('Create Channel', async() => { - describe('Render', async() => { + describe('Create Channel', () => { + describe('Render', () => { it('should render all fields', async() => { await expect(element(by.id('create-channel-name'))).toBeVisible(); await expect(element(by.id('create-channel-type'))).toBeVisible(); await expect(element(by.id('create-channel-readonly'))).toBeVisible(); await expect(element(by.id('create-channel-broadcast'))).toBeVisible(); - }) - }) + }); + }); - describe('Usage', async() => { + describe('Usage', () => { it('should get invalid room', async() => { await element(by.id('create-channel-name')).typeText('general'); await element(by.id('create-channel-submit')).tap(); - await waitFor(element(by.text(`A channel with name general exists`))).toExist().withTimeout(60000); - await expect(element(by.text(`A channel with name general exists`))).toExist(); + await waitFor(element(by.text('A channel with name general exists'))).toExist().withTimeout(60000); + await expect(element(by.text('A channel with name general exists'))).toExist(); await element(by.text('OK')).tap(); }); - + it('should create public room', async() => { const room = `public${ data.random }`; await element(by.id('create-channel-name')).replaceText(''); @@ -116,7 +113,7 @@ describe('Create room screen', () => { await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(6000); await expect(element(by.id(`rooms-list-view-item-${ room }`))).toExist(); }); - + it('should create private room', async() => { const room = `private${ data.random }`; await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); @@ -161,6 +158,6 @@ describe('Create room screen', () => { await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); await expect(element(by.id(`rooms-list-view-item-${ room }`))).toExist(); }); - }) + }); }); }); diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index d6a374185e6..4e1711e648f 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -1,8 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping, logout } = require('../../helpers/app'); +const { + navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping +} = require('../../helpers/app'); async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); @@ -20,14 +19,14 @@ describe('Room screen', () => { await navigateToRoom(mainRoom); }); - describe('Render', async() => { + describe('Render', () => { it('should have room screen', async() => { await expect(element(by.id('room-view'))).toExist(); await waitFor(element(by.id(`room-view-title-${ mainRoom }`))).toExist().withTimeout(5000); }); // Render - Header - describe('Header', async() => { + describe('Header', () => { it('should have actions button ', async() => { await expect(element(by.id('room-header'))).toExist(); }); @@ -38,7 +37,7 @@ describe('Room screen', () => { }); // Render - Messagebox - describe('Messagebox', async() => { + describe('Messagebox', () => { it('should have messagebox', async() => { await expect(element(by.id('messagebox'))).toExist(); }); @@ -63,15 +62,15 @@ describe('Room screen', () => { }); }); - describe('Usage', async() => { - describe('Messagebox', async() => { + describe('Usage', () => { + describe('Messagebox', () => { it('should send message', async() => { - await mockMessage('message') + await mockMessage('message'); await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toExist(); }); - it('should show/hide emoji keyboard', async () => { + it('should show/hide emoji keyboard', async() => { if (device.getPlatform() === 'android') { await element(by.id('messagebox-open-emoji')).tap(); await waitFor(element(by.id('messagebox-keyboard-emoji'))).toExist().withTimeout(10000); @@ -105,20 +104,20 @@ describe('Room screen', () => { it('should not show emoji autocomplete on semicolon in middle of a string', async() => { await element(by.id('messagebox-input')).tap(); // await element(by.id('messagebox-input')).replaceText(':'); - await element(by.id('messagebox-input')).typeText('name:is'); + await element(by.id('messagebox-input')).typeText('name:is'); await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(20000); await element(by.id('messagebox-input')).clearText(); }); it('should show and tap on user autocomplete and send mention', async() => { - const username = data.users.regular.username + const { username } = data.users.regular; await element(by.id('messagebox-input')).tap(); await element(by.id('messagebox-input')).typeText(`@${ username }`); await waitFor(element(by.id('messagebox-container'))).toExist().withTimeout(4000); - await waitFor(element(by.id(`mention-item-${ username }`))).toBeVisible().withTimeout(4000) + await waitFor(element(by.id(`mention-item-${ username }`))).toBeVisible().withTimeout(4000); await tryTapping(element(by.id(`mention-item-${ username }`)), 2000, true); await expect(element(by.id('messagebox-input'))).toHaveText(`@${ username } `); - await tryTapping(element(by.id('messagebox-input')), 2000) + await tryTapping(element(by.id('messagebox-input')), 2000); await element(by.id('messagebox-input')).typeText(`${ data.random }mention`); await element(by.id('messagebox-send-message')).tap(); // await waitFor(element(by.label(`@${ data.user } ${ data.random }mention`)).atIndex(0)).toExist().withTimeout(60000); @@ -126,7 +125,7 @@ describe('Room screen', () => { it('should not show user autocomplete on @ in the middle of a string', async() => { await element(by.id('messagebox-input')).tap(); - await element(by.id('messagebox-input')).typeText(`email@gmail`); + await element(by.id('messagebox-input')).typeText('email@gmail'); await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(4000); await element(by.id('messagebox-input')).clearText(); }); @@ -134,9 +133,9 @@ describe('Room screen', () => { it('should show and tap on room autocomplete', async() => { await element(by.id('messagebox-input')).tap(); await element(by.id('messagebox-input')).typeText('#general'); - //await waitFor(element(by.id('messagebox-container'))).toExist().withTimeout(4000); + // await waitFor(element(by.id('messagebox-container'))).toExist().withTimeout(4000); await waitFor(element(by.id('mention-item-general'))).toBeVisible().withTimeout(4000); - await tryTapping(element(by.id('mention-item-general')), 2000, true) + await tryTapping(element(by.id('mention-item-general')), 2000, true); await expect(element(by.id('messagebox-input'))).toHaveText('#general '); await element(by.id('messagebox-input')).clearText(); }); @@ -147,7 +146,7 @@ describe('Room screen', () => { await waitFor(element(by.id('messagebox-container'))).toNotExist().withTimeout(4000); await element(by.id('messagebox-input')).clearText(); }); - it('should draft message', async () => { + it('should draft message', async() => { await element(by.id('messagebox-input')).tap(); await element(by.id('messagebox-input')).typeText(`${ data.random }draft`); await tapBack(); @@ -159,10 +158,10 @@ describe('Room screen', () => { await navigateToRoom(mainRoom); await expect(element(by.id('messagebox-input'))).toHaveText(''); - }); + }); }); - describe('Message', async() => { + describe('Message', () => { it('should copy permalink', async() => { await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); @@ -184,9 +183,9 @@ describe('Room screen', () => { }); it('should star message', async() => { - await starMessage('message') + await starMessage('message'); - await sleep(1000) //https://github.com/RocketChat/Rocket.Chat.ReactNative/issues/2324 + await sleep(1000); // https://github.com/RocketChat/Rocket.Chat.ReactNative/issues/2324 await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); @@ -229,8 +228,8 @@ describe('Room screen', () => { }); it('should ask for review', async() => { - await dismissReviewNag() //TODO: Create a proper test for this elsewhere. - }) + await dismissReviewNag(); // TODO: Create a proper test for this elsewhere. + }); it('should remove reaction', async() => { await element(by.id('message-reaction-:grinning:')).tap(); @@ -263,8 +262,8 @@ describe('Room screen', () => { }); it('should pin message', async() => { - await mockMessage('pin') - await pinMessage('pin') + await mockMessage('pin'); + await pinMessage('pin'); await waitFor(element(by.label(`${ data.random }pin`)).atIndex(0)).toExist().withTimeout(5000); await waitFor(element(by.label(`${ data.users.regular.username } Message pinned`)).atIndex(0)).toExist().withTimeout(5000); @@ -277,7 +276,7 @@ describe('Room screen', () => { }); it('should delete message', async() => { - await mockMessage('delete') + await mockMessage('delete'); await waitFor(element(by.label(`${ data.random }delete`)).atIndex(0)).toBeVisible(); await element(by.label(`${ data.random }delete`)).atIndex(0).longPress(); diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index ecbac2233b5..1d37bff3db9 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -1,9 +1,8 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, tapBack, sleep, searchRoom, mockMessage, starMessage, pinMessage } = require('../../helpers/app'); -const { sendMessage } = require('../../helpers/data_setup') +const { + navigateToLogin, login, tapBack, sleep, searchRoom, mockMessage, starMessage, pinMessage +} = require('../../helpers/app'); +const { sendMessage } = require('../../helpers/data_setup'); async function navigateToRoomActions(type) { let room; @@ -36,15 +35,14 @@ async function waitForToast() { } describe('Room actions screen', () => { - before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); await login(data.users.regular.username, data.users.regular.password); }); - - describe('Render', async() => { - describe('Direct', async() => { + + describe('Render', () => { + describe('Direct', () => { before(async() => { await navigateToRoomActions('d'); }); @@ -52,41 +50,41 @@ describe('Room actions screen', () => { it('should have room actions screen', async() => { await expect(element(by.id('room-actions-view'))).toExist(); }); - + it('should have info', async() => { await expect(element(by.id('room-actions-info'))).toExist(); }); - + // it('should have voice', async() => { // await expect(element(by.id('room-actions-voice'))).toExist(); // }); - + // it('should have video', async() => { // await expect(element(by.id('room-actions-video'))).toExist(); // }); - + it('should have files', async() => { await expect(element(by.id('room-actions-files'))).toExist(); }); - + it('should have mentions', async() => { await expect(element(by.id('room-actions-mentioned'))).toExist(); }); - + it('should have starred', async() => { await expect(element(by.id('room-actions-starred'))).toExist(); }); - + it('should have share', async() => { await waitFor(element(by.id('room-actions-share'))).toExist(); await expect(element(by.id('room-actions-share'))).toExist(); }); - + it('should have pinned', async() => { await waitFor(element(by.id('room-actions-pinned'))).toExist(); await expect(element(by.id('room-actions-pinned'))).toExist(); }); - + it('should have notifications', async() => { await waitFor(element(by.id('room-actions-notifications'))).toExist(); await expect(element(by.id('room-actions-notifications'))).toExist(); @@ -102,7 +100,7 @@ describe('Room actions screen', () => { }); }); - describe('Channel/Group', async() => { + describe('Channel/Group', () => { before(async() => { await navigateToRoomActions('c'); }); @@ -110,15 +108,15 @@ describe('Room actions screen', () => { it('should have room actions screen', async() => { await expect(element(by.id('room-actions-view'))).toExist(); }); - + it('should have info', async() => { await expect(element(by.id('room-actions-info'))).toExist(); }); - + // it('should have voice', async() => { // await expect(element(by.id('room-actions-voice'))).toExist(); // }); - + // it('should have video', async() => { // await expect(element(by.id('room-actions-video'))).toExist(); // }); @@ -130,34 +128,34 @@ describe('Room actions screen', () => { it('should have add user', async() => { await expect(element(by.id('room-actions-add-user'))).toExist(); }); - + it('should have files', async() => { await expect(element(by.id('room-actions-files'))).toExist(); }); - + it('should have mentions', async() => { await expect(element(by.id('room-actions-mentioned'))).toExist(); }); - + it('should have starred', async() => { await expect(element(by.id('room-actions-starred'))).toExist(); }); - + it('should have share', async() => { await waitFor(element(by.id('room-actions-share'))).toExist(); await expect(element(by.id('room-actions-share'))).toExist(); }); - + it('should have pinned', async() => { await waitFor(element(by.id('room-actions-pinned'))).toExist(); await expect(element(by.id('room-actions-pinned'))).toExist(); }); - + it('should have notifications', async() => { await waitFor(element(by.id('room-actions-notifications'))).toExist(); await expect(element(by.id('room-actions-notifications'))).toExist(); }); - + it('should have leave channel', async() => { await waitFor(element(by.id('room-actions-leave-channel'))).toExist(); await expect(element(by.id('room-actions-leave-channel'))).toExist(); @@ -165,7 +163,7 @@ describe('Room actions screen', () => { }); }); - describe('Usage', async() => { + describe('Usage', () => { describe('TDB', async() => { // TODO: test into a jitsi call // it('should NOT navigate to voice call', async() => { @@ -191,7 +189,7 @@ describe('Room actions screen', () => { // }); }); - describe('Common', async() => { + describe('Common', () => { it('should show mentioned messages', async() => { await element(by.id('room-actions-mentioned')).tap(); await waitFor(element(by.id('mentioned-messages-view'))).toExist().withTimeout(2000); @@ -200,24 +198,23 @@ describe('Room actions screen', () => { }); it('should show starred message and unstar it', async() => { - - //Go back to room and send a message + // Go back to room and send a message await tapBack(); await mockMessage('messageToStar'); - //Star the message - await starMessage('messageToStar') + // Star the message + await starMessage('messageToStar'); - //Back into Room Actions + // Back into Room Actions await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); - //Go to starred messages + // Go to starred messages await element(by.id('room-actions-starred')).tap(); await waitFor(element(by.id('starred-messages-view'))).toExist().withTimeout(2000); await waitFor(element(by.label(`${ data.random }messageToStar`).withAncestor(by.id('starred-messages-view')))).toExist().withTimeout(60000); - - //Unstar message + + // Unstar message await element(by.label(`${ data.random }messageToStar`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); @@ -228,15 +225,14 @@ describe('Room actions screen', () => { }); it('should show pinned message and unpin it', async() => { - - //Go back to room and send a message + // Go back to room and send a message await tapBack(); await mockMessage('messageToPin'); - //Pin the message - await pinMessage('messageToPin') + // Pin the message + await pinMessage('messageToPin'); - //Back into Room Actions + // Back into Room Actions await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); await element(by.id('room-actions-scrollview')).scrollTo('bottom'); @@ -273,7 +269,7 @@ describe('Room actions screen', () => { // }); }); - describe('Notification', async() => { + describe('Notification', () => { it('should navigate to notification preference view', async() => { await element(by.id('room-actions-scrollview')).scrollTo('bottom'); await waitFor(element(by.id('room-actions-notifications'))).toExist().withTimeout(2000); @@ -318,13 +314,13 @@ describe('Room actions screen', () => { after(async() => { await backToActions(); }); - }) + }); - describe('Channel/Group', async() => { + describe('Channel/Group', () => { // Currently, there's no way to add more owners to the room // So we test only for the 'You are the last owner...' message - const user = data.users.alternate + const user = data.users.alternate; it('should tap on leave channel and raise alert', async() => { await element(by.id('room-actions-scrollview')).scrollTo('bottom'); @@ -363,12 +359,24 @@ describe('Room actions screen', () => { await backToActions(); }); - describe('Room Members', async() => { + describe('Room Members', () => { before(async() => { await element(by.id('room-actions-members')).tap(); await waitFor(element(by.id('room-members-view'))).toExist().withTimeout(2000); }); + const openActionSheet = async(username) => { + await waitFor(element(by.id(`room-members-view-item-${ username }`))).toExist().withTimeout(5000); + await element(by.id(`room-members-view-item-${ username }`)).tap(); + await sleep(300); + await expect(element(by.id('action-sheet'))).toExist(); + await expect(element(by.id('action-sheet-handle'))).toBeVisible(); + }; + + const closeActionSheet = async() => { + await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.6); + }; + it('should show all users', async() => { await element(by.id('room-members-view-toggle-status')).tap(); await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); @@ -397,18 +405,6 @@ describe('Room actions screen', () => { await waitFor(element(by.id(`room-members-view-item-${ user.username }`))).toExist().withTimeout(60000); }); - const openActionSheet = async(username) => { - await waitFor(element(by.id(`room-members-view-item-${ username }`))).toExist().withTimeout(5000); - await element(by.id(`room-members-view-item-${ username }`)).tap(); - await sleep(300); - await expect(element(by.id('action-sheet'))).toExist(); - await expect(element(by.id('action-sheet-handle'))).toBeVisible(); - } - - const closeActionSheet = async() => { - await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.6); - } - it('should set/remove as owner', async() => { await openActionSheet(user.username); await element(by.id('action-sheet-set-owner')).tap(); @@ -504,9 +500,9 @@ describe('Room actions screen', () => { await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); }); }); - }) + }); - describe('Direct', async() => { + describe('Direct', () => { before(async() => { await navigateToRoomActions('d'); }); diff --git a/e2e/tests/room/04-discussion.spec.js b/e2e/tests/room/04-discussion.spec.js index aa39f2eafbc..29fc5a09025 100644 --- a/e2e/tests/room/04-discussion.spec.js +++ b/e2e/tests/room/04-discussion.spec.js @@ -1,7 +1,6 @@ const { - expect, element, by, waitFor -} = require('detox'); -const { navigateToLogin, login, mockMessage, tapBack, searchRoom } = require('../../helpers/app'); + navigateToLogin, login, mockMessage, tapBack, searchRoom +} = require('../../helpers/app'); const data = require('../../data'); const channel = data.groups.private.name; @@ -10,28 +9,28 @@ const navigateToRoom = async() => { await searchRoom(channel); await element(by.id(`rooms-list-view-item-${ channel }`)).tap(); await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); -} +}; describe('Discussion', () => { before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, newInstance: true, delete: true }); await navigateToLogin(); - await login(data.users.regular.username, data.users.regular.password) + await login(data.users.regular.username, data.users.regular.password); }); it('should create discussion from NewMessageView', async() => { - const discussionName = `${data.random} Discussion NewMessageView`; + const discussionName = `${ data.random } Discussion NewMessageView`; await element(by.id('rooms-list-view-create-channel')).tap(); await waitFor(element(by.id('new-message-view'))).toExist().withTimeout(2000); await element(by.label('Create Discussion')).atIndex(0).tap(); await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(60000); await expect(element(by.id('create-discussion-view'))).toExist(); await element(by.label('Select a Channel...')).tap(); - await element(by.id('multi-select-search')).replaceText(`${channel}`); - await waitFor(element(by.id(`multi-select-item-${channel}`))).toExist().withTimeout(10000); - await element(by.id(`multi-select-item-${channel}`)).tap(); + await element(by.id('multi-select-search')).replaceText(`${ channel }`); + await waitFor(element(by.id(`multi-select-item-${ channel }`))).toExist().withTimeout(10000); + await element(by.id(`multi-select-item-${ channel }`)).tap(); await element(by.id('multi-select-discussion-name')).replaceText(discussionName); - await waitFor(element(by.id(`create-discussion-submit`))).toExist().withTimeout(10000); + await waitFor(element(by.id('create-discussion-submit'))).toExist().withTimeout(10000); await element(by.id('create-discussion-submit')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(10000); await waitFor(element(by.id(`room-view-title-${ discussionName }`))).toExist().withTimeout(5000); @@ -40,20 +39,20 @@ describe('Discussion', () => { }); it('should create discussion from action button', async() => { - const discussionName = `${data.random} Discussion Action Button`; + const discussionName = `${ data.random } Discussion Action Button`; await navigateToRoom(); await element(by.id('messagebox-actions')).tap(); await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(2000); await element(by.label('Create Discussion')).atIndex(0).tap(); await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(2000); await element(by.id('multi-select-discussion-name')).replaceText(discussionName); - await waitFor(element(by.id(`create-discussion-submit`))).toExist().withTimeout(10000); + await waitFor(element(by.id('create-discussion-submit'))).toExist().withTimeout(10000); await element(by.id('create-discussion-submit')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(10000); await waitFor(element(by.id(`room-view-title-${ discussionName }`))).toExist().withTimeout(5000); }); - describe('Create Discussion from action sheet', async() => { + describe('Create Discussion from action sheet', () => { it('should send a message', async() => { await waitFor(element(by.id('messagebox'))).toBeVisible().withTimeout(60000); await mockMessage('message'); @@ -63,15 +62,15 @@ describe('Discussion', () => { const discussionName = `${ data.random }message`; await element(by.label(discussionName)).atIndex(0).longPress(); await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(2000); - await element(by.label(`Start a Discussion`)).atIndex(0).tap(); + await element(by.label('Start a Discussion')).atIndex(0).tap(); await waitFor(element(by.id('create-discussion-view'))).toExist().withTimeout(2000); await element(by.id('create-discussion-submit')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(10000); await waitFor(element(by.id(`room-view-title-${ discussionName }`))).toExist().withTimeout(5000); }); }); - - describe('Check RoomActionsView render', async() => { + + describe('Check RoomActionsView render', () => { it('should navigete to RoomActionsView', async() => { await waitFor(element(by.id('room-header'))).toBeVisible().withTimeout(5000); await element(by.id('room-header')).tap(); diff --git a/e2e/tests/room/05-threads.spec.js b/e2e/tests/room/05-threads.spec.js index 381fa2b07a2..e3eee4c3683 100644 --- a/e2e/tests/room/05-threads.spec.js +++ b/e2e/tests/room/05-threads.spec.js @@ -1,8 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, starMessage, pinMessage, dismissReviewNag, tryTapping } = require('../../helpers/app'); +const { + navigateToLogin, login, mockMessage, tapBack, sleep, searchRoom, dismissReviewNag +} = require('../../helpers/app'); async function navigateToRoom(roomName) { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); @@ -20,14 +19,14 @@ describe('Threads', () => { await navigateToRoom(mainRoom); }); - describe('Render', async() => { + describe('Render', () => { it('should have room screen', async() => { await expect(element(by.id('room-view'))).toExist(); await waitFor(element(by.id(`room-view-title-${ mainRoom }`))).toExist().withTimeout(5000); }); // Render - Header - describe('Header', async() => { + describe('Header', () => { it('should have actions button ', async() => { await expect(element(by.id('room-header'))).toExist(); }); @@ -38,7 +37,7 @@ describe('Threads', () => { }); // Render - Messagebox - describe('Messagebox', async() => { + describe('Messagebox', () => { it('should have messagebox', async() => { await expect(element(by.id('messagebox'))).toExist(); }); @@ -63,8 +62,8 @@ describe('Threads', () => { }); }); - describe('Usage', async() => { - describe('Thread', async() => { + describe('Usage', () => { + describe('Thread', () => { const thread = `${ data.random }thread`; it('should create thread', async() => { await mockMessage('thread'); @@ -104,9 +103,9 @@ describe('Threads', () => { const messageText = 'threadonly'; await mockMessage(messageText, true); await tapBack(); - await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( + await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await sleep(500); // TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( await waitFor(element(by.label(`${ data.random }${ messageText }`)).atIndex(0)).toNotExist().withTimeout(2000); }); @@ -117,24 +116,24 @@ describe('Threads', () => { await element(by.id('messagebox-send-to-channel')).tap(); await element(by.id('messagebox-send-message')).tap(); await tapBack(); - await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( + await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await sleep(500); // TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( await waitFor(element(by.label(messageText)).atIndex(0)).toExist().withTimeout(2000); }); it('should navigate to thread from thread name', async() => { const messageText = 'navthreadname'; await mockMessage('dummymessagebetweenthethread'); - await dismissReviewNag() //TODO: Create a proper test for this elsewhere. + await dismissReviewNag(); // TODO: Create a proper test for this elsewhere. await element(by.id(`message-thread-button-${ thread }`)).tap(); await element(by.id('messagebox-input-thread')).typeText(messageText); await element(by.id('messagebox-send-to-channel')).tap(); await element(by.id('messagebox-send-message')).tap(); await tapBack(); - await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); - await waitFor(element(by.id(`message-thread-replied-on-${ thread }`))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-header').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await waitFor(element(by.id(`message-thread-replied-on-${ thread }`))).toBeVisible().withTimeout(2000); await element(by.id(`message-thread-replied-on-${ thread }`)).tap(); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); await expect(element(by.id(`room-view-title-${ thread }`))).toExist(); @@ -155,7 +154,7 @@ describe('Threads', () => { await tapBack(); }); - it('should draft thread message', async () => { + it('should draft thread message', async() => { await element(by.id(`message-thread-button-${ thread }`)).tap(); await waitFor(element(by.id(`room-view-title-${ thread }`))).toExist().withTimeout(5000); await element(by.id('messagebox-input-thread')).typeText(`${ thread }draft`); diff --git a/e2e/tests/room/06-createdmgroup.spec.js b/e2e/tests/room/06-createdmgroup.spec.js index a6451bfd723..bd2be06abc1 100644 --- a/e2e/tests/room/06-createdmgroup.spec.js +++ b/e2e/tests/room/06-createdmgroup.spec.js @@ -1,8 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { tapBack, sleep, navigateToLogin, login, tryTapping } = require('../../helpers/app'); +const { + navigateToLogin, login +} = require('../../helpers/app'); @@ -13,41 +12,39 @@ describe('Group DM', () => { await login(data.users.regular.username, data.users.regular.password); }); - describe('Create Group DM', async() => { + describe('Create Group DM', () => { before(async() => { await element(by.id('rooms-list-view-create-channel')).tap(); }); - describe('Render', async() => { + describe('Render', () => { it('should have new message screen', async() => { await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000); }); - + it('should have search input', async() => { await waitFor(element(by.id('new-message-view-search'))).toBeVisible().withTimeout(2000); }); - }) + }); - describe('Usage', async() => { + describe('Usage', () => { it('should navigate to create DM', async() => { await element(by.label('Create Direct Messages')).tap(); }); it('should add users', async() => { await element(by.id('select-users-view-search')).replaceText('rocket.cat'); - await waitFor(element(by.id(`select-users-view-item-rocket.cat`))).toBeVisible().withTimeout(10000); + await waitFor(element(by.id('select-users-view-item-rocket.cat'))).toBeVisible().withTimeout(10000); await element(by.id('select-users-view-item-rocket.cat')).tap(); await element(by.id('select-users-view-search')).replaceText(data.users.existing.username); - await waitFor(element(by.id(`select-users-view-item-${data.users.existing.username}`))).toBeVisible().withTimeout(10000); - await element(by.id(`select-users-view-item-${data.users.existing.username}`)).tap(); + await waitFor(element(by.id(`select-users-view-item-${ data.users.existing.username }`))).toBeVisible().withTimeout(10000); + await element(by.id(`select-users-view-item-${ data.users.existing.username }`)).tap(); await element(by.id('selected-users-view-submit')).tap(); }); it('check Group DM exist', async() => { - await waitFor(element(by.id(`room-view-title-${data.users.existing.username}, rocket.cat`))).toExist().withTimeout(10000); + await waitFor(element(by.id(`room-view-title-${ data.users.existing.username }, rocket.cat`))).toExist().withTimeout(10000); }); - - - }) + }); }); }); diff --git a/e2e/tests/room/07-markasunread.spec.js b/e2e/tests/room/07-markasunread.spec.js index 383f49a7b9a..82920ba846a 100644 --- a/e2e/tests/room/07-markasunread.spec.js +++ b/e2e/tests/room/07-markasunread.spec.js @@ -1,9 +1,8 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, searchRoom, sleep } = require('../../helpers/app'); -const { sendMessage } = require('../../helpers/data_setup') +const { + navigateToLogin, login, searchRoom, sleep +} = require('../../helpers/app'); +const { sendMessage } = require('../../helpers/data_setup'); async function navigateToRoom(user) { await searchRoom(`${ user }`); @@ -12,7 +11,7 @@ async function navigateToRoom(user) { } describe('Mark as unread', () => { - const user = data.users.alternate.username + const user = data.users.alternate.username; before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); @@ -21,9 +20,8 @@ describe('Mark as unread', () => { await navigateToRoom(user); }); - // TODO: Fix flakiness. If it fails, run it solo. - describe('Usage', async() => { - describe('Mark message as unread', async() => { + describe('Usage', () => { + describe('Mark message as unread', () => { it('should mark message as unread', async() => { const message = `${ data.random }message-mark-as-unread`; const channelName = `@${ data.users.regular.username }`; @@ -35,7 +33,7 @@ describe('Mark as unread', () => { await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await element(by.label('Mark Unread')).atIndex(0).tap(); await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(5000); - await expect(element(by.id(`rooms-list-view-item-${data.users.alternate.username}`))).toExist(); + await expect(element(by.id(`rooms-list-view-item-${ data.users.alternate.username }`))).toExist(); }); }); }); diff --git a/e2e/tests/room/08-roominfo.spec.js b/e2e/tests/room/08-roominfo.spec.js index fd6216cf91a..8786c376182 100644 --- a/e2e/tests/room/08-roominfo.spec.js +++ b/e2e/tests/room/08-roominfo.spec.js @@ -1,10 +1,9 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, tapBack, sleep, searchRoom } = require('../../helpers/app'); +const { + navigateToLogin, login, tapBack, sleep, searchRoom +} = require('../../helpers/app'); -const privateRoomName = data.groups.private.name +const privateRoomName = data.groups.private.name; async function navigateToRoomInfo(type) { let room; @@ -31,14 +30,13 @@ async function waitForToast() { } describe('Room info screen', () => { - before(async() => { await device.launchApp({ permissions: { notifications: 'YES' }, delete: true }); await navigateToLogin(); await login(data.users.regular.username, data.users.regular.password); }); - describe('Direct', async() => { + describe('Direct', () => { before(async() => { await navigateToRoomInfo('d'); }); @@ -49,107 +47,107 @@ describe('Room info screen', () => { }); after(async() => { - await tapBack() - await tapBack() - await tapBack() - }) + await tapBack(); + await tapBack(); + await tapBack(); + }); }); - describe('Channel/Group', async() => { + describe('Channel/Group', () => { before(async() => { await navigateToRoomInfo('c'); }); - describe('Render', async() => { + describe('Render', () => { it('should have room info view', async() => { await expect(element(by.id('room-info-view'))).toExist(); }); - + it('should have name', async() => { await expect(element(by.id('room-info-view-name'))).toExist(); }); - + it('should have description', async() => { await expect(element(by.label('Description'))).toExist(); }); - + it('should have topic', async() => { await expect(element(by.label('Topic'))).toExist(); }); - + it('should have announcement', async() => { await expect(element(by.label('Announcement'))).toExist(); }); - + it('should have edit button', async() => { await expect(element(by.id('room-info-view-edit-button'))).toExist(); }); }); - describe('Render Edit', async() => { + describe('Render Edit', () => { before(async() => { await waitFor(element(by.id('room-info-view-edit-button'))).toExist().withTimeout(10000); await element(by.id('room-info-view-edit-button')).tap(); await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000); }); - + it('should have room info edit view', async() => { await expect(element(by.id('room-info-edit-view'))).toExist(); }); - + it('should have name input', async() => { await expect(element(by.id('room-info-edit-view-name'))).toExist(); }); - + it('should have description input', async() => { await expect(element(by.id('room-info-edit-view-description'))).toExist(); }); - + it('should have topic input', async() => { await expect(element(by.id('room-info-edit-view-topic'))).toExist(); }); - + it('should have announcement input', async() => { await expect(element(by.id('room-info-edit-view-announcement'))).toExist(); }); - + it('should have password input', async() => { await expect(element(by.id('room-info-edit-view-password'))).toExist(); }); - + it('should have type switch', async() => { // Ugly hack to scroll on detox await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.8); await expect(element(by.id('room-info-edit-view-t'))).toExist(); }); - + it('should have ready only switch', async() => { await expect(element(by.id('room-info-edit-view-ro'))).toExist(); }); - + it('should have submit button', async() => { await expect(element(by.id('room-info-edit-view-submit'))).toExist(); }); - + it('should have reset button', async() => { await expect(element(by.id('room-info-edit-view-reset'))).toExist(); }); - + it('should have archive button', async() => { await expect(element(by.id('room-info-edit-view-archive'))).toExist(); }); - + it('should have delete button', async() => { await expect(element(by.id('room-info-edit-view-delete'))).toExist(); }); - + after(async() => { // Ugly hack to scroll on detox await element(by.id('room-info-edit-view-list')).swipe('down', 'fast', 0.8); }); }); - - describe('Usage', async() => { + + describe('Usage', () => { // it('should enter "invalid name" and get error', async() => { // await element(by.type('UIScrollView')).atIndex(1).swipe('down'); // await element(by.id('room-info-edit-view-name')).replaceText('invalid name'); @@ -161,7 +159,7 @@ describe('Room info screen', () => { // await waitFor(element(by.text('There was an error while saving settings!'))).toBeNotVisible().withTimeout(10000); // await element(by.type('UIScrollView')).atIndex(1).swipe('down'); // }); - + it('should change room name', async() => { await element(by.id('room-info-edit-view-name')).replaceText(`${ privateRoomName }new`); await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); @@ -179,7 +177,7 @@ describe('Room info screen', () => { await waitForToast(); await element(by.id('room-info-edit-view-list')).swipe('down', 'fast', 0.8); }); - + it('should reset form', async() => { await element(by.id('room-info-edit-view-name')).replaceText('abc'); await element(by.id('room-info-edit-view-description')).replaceText('abc'); @@ -188,7 +186,7 @@ describe('Room info screen', () => { await element(by.id('room-info-edit-view-password')).replaceText('abc'); await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-t')).tap(); - await element(by.id('room-info-edit-view-ro')).longPress(); //https://github.com/facebook/react-native/issues/28032 + await element(by.id('room-info-edit-view-ro')).longPress(); // https://github.com/facebook/react-native/issues/28032 await element(by.id('room-info-edit-view-react-when-ro')).tap(); await element(by.id('room-info-edit-view-reset')).tap(); // after reset @@ -202,7 +200,7 @@ describe('Room info screen', () => { await expect(element(by.id('room-info-edit-view-react-when-ro'))).toBeNotVisible(); await element(by.id('room-info-edit-view-list')).swipe('down', 'fast', 0.8); }); - + it('should change room description', async() => { await element(by.id('room-info-edit-view-description')).replaceText('new description'); await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); @@ -212,7 +210,7 @@ describe('Room info screen', () => { await waitFor(element(by.id('room-info-view'))).toExist().withTimeout(2000); await expect(element(by.label('new description').withAncestor(by.id('room-info-view-description')))).toExist(); }); - + it('should change room topic', async() => { await waitFor(element(by.id('room-info-view-edit-button'))).toExist().withTimeout(10000); await element(by.id('room-info-view-edit-button')).tap(); @@ -225,7 +223,7 @@ describe('Room info screen', () => { await waitFor(element(by.id('room-info-view'))).toExist().withTimeout(2000); await expect(element(by.label('new topic').withAncestor(by.id('room-info-view-topic')))).toExist(); }); - + it('should change room announcement', async() => { await waitFor(element(by.id('room-info-view-edit-button'))).toExist().withTimeout(10000); await element(by.id('room-info-view-edit-button')).tap(); @@ -238,7 +236,7 @@ describe('Room info screen', () => { await waitFor(element(by.id('room-info-view'))).toExist().withTimeout(2000); await expect(element(by.label('new announcement').withAncestor(by.id('room-info-view-announcement')))).toExist(); }); - + it('should change room password', async() => { await waitFor(element(by.id('room-info-view-edit-button'))).toExist().withTimeout(10000); await element(by.id('room-info-view-edit-button')).tap(); @@ -248,7 +246,7 @@ describe('Room info screen', () => { await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); }); - + it('should change room type', async() => { await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-t')).tap(); @@ -258,7 +256,7 @@ describe('Room info screen', () => { await element(by.id('room-info-edit-view-submit')).tap(); await waitForToast(); }); - + // it('should change room read only and allow reactions', async() => { // await sleep(1000); // await element(by.type('UIScrollView')).atIndex(1).swipe('up'); @@ -270,7 +268,7 @@ describe('Room info screen', () => { // await waitForToast(); // // TODO: test if it's possible to react // }); - + it('should archive room', async() => { await element(by.id('room-info-edit-view-list')).swipe('up', 'fast', 0.5); await element(by.id('room-info-edit-view-archive')).tap(); diff --git a/e2e/tests/room/09-jumptomessage.spec.js b/e2e/tests/room/09-jumptomessage.spec.js index 5071e4de9bd..82ab06e5bd9 100644 --- a/e2e/tests/room/09-jumptomessage.spec.js +++ b/e2e/tests/room/09-jumptomessage.spec.js @@ -1,8 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, mockMessage, tapBack, login, sleep, searchRoom } = require('../../helpers/app'); +const { + navigateToLogin, tapBack, login, searchRoom +} = require('../../helpers/app'); async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); @@ -20,9 +19,9 @@ async function clearCache() { await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000); await element(by.id('settings-view-clear-cache')).tap(); await waitFor(element(by.text('This will clear all your offline data.'))).toExist().withTimeout(2000); - await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); + await element(by.label('Clear').and(by.type('_UIAlertControllerActionView'))).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`rooms-list-view-item-jumping`))).toExist().withTimeout(10000); + await waitFor(element(by.id('rooms-list-view-item-jumping'))).toExist().withTimeout(10000); } async function waitForLoading() { @@ -51,7 +50,7 @@ describe('Room', () => { await element(by.id('nav-jump-to-bottom')).tap(); await waitFor(element(by.label('Quote first message'))).toExist().withTimeout(5000); await clearCache(); - }) + }); it('should load messages on scroll', async() => { await navigateToRoom('jumping'); @@ -64,6 +63,7 @@ describe('Room', () => { await expect(element(by.label('249'))).toExist(); found = true; } catch { + // } } await clearCache(); @@ -80,7 +80,7 @@ describe('Room', () => { await expect(element(by.label('30'))).toExist(); await expect(element(by.label('31'))).toExist(); await expect(element(by.label('32'))).toExist(); - }) + }); it('should load newer and older messages', async() => { await element(by.id('room-view-messages')).atIndex(0).swipe('down', 'fast', 0.8); @@ -114,9 +114,9 @@ describe('Room', () => { const expectThreadMessages = async(message) => { await waitFor(element(by.id('room-view-title-jumping-thread'))).toExist().withTimeout(5000); await expect(element(by.label(message))).toExist(); -} +}; -describe('Threads', async() => { +describe('Threads', () => { it('should navigate to a thread from another room', async() => { await navigateToRoom('jumping'); await waitFor(element(by.label('Go to jumping-thread\'s thread')).atIndex(0)).toExist().withTimeout(5000); @@ -150,5 +150,5 @@ describe('Threads', async() => { await expectThreadMessages('to be searched'); }); - //TODO: Threads pagination -}); \ No newline at end of file + // TODO: Threads pagination +}); diff --git a/e2e/tests/team/01-createteam.spec.js b/e2e/tests/team/01-createteam.spec.js index 3c9a2260cd7..0fb71a7b62e 100644 --- a/e2e/tests/team/01-createteam.spec.js +++ b/e2e/tests/team/01-createteam.spec.js @@ -1,6 +1,3 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); const { navigateToLogin, login } = require('../../helpers/app'); @@ -13,7 +10,7 @@ describe('Create team screen', () => { await login(data.users.regular.username, data.users.regular.password); }); - describe('New Message', async() => { + describe('New Message', () => { before(async() => { await element(by.id('rooms-list-view-create-channel')).tap(); }); @@ -28,17 +25,17 @@ describe('Create team screen', () => { }); }); - describe('Select Users', async() => { + describe('Select Users', () => { it('should nav to create team', async() => { await element(by.id('selected-users-view-submit')).tap(); await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(10000); }); - }) + }); - describe('Create Team', async() => { - describe('Usage', async() => { + describe('Create Team', () => { + describe('Usage', () => { it('should get invalid team name', async() => { - await element(by.id('create-channel-name')).typeText(`${data.teams.private.name}`); + await element(by.id('create-channel-name')).typeText(`${ data.teams.private.name }`); await element(by.id('create-channel-submit')).tap(); await element(by.text('OK')).tap(); }); @@ -52,10 +49,10 @@ describe('Create team screen', () => { await waitFor(element(by.id(`room-view-title-${ teamName }`))).toExist().withTimeout(6000); await expect(element(by.id(`room-view-title-${ teamName }`))).toExist(); }); - }) + }); }); - describe('Delete Team', async() => { + describe('Delete Team', () => { it('should navigate to room info edit view', async() => { await element(by.id('room-header')).tap(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(5000); diff --git a/e2e/tests/team/02-team.spec.js b/e2e/tests/team/02-team.spec.js index f9b8195957e..c8451cc45ce 100644 --- a/e2e/tests/team/02-team.spec.js +++ b/e2e/tests/team/02-team.spec.js @@ -1,8 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, tapBack, sleep, searchRoom } = require('../../helpers/app'); +const { + navigateToLogin, login, tapBack, sleep, searchRoom +} = require('../../helpers/app'); async function navigateToRoom(roomName) { await searchRoom(`${ roomName }`); @@ -29,7 +28,7 @@ async function backToActions() { await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(2000); } async function closeActionSheet() { - await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.6); + await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.6); } async function waitForToast() { @@ -49,13 +48,13 @@ describe('Team', () => { await navigateToRoom(team); }); - describe('Team Room', async() => { - describe('Team Header', async() => { + describe('Team Room', () => { + describe('Team Header', () => { it('should have actions button ', async() => { await expect(element(by.id('room-header'))).toExist(); }); - - it('should have team channels button ', async() => { + + it('should have team channels button ', async() => { await expect(element(by.id('room-view-header-team-channels'))).toExist(); }); @@ -69,19 +68,19 @@ describe('Team', () => { }); }); - describe('Team Header Usage', async() => { + describe('Team Header Usage', () => { it('should navigate to team channels view', async() => { await element(by.id('room-view-header-team-channels')).tap(); await waitFor(element(by.id('team-channels-view'))).toExist().withTimeout(5000); }); - }) + }); - describe('Team Channels Header', async() => { + describe('Team Channels Header', () => { it('should have actions button ', async() => { await expect(element(by.id('room-header'))).toExist(); }); - - it('should have team channels button ', async() => { + + it('should have team channels button ', async() => { await expect(element(by.id('team-channels-view-create'))).toExist(); }); @@ -90,10 +89,10 @@ describe('Team', () => { }); }); - describe('Team Channels Header Usage', async() => { + describe('Team Channels Header Usage', () => { it('should navigate to add team channels view', async() => { await element(by.id('team-channels-view-create')).tap(); - await waitFor(element(by.id('add-channel-team-view'))).toExist().withTimeout(5000); + await waitFor(element(by.id('add-channel-team-view'))).toExist().withTimeout(5000); }); it('should have create new button', async() => { @@ -103,11 +102,10 @@ describe('Team', () => { it('should add existing button', async() => { await waitFor(element(by.id('add-channel-team-view-add-existing'))).toExist().withTimeout(5000); }); - }) + }); - describe('Channels', async() => { + describe('Channels', () => { it('should create new channel for team', async() => { - await element(by.id('add-channel-team-view-create-channel')).tap(); await element(by.id('select-users-view-search')).replaceText('rocket.cat'); @@ -138,12 +136,11 @@ describe('Team', () => { }); it('should add existing channel to team', async() => { - await element(by.id('team-channels-view-create')).tap(); await waitFor(element(by.id('add-channel-team-view'))).toExist().withTimeout(5000); await element(by.id('add-channel-team-view-add-existing')).tap(); - await waitFor(element(by.id('add-existing-channel-view'))).toExist().withTimeout(60000) + await waitFor(element(by.id('add-existing-channel-view'))).toExist().withTimeout(60000); await expect(element(by.id(`add-existing-channel-view-item-${ existingRoom }`))).toExist(); await element(by.id(`add-existing-channel-view-item-${ existingRoom }`)).tap(); await waitFor(element(by.id('add-existing-channel-view-submit'))).toExist().withTimeout(6000); @@ -174,14 +171,14 @@ describe('Team', () => { await waitFor(element(by.id('auto-join-tag'))).toBeNotVisible().withTimeout(5000); await waitFor(element(by.id(`rooms-list-view-item-${ existingRoom }`))).toExist().withTimeout(6000); }); - }) + }); - describe('Team actions', () => { + describe('Team actions', () => { before(async() => { await tapBack(); await navigateToRoomActions(); }); - + it('should add users to the team', async() => { await waitFor(element(by.id('room-actions-add-user'))).toExist().withTimeout(10000); await element(by.id('room-actions-add-user')).tap(); @@ -214,9 +211,9 @@ describe('Team', () => { await element(by.id('room-actions-leave-channel')).tap(); await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); - await waitFor(element(by.id(`select-list-view-item-${room}`))).toExist().withTimeout(2000); - await waitFor(element(by.id(`select-list-view-item-${existingRoom}`))).toExist().withTimeout(2000); - await element(by.id(`select-list-view-item-${room}`)).tap(); + await waitFor(element(by.id(`select-list-view-item-${ room }`))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${ existingRoom }`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${ room }`)).tap(); await waitFor(element(by.label('You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.'))).toExist().withTimeout(2000); await element(by.text('OK')).tap(); @@ -227,8 +224,8 @@ describe('Team', () => { await tapBack(); await waitFor(element(by.id('room-actions-view'))).toExist().withTimeout(2000); }); - - describe('Room Members', async() => { + + describe('Room Members', () => { before(async() => { await element(by.id('room-actions-members')).tap(); await waitFor(element(by.id('room-members-view'))).toExist().withTimeout(2000); @@ -278,9 +275,9 @@ describe('Team', () => { await element(by.id('room-actions-leave-channel')).tap(); await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); - await waitFor(element(by.id(`select-list-view-item-${room}`))).toExist().withTimeout(2000); - await waitFor(element(by.id(`select-list-view-item-${existingRoom}`))).toExist().withTimeout(2000); - await element(by.id(`select-list-view-item-${room}`)).tap(); + await waitFor(element(by.id(`select-list-view-item-${ room }`))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${ existingRoom }`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${ room }`)).tap(); await waitFor(element(by.label('You are the last owner of this channel. Once you leave the team, the channel will be kept inside the team but you will be managing it from outside.'))).toExist().withTimeout(2000); await element(by.text('OK')).tap(); @@ -291,4 +288,4 @@ describe('Team', () => { }); }); }); -}); \ No newline at end of file +}); diff --git a/e2e/tests/team/03-moveconvert.spec.js b/e2e/tests/team/03-moveconvert.spec.js index 17143c60926..7c071442b03 100644 --- a/e2e/tests/team/03-moveconvert.spec.js +++ b/e2e/tests/team/03-moveconvert.spec.js @@ -1,8 +1,7 @@ -const { - device, expect, element, by, waitFor -} = require('detox'); const data = require('../../data'); -const { navigateToLogin, login, tapBack, searchRoom, sleep } = require('../../helpers/app'); +const { + navigateToLogin, login, tapBack, searchRoom, sleep +} = require('../../helpers/app'); const toBeConverted = `to-be-converted-${ data.random }`; const toBeMoved = `to-be-moved-${ data.random }`; @@ -21,7 +20,7 @@ const createChannel = async(room) => { await tapBack(); await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); -} +}; async function navigateToRoom(room) { await searchRoom(`${ room }`); @@ -42,7 +41,7 @@ describe('Move/Convert Team', () => { await login(data.users.regular.username, data.users.regular.password); }); - describe('Convert', async() => { + describe('Convert', () => { before(async() => { await createChannel(toBeConverted); }); @@ -61,10 +60,10 @@ describe('Move/Convert Team', () => { after(async() => { await tapBack(); await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); - }) + }); }); - describe('Move', async() => { + describe('Move', () => { before(async() => { await createChannel(toBeMoved); }); @@ -78,12 +77,12 @@ describe('Move/Convert Team', () => { await element(by.id('select-list-view-submit')).tap(); await sleep(2000); await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); - await waitFor(element(by.id(`select-list-view-item-${toBeConverted}`))).toExist().withTimeout(2000); - await element(by.id(`select-list-view-item-${toBeConverted}`)).tap(); + await waitFor(element(by.id(`select-list-view-item-${ toBeConverted }`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${ toBeConverted }`)).tap(); await element(by.id('select-list-view-submit')).atIndex(0).tap(); await waitFor(element(by.label('After reading the previous intructions about this behavior, do you still want to move this channel to the selected team?'))).toExist().withTimeout(2000); await element(by.text('Yes, move it!')).tap(); await waitFor(element(by.id('room-view-header-team-channels'))).toExist().withTimeout(10000); }); - }) + }); }); From 46689930c39566d9f52d5c16fad8c72f55e88663 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 2 Jul 2021 16:13:41 -0300 Subject: [PATCH 161/177] [FIX] App not showing proper alert on team delete (#3219) * [FIX] Rule to delete team's channel * Fixed Saga and flow to delete team and team's channel * Adjusted the warning alert as the Figma Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/actions/room.js | 7 ++-- app/i18n/locales/en.json | 5 ++- app/i18n/locales/pt-BR.json | 6 +++- app/reducers/room.js | 2 +- app/sagas/room.js | 29 +++++++++++----- app/views/RoomInfoEditView/index.js | 52 +++++++++++------------------ 6 files changed, 54 insertions(+), 47 deletions(-) diff --git a/app/actions/room.js b/app/actions/room.js index 4ad7e87f6ac..2753d7b9ae7 100644 --- a/app/actions/room.js +++ b/app/actions/room.js @@ -23,11 +23,12 @@ export function leaveRoom(roomType, room, selected) { }; } -export function deleteRoom(rid, t) { +export function deleteRoom(roomType, room, selected) { return { type: types.ROOM.DELETE, - rid, - t + room, + roomType, + selected }; } diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 926b0c6746e..723b4dd9e53 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -762,5 +762,8 @@ "Move_to_Team_Warning": "After reading the previous intructions about this behavior, do you still want to move this channel to the selected team?", "Load_More": "Load More", "Load_Newer": "Load Newer", - "Load_Older": "Load Older" + "Load_Older": "Load Older", + "Left_The_Room_Successfully": "Left the room successfully", + "Deleted_The_Team_Successfully": "Team deleted successfully", + "Deleted_The_Room_Successfully": "Room deleted successfully" } \ No newline at end of file diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 9b34d87d3f5..06b00f68516 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -665,5 +665,9 @@ "Team_not_found": "Time não encontrado", "Private_Team": "Equipe Privada", "Add_Existing_Channel": "Adicionar Canal Existente", - "invalid-room": "Sala inválida" + "invalid-room": "Sala inválida", + "Left_The_Team_Successfully": "Saiu do time com sucesso", + "Left_The_Room_Successfully": "Saiu da sala com sucesso", + "Deleted_The_Team_Successfully": "Time deletado com sucesso", + "Deleted_The_Room_Successfully": "Sala deletada com sucesso" } \ No newline at end of file diff --git a/app/reducers/room.js b/app/reducers/room.js index de47fcede2d..980715051aa 100644 --- a/app/reducers/room.js +++ b/app/reducers/room.js @@ -28,7 +28,7 @@ export default function(state = initialState, action) { case ROOM.DELETE: return { ...state, - rid: action.rid, + rid: action.room.rid, isDeleting: true }; case ROOM.CLOSE: diff --git a/app/sagas/room.js b/app/sagas/room.js index e17a06da971..70a0bc4da87 100644 --- a/app/sagas/room.js +++ b/app/sagas/room.js @@ -32,7 +32,7 @@ const watchUserTyping = function* watchUserTyping({ rid, status }) { } }; -const handleRemovedRoom = function* handleRemovedRoom(roomType) { +const handleRemovedRoom = function* handleRemovedRoom(roomType, actionType) { const isMasterDetail = yield select(state => state.app.isMasterDetail); if (isMasterDetail) { yield Navigation.navigate('DrawerNavigator'); @@ -40,9 +40,13 @@ const handleRemovedRoom = function* handleRemovedRoom(roomType) { yield Navigation.navigate('RoomsListView'); } - if (roomType === 'team') { - EventEmitter.emit(LISTENER, { message: I18n.t('Left_The_Team_Successfully') }); + if (actionType === 'leave') { + EventEmitter.emit(LISTENER, { message: roomType === 'team' ? I18n.t('Left_The_Team_Successfully') : I18n.t('Left_The_Room_Successfully') }); } + if (actionType === 'delete') { + EventEmitter.emit(LISTENER, { message: roomType === 'team' ? I18n.t('Deleted_The_Team_Successfully') : I18n.t('Deleted_The_Room_Successfully') }); + } + // types.ROOM.REMOVE is triggered by `subscriptions-changed` with `removed` arg const { timeout } = yield race({ @@ -66,7 +70,7 @@ const handleLeaveRoom = function* handleLeaveRoom({ room, roomType, selected }) } if (result?.success) { - yield handleRemovedRoom(roomType); + yield handleRemovedRoom(roomType, 'leave'); } } catch (e) { logEvent(events.RA_LEAVE_F); @@ -80,16 +84,23 @@ const handleLeaveRoom = function* handleLeaveRoom({ room, roomType, selected }) } }; -const handleDeleteRoom = function* handleDeleteRoom({ rid, t }) { +const handleDeleteRoom = function* handleDeleteRoom({ room, roomType, selected }) { logEvent(events.RI_EDIT_DELETE); try { - const result = yield RocketChat.deleteRoom(rid, t); - if (result.success) { - yield handleRemovedRoom(); + let result = {}; + + if (roomType === 'channel') { + result = yield RocketChat.deleteRoom(room.rid, room.t); + } else if (roomType === 'team') { + result = yield RocketChat.deleteTeam({ teamId: room.teamId, ...(selected && { roomsToRemove: selected }) }); + } + + if (result?.success) { + yield handleRemovedRoom(roomType, 'delete'); } } catch (e) { logEvent(events.RI_EDIT_DELETE_F); - Alert.alert(I18n.t('Oops'), I18n.t('There_was_an_error_while_action', { action: I18n.t('deleting_room') })); + Alert.alert(I18n.t('Oops'), I18n.t('There_was_an_error_while_action', { action: roomType === 'team' ? I18n.t('deleting_team') : I18n.t('deleting_room') })); } }; diff --git a/app/views/RoomInfoEditView/index.js b/app/views/RoomInfoEditView/index.js index d5dd7f0c54f..28666b2cac9 100644 --- a/app/views/RoomInfoEditView/index.js +++ b/app/views/RoomInfoEditView/index.js @@ -292,34 +292,11 @@ class RoomInfoEditView extends React.Component { }, 100); } - handleDeleteTeam = async(selected) => { - logEvent(events.RI_EDIT_DELETE_TEAM); - const { navigation, isMasterDetail } = this.props; - const { room } = this.state; - try { - const result = await RocketChat.deleteTeam({ teamId: room.teamId, ...(selected && { roomsToRemove: selected }) }); - if (result.success) { - if (isMasterDetail) { - navigation.navigate('DrawerNavigator'); - } else { - navigation.navigate('RoomsListView'); - } - } - } catch (e) { - logEvent(events.RI_EDIT_DELETE_TEAM_F); - log(e); - showErrorAlert( - e.data.error - ? I18n.t(e.data.error) - : I18n.t('There_was_an_error_while_action', { action: I18n.t('deleting_team') }), - I18n.t('Cannot_delete') - ); - } - } - deleteTeam = async() => { const { room } = this.state; - const { navigation } = this.props; + const { + navigation, deleteCPermission, deletePPermission, deleteRoom + } = this.props; try { const db = database.active; @@ -329,16 +306,27 @@ class RoomInfoEditView extends React.Component { Q.where('team_main', Q.notEq(true)) ); - if (teamChannels.length) { + const teamChannelOwner = []; + for (let i = 0; i < teamChannels.length; i += 1) { + const permissionType = teamChannels[i].t === 'c' ? deleteCPermission : deletePPermission; + // eslint-disable-next-line no-await-in-loop + const permissions = await RocketChat.hasPermission([ + permissionType + ], teamChannels[i].rid); + + if (permissions[0]) { teamChannelOwner.push(teamChannels[i]); } + } + + if (teamChannelOwner.length) { navigation.navigate('SelectListView', { title: 'Delete_Team', - data: teamChannels, + data: teamChannelOwner, infoText: 'Select_channels_to_delete', nextAction: (selected) => { showConfirmationAlert({ message: I18n.t('You_are_deleting_the_team', { team: RocketChat.getRoomTitle(room) }), confirmationText: I18n.t('Yes_action_it', { action: I18n.t('delete') }), - onPress: () => this.handleDeleteTeam(selected) + onPress: () => deleteRoom('team', room, selected) }); } }); @@ -346,7 +334,7 @@ class RoomInfoEditView extends React.Component { showConfirmationAlert({ message: I18n.t('You_are_deleting_the_team', { team: RocketChat.getRoomTitle(room) }), confirmationText: I18n.t('Yes_action_it', { action: I18n.t('delete') }), - onPress: () => this.handleDeleteTeam() + onPress: () => deleteRoom('team', room) }); } } catch (e) { @@ -375,7 +363,7 @@ class RoomInfoEditView extends React.Component { { text: I18n.t('Yes_action_it', { action: I18n.t('delete') }), style: 'destructive', - onPress: () => deleteRoom(room.rid, room.t) + onPress: () => deleteRoom('channel', room) } ], { cancelable: false } @@ -767,7 +755,7 @@ const mapStateToProps = state => ({ }); const mapDispatchToProps = dispatch => ({ - deleteRoom: (rid, t) => dispatch(deleteRoomAction(rid, t)) + deleteRoom: (roomType, room, selected) => dispatch(deleteRoomAction(roomType, room, selected)) }); export default connect(mapStateToProps, mapDispatchToProps)(withTheme(RoomInfoEditView)); From 58d21be195dbb87f833de68079c01f47fbfab0f4 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 2 Jul 2021 16:15:21 -0300 Subject: [PATCH 162/177] [IMPROVE] Add Jitsi button to Teams (#3223) * [IMPROVE] Add Jitsi button to teams * Added setting to check is Jitsi is Enable for Channel too * Fix typo Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/constants/settings.js | 6 ++++++ app/views/RoomActionsView/index.js | 13 +++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/constants/settings.js b/app/constants/settings.js index d684a11c10a..14ad8fb36f8 100644 --- a/app/constants/settings.js +++ b/app/constants/settings.js @@ -196,5 +196,11 @@ export default { }, Accounts_AllowInvisibleStatusOption: { type: 'valueAsString' + }, + Jitsi_Enable_Teams: { + type: 'valueAsBoolean' + }, + Jitsi_Enable_Channels: { + type: 'valuesAsBoolean' } }; diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index d16ea57688e..75c977a280d 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -50,6 +50,8 @@ class RoomActionsView extends React.Component { route: PropTypes.object, leaveRoom: PropTypes.func, jitsiEnabled: PropTypes.bool, + jitsiEnableTeams: PropTypes.bool, + jitsiEnableChannels: PropTypes.bool, encryptionEnabled: PropTypes.bool, setLoadingInvite: PropTypes.func, closeRoom: PropTypes.func, @@ -655,10 +657,15 @@ class RoomActionsView extends React.Component { renderJitsi = () => { const { room } = this.state; - const { jitsiEnabled } = this.props; - if (!jitsiEnabled || room.teamMain) { + const { jitsiEnabled, jitsiEnableTeams, jitsiEnableChannels } = this.props; + + const isJitsiDisabledForTeams = room.teamMain && !jitsiEnableTeams; + const isJitsiDisabledForChannels = !room.teamMain && (room.t === 'p' || room.t === 'c') && !jitsiEnableChannels; + + if (!jitsiEnabled || isJitsiDisabledForTeams || isJitsiDisabledForChannels) { return null; } + return ( <List.Section> <List.Separator /> @@ -1078,6 +1085,8 @@ class RoomActionsView extends React.Component { const mapStateToProps = state => ({ jitsiEnabled: state.settings.Jitsi_Enabled || false, + jitsiEnableTeams: state.settings.Jitsi_Enable_Teams || false, + jitsiEnableChannels: state.settings.Jitsi_Enable_Channels || false, encryptionEnabled: state.encryption.enabled, serverVersion: state.server.version, isMasterDetail: state.app.isMasterDetail, From 300c1f96f0d27c6d7490cff480e65f7cc48f31d6 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 2 Jul 2021 16:17:47 -0300 Subject: [PATCH 163/177] [FIX] Jump to message from in-app notification (#3225) * [FIX] Jump to message by in-app notification * Bug fix to scroll proper the last message * Minor tweak Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/InAppNotification/NotifierComponent.js | 4 ++-- app/views/RoomView/List/index.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/containers/InAppNotification/NotifierComponent.js b/app/containers/InAppNotification/NotifierComponent.js index b69704359ac..6268cd0981a 100644 --- a/app/containers/InAppNotification/NotifierComponent.js +++ b/app/containers/InAppNotification/NotifierComponent.js @@ -76,7 +76,7 @@ const NotifierComponent = React.memo(({ notification, isMasterDetail }) => { const { title = name, avatar = name } = notification; const onPress = () => { - const { prid } = payload; + const { prid, _id } = payload; if (!rid) { return; } @@ -89,7 +89,7 @@ const NotifierComponent = React.memo(({ notification, isMasterDetail }) => { } else { Navigation.navigate('RoomsListView'); } - goRoom({ item, isMasterDetail }); + goRoom({ item, isMasterDetail, jumpToMessageId: _id }); hideNotification(); }; diff --git a/app/views/RoomView/List/index.js b/app/views/RoomView/List/index.js index 19a8ccb901f..cbf02879be5 100644 --- a/app/views/RoomView/List/index.js +++ b/app/views/RoomView/List/index.js @@ -269,7 +269,7 @@ class ListContainer extends React.Component { const { listRef } = this.props; const index = messages.findIndex(item => item.id === messageId); if (index > -1) { - listRef.current.getNode().scrollToIndex({ index, viewPosition: 0.5 }); + listRef.current.getNode().scrollToIndex({ index, viewPosition: 0.5, viewOffset: 100 }); await new Promise(res => setTimeout(res, 300)); if (!this.viewableItems.map(vi => vi.key).includes(messageId)) { if (!this.jumping) { From f42c9149fba22444386b12ece25cca5bf8f4510a Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Mon, 5 Jul 2021 14:21:15 -0400 Subject: [PATCH 164/177] [FIX] Google OAuth triggering cookies logic (#3244) * Remove checkCookiesAndLogout * Add loginEmailPassword to loginOAuthOrSso * Add isFromWebView field * Fix migrations * Minor tweak * Fix OAuth for other services * Fix migrations * Stop persisting loginEmailPassword Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/actions/login.js | 5 +++-- app/lib/database/model/servers/User.js | 4 ++-- app/lib/database/model/servers/migrations.js | 10 ++++++++++ app/lib/database/schema/servers.js | 5 +++-- app/lib/rocketchat.js | 16 ++++++++-------- app/sagas/deepLinking.js | 2 +- app/sagas/login.js | 10 ++++------ app/views/SettingsView/index.js | 2 +- 8 files changed, 32 insertions(+), 22 deletions(-) diff --git a/app/actions/login.js b/app/actions/login.js index daf13d3b457..e0f4c1e280a 100644 --- a/app/actions/login.js +++ b/app/actions/login.js @@ -1,10 +1,11 @@ import * as types from './actionsTypes'; -export function loginRequest(credentials, logoutOnError) { +export function loginRequest(credentials, logoutOnError, isFromWebView) { return { type: types.LOGIN.REQUEST, credentials, - logoutOnError + logoutOnError, + isFromWebView }; } diff --git a/app/lib/database/model/servers/User.js b/app/lib/database/model/servers/User.js index 5b4d3d65a91..6d78c27fa99 100644 --- a/app/lib/database/model/servers/User.js +++ b/app/lib/database/model/servers/User.js @@ -22,7 +22,7 @@ export default class User extends Model { @field('avatar_etag') avatarETag; - @field('login_email_password') loginEmailPassword; - @field('show_message_in_main_thread') showMessageInMainThread; + + @field('is_from_webview') isFromWebView; } diff --git a/app/lib/database/model/servers/migrations.js b/app/lib/database/model/servers/migrations.js index 782700a37ce..80954d475b4 100644 --- a/app/lib/database/model/servers/migrations.js +++ b/app/lib/database/model/servers/migrations.js @@ -95,6 +95,16 @@ export default schemaMigrations({ ] }) ] + }, { + toVersion: 11, + steps: [ + addColumns({ + table: 'users', + columns: [ + { name: 'is_from_webview', type: 'boolean', isOptional: true } + ] + }) + ] } ] }); diff --git a/app/lib/database/schema/servers.js b/app/lib/database/schema/servers.js index 0c81a72fc86..1105cf165c9 100644 --- a/app/lib/database/schema/servers.js +++ b/app/lib/database/schema/servers.js @@ -1,7 +1,7 @@ import { appSchema, tableSchema } from '@nozbe/watermelondb'; export default appSchema({ - version: 10, + version: 11, tables: [ tableSchema({ name: 'users', @@ -15,7 +15,8 @@ export default appSchema({ { name: 'roles', type: 'string', isOptional: true }, { name: 'login_email_password', type: 'boolean', isOptional: true }, { name: 'show_message_in_main_thread', type: 'boolean', isOptional: true }, - { name: 'avatar_etag', type: 'string', isOptional: true } + { name: 'avatar_etag', type: 'string', isOptional: true }, + { name: 'is_from_webview', type: 'boolean', isOptional: true } ] }), tableSchema({ diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index dcb3358cb7b..1cc0d4e0fa2 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -526,10 +526,10 @@ const RocketChat = { return this.post('users.forgotPassword', { email }, false); }, - loginTOTP(params, loginEmailPassword) { + loginTOTP(params, loginEmailPassword, isFromWebView = false) { return new Promise(async(resolve, reject) => { try { - const result = await this.login(params, loginEmailPassword); + const result = await this.login(params, isFromWebView); return resolve(result); } catch (e) { if (e.data?.error && (e.data.error === 'totp-required' || e.data.error === 'totp-invalid')) { @@ -592,15 +592,15 @@ const RocketChat = { return this.loginTOTP(params, true); }, - async loginOAuthOrSso(params) { - const result = await this.loginTOTP(params); - reduxStore.dispatch(loginRequest({ resume: result.token })); + async loginOAuthOrSso(params, isFromWebView = true) { + const result = await this.loginTOTP(params, false, isFromWebView); + reduxStore.dispatch(loginRequest({ resume: result.token }, false, isFromWebView)); }, - async login(params, loginEmailPassword) { + async login(credentials, isFromWebView = false) { const sdk = this.shareSDK || this.sdk; // RC 0.64.0 - await sdk.login(params); + await sdk.login(credentials); const { result } = sdk.currentLogin; const user = { id: result.userId, @@ -615,7 +615,7 @@ const RocketChat = { emails: result.me.emails, roles: result.me.roles, avatarETag: result.me.avatarETag, - loginEmailPassword, + isFromWebView, showMessageInMainThread: result.me.settings?.preferences?.showMessageInMainThread ?? true }; return user; diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index 556573a5407..a406f56a9dc 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -97,7 +97,7 @@ const fallbackNavigation = function* fallbackNavigation() { const handleOAuth = function* handleOAuth({ params }) { const { credentialToken, credentialSecret } = params; try { - yield RocketChat.loginOAuthOrSso({ oauth: { credentialToken, credentialSecret } }); + yield RocketChat.loginOAuthOrSso({ oauth: { credentialToken, credentialSecret } }, false); } catch (e) { log(e); } diff --git a/app/sagas/login.js b/app/sagas/login.js index de82cfb7e11..83eb04dd6d1 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -30,15 +30,15 @@ import Navigation from '../lib/Navigation'; const getServer = state => state.server.server; const loginWithPasswordCall = args => RocketChat.loginWithPassword(args); -const loginCall = args => RocketChat.login(args); +const loginCall = (credentials, isFromWebView) => RocketChat.login(credentials, isFromWebView); const logoutCall = args => RocketChat.logout(args); -const handleLoginRequest = function* handleLoginRequest({ credentials, logoutOnError = false }) { +const handleLoginRequest = function* handleLoginRequest({ credentials, logoutOnError = false, isFromWebView = false }) { logEvent(events.LOGIN_DEFAULT_LOGIN); try { let result; if (credentials.resume) { - result = yield call(loginCall, credentials); + result = yield loginCall(credentials, isFromWebView); } else { result = yield call(loginWithPasswordCall, credentials); } @@ -68,7 +68,6 @@ const handleLoginRequest = function* handleLoginRequest({ credentials, logoutOnE log(e); } }); - yield put(loginSuccess(result)); } } catch (e) { @@ -148,14 +147,13 @@ const handleLoginSuccess = function* handleLoginSuccess({ user }) { status: user.status, statusText: user.statusText, roles: user.roles, - loginEmailPassword: user.loginEmailPassword, + isFromWebView: user.isFromWebView, showMessageInMainThread: user.showMessageInMainThread, avatarETag: user.avatarETag }; yield serversDB.action(async() => { try { const userRecord = await usersCollection.find(user.id); - u.loginEmailPassword = userRecord?.loginEmailPassword; await userRecord.update((record) => { record._raw = sanitizedRaw({ id: user.id, ...record._raw }, usersCollection.schema); Object.assign(record, u); diff --git a/app/views/SettingsView/index.js b/app/views/SettingsView/index.js index 55687cf0f5b..5e696144b89 100644 --- a/app/views/SettingsView/index.js +++ b/app/views/SettingsView/index.js @@ -65,7 +65,7 @@ class SettingsView extends React.Component { const usersCollection = db.get('users'); try { const userRecord = await usersCollection.find(user.id); - if (!userRecord.loginEmailPassword) { + if (userRecord.isFromWebView) { showConfirmationAlert({ title: I18n.t('Clear_cookies_alert'), message: I18n.t('Clear_cookies_desc'), From a169441fd0b2454d42722422730f785844056014 Mon Sep 17 00:00:00 2001 From: "lingohub[bot]" <69908207+lingohub[bot]@users.noreply.github.com> Date: Mon, 5 Jul 2021 15:36:55 -0300 Subject: [PATCH 165/177] =?UTF-8?q?Language=20update=20from=20LingoHub=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3251)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Project Name: Rocket.Chat.ReactNative Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative User: Robot LingoHub Easy language translations with LingoHub 🚀 Co-authored-by: Robot LingoHub <robot@lingohub.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/de.json | 3 +- app/i18n/locales/fr.json | 6 +- app/i18n/locales/nl.json | 6 +- app/i18n/locales/pt-BR.json | 2 +- app/i18n/locales/pt-PT.json | 174 +++++++++++++++++++++++++++++++++++- app/i18n/locales/ru.json | 1 + 6 files changed, 186 insertions(+), 6 deletions(-) diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json index 0a7f7e1ff44..e734fd1649b 100644 --- a/app/i18n/locales/de.json +++ b/app/i18n/locales/de.json @@ -685,7 +685,7 @@ "Following": "verfolgte", "Threads_displaying_all": "zeige alle", "Threads_displaying_following": "zeige gefolgte", - "Threads_displaying_unread": "zeige ungelesene", + "Threads_displaying_unread": "Zeige ungelesene", "No_threads": "Es gibt keine Threads", "No_threads_following": "Du folgst keinen Threads", "No_threads_unread": "Es gibt keine ungelesenen Threads", @@ -724,6 +724,7 @@ "creating_team": "Team erstellen", "team-name-already-exists": "Ein Team mit diesem Namen existiert bereits", "Add_Channel_to_Team": "Kanal zum Team hinzufügen", + "Left_The_Team_Successfully": "Das Team erfolgreich verlassen", "Create_New": "Neu erstellen", "Add_Existing": "Vorhandenes hinzufügen", "Add_Existing_Channel": "Vorhandenen Kanal hinzufügen", diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json index 91388e2deb3..22088b5d149 100644 --- a/app/i18n/locales/fr.json +++ b/app/i18n/locales/fr.json @@ -724,6 +724,7 @@ "creating_team": "création de l'équipe", "team-name-already-exists": "Une équipe portant ce nom existe déjà", "Add_Channel_to_Team": "Ajouter un canal à l'équipe", + "Left_The_Team_Successfully": "A quitté l'équipe avec succès", "Create_New": "Créer un nouveau", "Add_Existing": "Ajouter existant", "Add_Existing_Channel": "Ajouter un canal existant", @@ -761,5 +762,8 @@ "Move_to_Team_Warning": "Après avoir lu les instructions précédentes sur ce comportement, voulez-vous toujours déplacer ce canal vers l'équipe sélectionnée ?", "Load_More": "Charger plus", "Load_Newer": "Charger plus récent", - "Load_Older": "Charger plus ancien" + "Load_Older": "Charger plus ancien", + "Left_The_Room_Successfully": "A quitté le salon avec succès", + "Deleted_The_Team_Successfully": "Equipe supprimée avec succès", + "Deleted_The_Room_Successfully": "Salon supprimé avec succès" } \ No newline at end of file diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index 8a48d3c7478..5d54bfee733 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -724,6 +724,7 @@ "creating_team": "team maken", "team-name-already-exists": "Er bestaat al een team met die naam", "Add_Channel_to_Team": "Kanaal toevoegen aan team", + "Left_The_Team_Successfully": "Het team met succes verlaten", "Create_New": "Maak nieuw", "Add_Existing": "Voeg bestaande", "Add_Existing_Channel": "Bestaand kanaal toevoegen", @@ -761,5 +762,8 @@ "Move_to_Team_Warning": "Wil je na het lezen van de vorige instructies over dit gedrag, dit kanaal nog steeds naar het geselecteerde team verplaatsen?", "Load_More": "Meer laden", "Load_Newer": "Nieuwer laden", - "Load_Older": "Ouder laden" + "Load_Older": "Ouder laden", + "Left_The_Room_Successfully": "Heeft kamer met succes verlaten", + "Deleted_The_Team_Successfully": "Team succesvol verwijderd", + "Deleted_The_Room_Successfully": "Kamer succesvol verwijderd" } \ No newline at end of file diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index 06b00f68516..a56f169b872 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -664,9 +664,9 @@ "No_team_channels_found": "Nenhum canal encontrado", "Team_not_found": "Time não encontrado", "Private_Team": "Equipe Privada", + "Left_The_Team_Successfully": "Saiu do time com sucesso", "Add_Existing_Channel": "Adicionar Canal Existente", "invalid-room": "Sala inválida", - "Left_The_Team_Successfully": "Saiu do time com sucesso", "Left_The_Room_Successfully": "Saiu da sala com sucesso", "Deleted_The_Team_Successfully": "Time deletado com sucesso", "Deleted_The_Room_Successfully": "Sala deletada com sucesso" diff --git a/app/i18n/locales/pt-PT.json b/app/i18n/locales/pt-PT.json index ca7d4dc5903..3724b063492 100644 --- a/app/i18n/locales/pt-PT.json +++ b/app/i18n/locales/pt-PT.json @@ -10,19 +10,22 @@ "error-could-not-change-email": "Não foi possível alterar o e-mail", "error-could-not-change-name": "Não foi possível alterar o nome", "error-could-not-change-username": "Não foi possível alterar o nome de utilizador", + "error-could-not-change-status": "Impossível mudar estado", "error-delete-protected-role": "Não é possível eliminar uma função protegida", "error-department-not-found": "Departamento não encontrado", "error-direct-message-file-upload-not-allowed": "Partilha de ficheiros não permitido em mensagens diretas", - "error-duplicate-channel-name": "Um canal com o nome {{channel_name}} existe", + "error-duplicate-channel-name": "Existe um canal com o nome {{room_name}}", "error-email-domain-blacklisted": "O domínio de e-mail está na lista negra", "error-email-send-failed": "Erro ao tentar enviar e-mail: {{message}}", + "error-save-image": "Erro ao salvar imagem", + "error-save-video": "Erro ao salvar vídeo", "error-field-unavailable": "{{field}} já está em uso :(", "error-file-too-large": "Ficheiro demasiado grande", "error-importer-not-defined": "O importador não foi definido correctamente, a classe Import está em falta.", "error-input-is-not-a-valid-field": "{{input}} não é um {{field}} válido", "error-invalid-actionlink": "Link de acção inválido", "error-invalid-arguments": "Argumentos inválidos", - "error-invalid-asset": "Ficheiro inválida", + "error-invalid-asset": "Ficheiro inválido", "error-invalid-channel": "Canal inválido.", "error-invalid-channel-start-with-chars": "Canal inválido. Começa por @ ou #", "error-invalid-custom-field": "Campo personalizado inválido", @@ -58,6 +61,7 @@ "error-message-editing-blocked": "A edição de mensagens está bloqueada", "error-message-size-exceeded": "O tamanho da mensagem excede Message_MaxAllowedSize", "error-missing-unsubscribe-link": "Você deve fornecer o link para cancelar a subscrição: [unsubscribe].", + "error-no-owner-channel": "Você não é dono do canal", "error-no-tokens-for-this-user": "Não há tokens para este utilizador", "error-not-allowed": "Não permitido", "error-not-authorized": "Não autorizado", @@ -75,33 +79,46 @@ "error-user-registration-disabled": "O registo de utilizadores está desactivado", "error-user-registration-secret": "O registo de utilizadores só é permitido por meio de um URL secreto", "error-you-are-last-owner": "Você é o último proprietário. Por favor, defina novo proprietário antes de sair da sala.", + "error-status-not-allowed": "O estado invisível está desactivado", "Actions": "Acções", "activity": "actividade", "Activity": "Actividade", "Add_Reaction": "Adicionar Reacção", "Add_Server": "Adicionar Servidor", "Add_users": "Adicionar utilizadores", + "Admin_Panel": "Painel de Administração", + "Agent": "Agente", "Alert": "Alerta", "alert": "alerta", "alerts": "alertas", "All_users_in_the_channel_can_write_new_messages": "Todos os utilizadores no canal podem escrever novas mensagens", + "All_users_in_the_team_can_write_new_messages": "Todos os usuários da equipa podem escrever novas mensagens", + "A_meaningful_name_for_the_discussion_room": "Um nome significativo para a sala de discussão", "All": "Todos", + "All_Messages": "Todas as Mensagens", "Allow_Reactions": "Permitir Reacções", "Alphabetical": "Alfabética", "and_more": "e mais", "and": "e", "announcement": "anúncio", "Announcement": "Anúncio", + "Apply_Your_Certificate": "Aplique o seu Certificado", "ARCHIVE": "ARQUIVAR", "archive": "arquivar", "are_typing": "estão a escrever", "Are_you_sure_question_mark": "Tem a certeza?", "Are_you_sure_you_want_to_leave_the_room": "Tem certeza de que quer sair da sala {{room}}?", + "Audio": "Áudio", "Authenticating": "Autenticando", + "Automatic": "Automático", + "Auto_Translate": "Auto-Tradução", "Avatar_changed_successfully": "Avatar alterado com sucesso!", "Avatar_Url": "URL do Avatar", "Away": "Ausente", + "Back": "Voltar", + "Black": "Preto", "Block_user": "Bloquear utilizador", + "Browser": "Navegador", "Broadcast_channel_Description": "Apenas utilizadores autorizados podem escrever novas mensagens, mas os outros utilizadores poderão responder", "Broadcast_Channel": "Canal de Transmissão", "Busy": "Ocupado", @@ -111,80 +128,187 @@ "Cancel": "Cancelar", "changing_avatar": "a alterar avatar", "creating_channel": "a criar canal", + "creating_invite": "a criar convite", "Channel_Name": "Nome do Canal", "Channels": "Canais", "Chats": "Chats", + "Call_already_ended": "Chamada já terminada!", + "Clear_cookies_alert": "Quer limpar todas as cookies?", + "Clear_cookies_desc": "Esta acção irá limpar todos os cookies de login, permitindo que você faça login em outras contas.", + "Clear_cookies_yes": "Sim, limpar cookies", + "Clear_cookies_no": "Não, guardar cookies", + "Click_to_join": "Clique para Entrar!", "Close": "Fechar", "Close_emoji_selector": "Fechar selector de emoticons", + "Closing_chat": "A fechar o chat", + "Change_language_loading": "Mudança de idioma.", + "Chat_closed_by_agent": "Chat fechado por agente", "Choose": "Escolher", "Choose_from_library": "Escolher da biblioteca", + "Choose_file": "Escolher arquivo", + "Choose_where_you_want_links_be_opened": "Escolha onde você quer que os links sejam abertos", "Code": "Código", + "Code_or_password_invalid": "Código ou senha inválidos", "Collaborative": "Colaborativa", "Confirm": "Confirmar", "Connect": "Ligar", "Connected": "Ligado", + "connecting_server": "conexão ao servidor", "Connecting": "A ligar...", + "Contact_us": "Contacte-nos", + "Contact_your_server_admin": "Contacte o administrador do seu servidor.", "Continue_with": "Continuar com", "Copied_to_clipboard": "Copiado para a área de transferência!", "Copy": "Copiar", + "Conversation": "Conversa", "Permalink": "Link permanente", + "Certificate_password": "Senha do Certificado", + "Clear_cache": "Limpar a cache do servidor local", + "Clear_cache_loading": "A limpar a cache.", + "Whats_the_password_for_your_certificate": "Qual é a senha para o seu certificado?", "Create_account": "Criar uma conta", "Create_Channel": "Criar Canal", + "Create_Direct_Messages": "Criar Mensagens Diretas", + "Create_Discussion": "Criar Discussão", "Created_snippet": "criado um extracto", "Create_a_new_workspace": "Criar um novo espaço de trabalho", "Create": "Criar", + "Custom_Status": "Status Personalizado", + "Dark": "Escuro", + "Dark_level": "Nível Escuro", + "Default": "Predefinição", + "Default_browser": "Navegador predefinido", "Delete_Room_Warning": "Apagar uma sala irá remover todas as mensagens contidas nela. Isto não pode ser desfeito.", + "Department": "Departamento", "delete": "apagar", "Delete": "Apagar", "DELETE": "APAGAR", + "move": "mover", "deleting_room": "apagando sala", "description": "descrição", "Description": "Descrição", + "Desktop_Options": "Opções da área de trabalho", + "Desktop_Notifications": "Notificações da área de trabalho", + "Desktop_Alert_info": "Estas notificações são entregues na área de trabalho", + "Directory": "Directório", "Direct_Messages": "Mensagens Directas", "Disable_notifications": "Desactivar notificações", + "Discussions": "Discussões", + "Discussion_Desc": "Ajude a manter uma visão geral sobre o que está acontecendo! Ao criar uma discussão, é criado um sub-canal do que você selecionou e ambos estão ligados.", + "Discussion_name": "Nome da discussão", + "Done": "Feito", "Dont_Have_An_Account": "Não tem uma conta?", + "Do_you_have_an_account": "Você tem uma conta?", + "Do_you_have_a_certificate": "Você tem um certificado?", "Do_you_really_want_to_key_this_room_question_mark": "Você quer mesmo {{key}} esta sala?", + "E2E_Encryption": "Encriptação E2E", + "E2E_How_It_Works_info1": "Agora você pode criar grupos privados criptografados e mensagens diretas. Você também pode alterar grupos privados existentes ou DMs para criptografados.", + "E2E_How_It_Works_info2": "Isto é *criptografia ponto a ponto* portanto a chave para codificar/descodificar as suas mensagens não será salva no servidor. Por essa razão *você precisa armazenar esta senha em algum lugar seguro* que você posa aceder mais tarde, se precisar.", + "E2E_How_It_Works_info3": "Se você prosseguir, uma senha E2E será gerada automaticamente.", + "E2E_How_It_Works_info4": "Você também pode configurar uma nova senha para sua chave de criptografia a qualquer momento a partir de qualquer navegador que você tenha inserido a senha existente do E2E.", "edit": "editar", + "edited": "editado", "Edit": "Editar", + "Edit_Status": "Editar Status", + "Edit_Invite": "Editar Convite", + "End_to_end_encrypted_room": "Sala encriptada de ponta a ponta", + "end_to_end_encryption": "encriptação de ponta a ponta", + "Email_Notification_Mode_All": "Cada Menção/DM", + "Email_Notification_Mode_Disabled": "Desactivado", "Email_or_password_field_is_empty": "O campo de e-mail ou palavra-passe está vazio", "Email": "E-mail", "email": "e-mail", + "Empty_title": "Título vazio", + "Enable_Auto_Translate": "Activar Auto-Tradução", "Enable_notifications": "Activar notificações", + "Encrypted": "Encriptado", + "Encrypted_message": "Mensagem encriptada", + "Enter_Your_E2E_Password": "Digite a sua senha E2E", + "Enter_Your_Encryption_Password_desc1": "Isto permitir-lhe-á aceder aos seus grupos privados encriptados e às suas mensagens directas.", + "Enter_Your_Encryption_Password_desc2": "Você precisa digitar a senha para codificar/descodificar mensagens em cada lugar que você usar o chat.", + "Encryption_error_title": "A sua senha de encriptação parece errada", + "Encryption_error_desc": "Não foi possível descodificar a sua chave de encriptação para ser importada.", "Everyone_can_access_this_channel": "Todos podem aceder a este canal", + "Everyone_can_access_this_team": "Todos podem aceder a esta equipa", "Error_uploading": "Erro ao fazer o envio", + "Expiration_Days": "Validade (Dias)", + "Favorite": "Favorito", "Favorites": "Favoritos", "Files": "Ficheiros", "File_description": "Descrição do ficheiro", "File_name": "Nome do ficheiro", "Finish_recording": "Terminar a gravação", + "Following_thread": "Seguir discussão", "For_your_security_you_must_enter_your_current_password_to_continue": "Para sua segurança, você deve escrever a sua palavra-passe actual para continuar", "Forgot_password_If_this_email_is_registered": "Se este e-mail estiver registado, enviaremos instruções sobre como repor a sua palavra-passe. Se você não receber um e-mail em breve, volte e tente novamente.", "Forgot_password": "Esquecer palavra-passe", "Forgot_Password": "Esquecer Palavra-passe", + "Forward": "Reencaminhar", + "Forward_Chat": "Reencaminhar Chat", + "Forward_to_department": "Reencaminhar para o departamento", + "Forward_to_user": "Reencaminhar para o utilizador", + "Full_table": "Clique para ver a tabela completa", + "Generate_New_Link": "Gerar Novo Link", "Group_by_favorites": "Agrupar por favoritos", "Group_by_type": "Agrupar por tipo", + "Hide": "Esconder", "Has_joined_the_channel": "entrou no canal", "Has_joined_the_conversation": "entrou na conversa", "Has_left_the_channel": "saiu do canal", + "Hide_System_Messages": "Esconder mensagens do sistema", + "Hide_type_messages": "Esconder mensagens \"{{type}}\"", + "How_It_Works": "Como Funciona", + "Message_HideType_uj": "Utilizador entrou", + "Message_HideType_ul": "Utilizador saiu", + "Message_HideType_ru": "Utilizador removido", + "Message_HideType_au": "Utilizador adicionado", + "Message_HideType_mute_unmute": "Utilizador silenciado/de-silenciado", + "Message_HideType_r": "Nome da sala alterado", + "Message_HideType_ut": "Utilizador entrou na conversação", + "Message_HideType_wm": "Bem-vindo", + "Message_HideType_rm": "Mensagem Removida", + "Message_HideType_subscription_role_added": "Foi definido o estatuto", + "Message_HideType_subscription_role_removed": "Definição de estatuto removida", + "Message_HideType_room_archived": "Sala arquivada", + "Message_HideType_room_unarchived": "Sala desarquivada", + "I_Saved_My_E2E_Password": "Guardei a minha senha E2E", + "IP": "IP", + "In_app": "Na aplicação", + "In_App_And_Desktop": "Na aplicação e área de trabalho", + "In_App_and_Desktop_Alert_info": "Exibe um banner no topo da tela quando a aplicação está aberto, e exibe uma notificação na área de trabalho", "Invisible": "Invisível", "Invite": "Convidar", "is_a_valid_RocketChat_instance": "é uma instância válida do Rocket.Chat", "is_not_a_valid_RocketChat_instance": "is not a valid Rocket.Chat instance", "is_typing": "está a escrever", + "Invalid_or_expired_invite_token": "Token de convite invalido ou expirado", "Invalid_server_version": "O servidor ao qual esta tentando ligar-se, utiliza uma versão que não é suporta pela aplicação: {{currentVersion}}.\n\nA versão mínima requerida é {{minVersion}}", + "Invite_Link": "Link de convite", + "Invite_users": "Convidar utilizadores", "Join": "Entrar", + "Join_Code": "Código de entrada", + "Insert_Join_Code": "Insira o código de entrada", + "Join_our_open_workspace": "Junte-se ao nosso espaço de trabalho aberto", + "Join_your_workspace": "Junte-se ao seu espaço de trabalho", "Just_invited_people_can_access_this_channel": "Apenas utilizadores convidados podem aceder a este canal", + "Just_invited_people_can_access_this_team": "Apenas pessoas convidadas podem aceder a esta equipa", "Language": "Idioma", "last_message": "última mensagem", "Leave_channel": "Sair do canal", "leaving_room": "a sair da sala", + "Leave": "Sair", "leave": "sair", "Legal": "Legal", + "Light": "Luz", + "License": "Licença", "Livechat": "Livechat", "Login": "Entrar", "Login_error": "As suas credenciais foram rejeitadas! Por favor, tente novamente.", "Login_with": "Entrar com", + "Logging_out": "A terminar a sessão.", "Logout": "Sair", + "Max_number_of_uses": "Número máximo de utilizações", + "Max_number_of_users_allowed_is_number": "O número máximo de utilizadores permitido é {{maxUsers}}", "members": "membros", "Members": "Membros", "Mentioned_Messages": "Mensagens Mencionadas", @@ -194,7 +318,13 @@ "Message_actions": "Acções de mensagem", "Message_pinned": "Mensagem afixada", "Message_removed": "Mensagem removida", + "Message_starred": "Mensagem estrelada", + "Message_unstarred": "Mensagem não estrelada", + "message": "mensagem", + "messages": "mensagens", + "Message": "Mensagem", "Messages": "Mensagens", + "Message_Reported": "Mensagem reportada", "Microphone_Permission_Message": "O Rocket.Chat necessita de acesso ao seu microfone para que você possa enviar mensagens de áudio.", "Microphone_Permission": "Permissão de Microfone", "Mute": "Silenciar", @@ -202,52 +332,92 @@ "My_servers": "Meus servidores", "N_people_reacted": "{{n}} pessoas reagiram", "N_users": "{{n}} utilizadores", + "N_channels": "{{n}} canais", "name": "nome", "Name": "Nome", + "Navigation_history": "Histórico de navegação", + "Never": "Nunca", "New_Message": "Nova Mensagem", "New_Password": "Nova Palavra-passe", "New_Server": "Novo Servidor", "Next": "Próximo", "No_files": "Nenhum ficheiro", + "No_limit": "Sem limite", "No_mentioned_messages": "Nenhuma mensagem mencionada", "No_pinned_messages": "Nenhuma mensagem afixada", "No_results_found": "Nenhum resultado encontrado", "No_starred_messages": "Nenhuma mensagem marcada com estrela", + "No_thread_messages": "Sem mensagens de discussão ", + "No_label_provided": "{{label}} não fornecida/o", "No_Message": "Nenhuma mensagem", + "No_messages_yet": "Ainda sem mensagens", "No_Reactions": "Nenhuma reação", + "No_Read_Receipts": "Sem recibos de leitura", "Not_logged": "Não ligado", + "Not_RC_Server": "Isto não é um servidor Rocket.Chat.\n{{contact}}", + "Nothing": "Nada", "Nothing_to_save": "Nada para guardar!", "Notify_active_in_this_room": "Notifica utilizadores activos nesta sala", "Notify_all_in_this_room": "Notifica todos os utilizadores nesta sala", + "Notifications": "Notificações", + "Notification_Duration": "Duração da Notificação", + "Notification_Preferences": "Preferências de Notificação", + "No_available_agents_to_transfer": "Não há agentes disponíveis para transferir", "Offline": "Desligado", "Oops": "Oops!", + "Omnichannel": "Omnichannel", + "Open_Livechats": "Chats em andamento", + "Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você gostaria de estar disponível?", + "Onboarding_description": "Um espaço de trabalho é o espaço da sua equipa ou organização para colaborar. Peça ao administrador do espaço de trabalho um endereço para se juntar ou criar um para a sua equipa.", + "Onboarding_join_workspace": "Junte-se a um espaço de trabalho", + "Onboarding_subtitle": "Além da Colaboração da Equipe", "Onboarding_title": "Bem vindo(a) ao Rocket.Chat", + "Onboarding_join_open_description": "Junte-se ao nosso espaço de trabalho aberto para conversar com a equipa e comunidade Rocket.Chat.", + "Onboarding_agree_terms": "Ao continuar, você concorda com Rocket.Chat", + "Onboarding_less_options": "Menos opções", + "Onboarding_more_options": "Mais opções", "Online": "Ligado", "Only_authorized_users_can_write_new_messages": "Apenas utilizadores autorizados podem escrever novas mensagens", "Open_emoji_selector": "Abra o selector de emoticons", "Open_Source_Communication": "Comunicação Open Source", + "Open_your_authentication_app_and_enter_the_code": "Abra o seu aplicativo de autenticação e digite o código.", + "OR": "OU", + "OS": "OS", + "Overwrites_the_server_configuration_and_use_room_config": "Sobrescreve a configuração do servidor e a configuração da sala de uso", "Password": "Palavra-passe", + "Parent_channel_or_group": "Canal de origem ou grupo", "Permalink_copied_to_clipboard": "Link permanente copiado para a área de transferência!", + "Phone": "Telefone", "Pin": "Afixar", "Pinned_Messages": "Mensagens Afixadas", "pinned": "afixada", "Pinned": "Afixada", + "Please_add_a_comment": "Por favor, acrescente um comentário", "Please_enter_your_password": "Por favor, introduza a sua palavra-passe", + "Please_wait": "Por favor, espere.", + "Preferences": "Preferências", "Preferences_saved": "Preferências guardadas!", "Privacy_Policy": " Política de Privacidade", "Private_Channel": "Canal Privado", "Private_Groups": "Grupos Privados", "Private": "Privado", + "Processing": "A processar...", "Profile_saved_successfully": "Perfil actualizado com sucesso!", "Profile": "Perfil", "Public_Channel": "Canal Público", "Public": "Público", + "Push_Notifications": "Notificações Push", + "Push_Notifications_Alert_Info": "Estas notificações são entregues quando o aplicativo não está aberto", "Quote": "Citar", "Reactions_are_disabled": "Reacções desactivadas", "Reactions_are_enabled": "Reacções activadas", "Reactions": "Reacções", + "Read": "Ler", + "Read_External_Permission_Message": "Rocket.Chat precisa acessar fotos, média e arquivos em seu dispositivo", + "Read_External_Permission": "Permissão de leitura da média", "Read_Only_Channel": "Canal só de leitura", "Read_Only": "Só de Leitura", + "Read_Receipt": "Recibos de leitura", "Register": "Registar", "Repeat_Password": "Repita a palavra-passe", "Reply": "Responder", diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json index e5fca9504ab..5267a4a4118 100644 --- a/app/i18n/locales/ru.json +++ b/app/i18n/locales/ru.json @@ -724,6 +724,7 @@ "creating_team": "создание Команды", "team-name-already-exists": "Команда с таким названием уже существует", "Add_Channel_to_Team": "Добавить канал в Команду", + "Left_The_Team_Successfully": "Успешно покинул команду", "Create_New": "Создать", "Add_Existing": "Добавить существующее", "Add_Existing_Channel": "Добавить существующий канал", From 999f05bbd1cb6be0c4cf1b6635c7b71f2817d017 Mon Sep 17 00:00:00 2001 From: Gung Wah <41157464+kresnaputra@users.noreply.github.com> Date: Tue, 6 Jul 2021 02:44:33 +0800 Subject: [PATCH 166/177] [IMPROVE] Message body readability on dark themes (#2981) * [CHORE] Apply auxiliaryText on message body * change bodyText to uxiliaryText * Update tests * Update bodyText color and rollback PR changes * Update Storyshots.test.js.snap * Minor tweak Co-authored-by: Diego Mello <diegolmello@gmail.com> Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> --- .../__snapshots__/Storyshots.test.js.snap | 36 +++++++++---------- app/constants/colors.js | 4 +-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 3e3106d94dd..f7291f45889 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -11490,7 +11490,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -11593,7 +11593,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -11696,7 +11696,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -11973,7 +11973,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -12076,7 +12076,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -12179,7 +12179,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -12420,7 +12420,7 @@ exports[`Storyshots LoadMore black theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -12692,7 +12692,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -12795,7 +12795,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -12898,7 +12898,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -13175,7 +13175,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -13278,7 +13278,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -13381,7 +13381,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -13622,7 +13622,7 @@ exports[`Storyshots LoadMore dark theme 1`] = ` }, undefined, Object { - "color": "#e8ebed", + "color": "#cbced1", }, ] } @@ -67631,7 +67631,7 @@ Array [ "textAlign": "left", }, Object { - "color": "#e8ebed", + "color": "#cbced1", }, Object { "backgroundColor": "transparent", @@ -67791,7 +67791,7 @@ Array [ "textAlign": "left", }, Object { - "color": "#e8ebed", + "color": "#cbced1", }, Object { "backgroundColor": "transparent", @@ -74309,7 +74309,7 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` "textAlign": "left", }, Object { - "color": "#e8ebed", + "color": "#cbced1", }, Object { "flex": 1, @@ -74661,7 +74661,7 @@ exports[`Storyshots Thread Messages.Item themes 1`] = ` "textAlign": "left", }, Object { - "color": "#e8ebed", + "color": "#cbced1", }, Object { "flex": 1, diff --git a/app/constants/colors.js b/app/constants/colors.js index 554d7f8d391..1172b4bc929 100644 --- a/app/constants/colors.js +++ b/app/constants/colors.js @@ -74,7 +74,7 @@ export const themes = { auxiliaryBackground: '#07101e', bannerBackground: '#0e1f38', titleText: '#f9f9f9', - bodyText: '#e8ebed', + bodyText: '#cbced1', backdropColor: '#000000', dangerColor: '#f5455c', successColor: '#2de0a5', @@ -121,7 +121,7 @@ export const themes = { auxiliaryBackground: '#080808', bannerBackground: '#1f2329', titleText: '#f9f9f9', - bodyText: '#e8ebed', + bodyText: '#cbced1', backdropColor: '#000000', dangerColor: '#f5455c', successColor: '#2de0a5', From 6385daebb5c8a56c2f999e2fda74a4fe16d61e5c Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Tue, 6 Jul 2021 13:22:38 -0300 Subject: [PATCH 167/177] [FIX] Subscribe to settings making app to hang on login (#3254) --- app/lib/methods/getSettings.js | 5 ++++- app/lib/rocketchat.js | 3 ++- app/sagas/login.js | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index f68995af83e..c51ac406859 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -131,6 +131,10 @@ export async function setSettings() { reduxStore.dispatch(addSettings(RocketChat.parseSettings(parsed.slice(0, parsed.length)))); } +export function subscribeSettings() { + return RocketChat.subscribe('stream-notify-all', 'public-settings-changed'); +} + export default async function() { try { const db = database.active; @@ -146,7 +150,6 @@ export default async function() { const filteredSettingsIds = filteredSettings.map(s => s._id); reduxStore.dispatch(addSettings(this.parseSettings(filteredSettings))); - RocketChat.subscribe('stream-notify-all', 'public-settings-changed'); // filter server info const serverInfo = filteredSettings.filter(i1 => serverInfoKeys.includes(i1._id)); diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 1cc0d4e0fa2..5b69b92ba4f 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -28,7 +28,7 @@ import getUsersPresence, { getUserPresence, subscribeUsersPresence } from './met import protectedFunction from './methods/helpers/protectedFunction'; import readMessages from './methods/readMessages'; -import getSettings, { getLoginSettings, setSettings } from './methods/getSettings'; +import getSettings, { getLoginSettings, setSettings, subscribeSettings } from './methods/getSettings'; import getRooms from './methods/getRooms'; import { setPermissions, getPermissions } from './methods/getPermissions'; @@ -883,6 +883,7 @@ const RocketChat = { getSettings, getLoginSettings, setSettings, + subscribeSettings, getPermissions, setPermissions, getCustomEmojis, diff --git a/app/sagas/login.js b/app/sagas/login.js index 83eb04dd6d1..9381e04595f 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -80,6 +80,10 @@ const handleLoginRequest = function* handleLoginRequest({ credentials, logoutOnE } }; +const subscribeSettings = function* subscribeSettings() { + yield RocketChat.subscribeSettings(); +}; + const fetchPermissions = function* fetchPermissions() { yield RocketChat.getPermissions(); }; @@ -133,6 +137,7 @@ const handleLoginSuccess = function* handleLoginSuccess({ user }) { yield fork(registerPushToken); yield fork(fetchUsersPresence); yield fork(fetchEnterpriseModules, { user }); + yield fork(subscribeSettings); yield put(encryptionInit()); setLanguage(user?.language); From 3e53a7623850967533d14adac266552fba0c5ead Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 8 Jul 2021 17:09:46 -0300 Subject: [PATCH 168/177] [FIX] Poor performance in messages list on Android 11 (#3260) --- patches/react-native+0.63.4.patch | 55 +++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 patches/react-native+0.63.4.patch diff --git a/patches/react-native+0.63.4.patch b/patches/react-native+0.63.4.patch new file mode 100644 index 00000000000..efadfe80b75 --- /dev/null +++ b/patches/react-native+0.63.4.patch @@ -0,0 +1,55 @@ +diff --git a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js +index c344ac4..479c8c0 100644 +--- a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js ++++ b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js +@@ -1244,9 +1244,17 @@ class ScrollView extends React.Component<Props, State> { + // Note: we should split props.style on the inner and outer props + // however, the ScrollView still needs the baseStyle to be scrollable + const {outer, inner} = splitLayoutProps(flattenStyle(props.style)); ++ ++ // Workaround for RefreshControl inverted: https://github.com/facebook/react-native/issues/30034 ++ let inverted; ++ if (inner.scaleY) { ++ inverted = { scaleY: -1 }; ++ delete inner.scaleY; ++ } ++ + return React.cloneElement( + refreshControl, +- {style: [baseStyle, outer]}, ++ {style: [baseStyle, outer, inverted]}, + <ScrollViewClass + {...props} + style={[baseStyle, inner]} +diff --git a/node_modules/react-native/Libraries/Lists/VirtualizedList.js b/node_modules/react-native/Libraries/Lists/VirtualizedList.js +index 9ec105f..6bb6989 100644 +--- a/node_modules/react-native/Libraries/Lists/VirtualizedList.js ++++ b/node_modules/react-native/Libraries/Lists/VirtualizedList.js +@@ -11,6 +11,7 @@ + 'use strict'; + + const Batchinator = require('../Interaction/Batchinator'); ++const Platform = require('../Utilities/Platform'); + const FillRateHelper = require('./FillRateHelper'); + const PropTypes = require('prop-types'); + const React = require('react'); +@@ -2185,9 +2186,16 @@ function describeNestedLists(childList: { + } + + const styles = StyleSheet.create({ +- verticallyInverted: { +- transform: [{scaleY: -1}], +- }, ++ // Workaround found on https://github.com/facebook/react-native/issues/30034#issuecomment-806396274 ++ // Note: Check ScrollView for a workaround on RefreshControl ++ verticallyInverted: ++ Platform.OS === 'android' ++ ? { ++ scaleY: -1, ++ } ++ : { ++ transform: [{scaleY: -1}] ++ }, + horizontallyInverted: { + transform: [{scaleX: -1}], + }, From 3f172e6c3dff173f3a484d2c42d6b04ee00f45a7 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 8 Jul 2021 17:10:35 -0300 Subject: [PATCH 169/177] Bump version to 4.18.0 (#3252) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index e3da57bb90f..95628ac2fdb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.17.0" + versionName "4.18.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index bbebd2ee7b6..2c24aa09324 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1694,7 +1694,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.17.0; + MARKETING_VERSION = 4.18.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1731,7 +1731,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.17.0; + MARKETING_VERSION = 4.18.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 4357a8abb7a..bc30c1441c6 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -23,7 +23,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.17.0</string> + <string>4.18.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key> diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index e38798d7361..5db7e5aef1e 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -21,7 +21,7 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>4.17.0</string> + <string>4.18.0</string> <key>CFBundleVersion</key> <string>1</string> <key>KeychainGroup</key> diff --git a/package.json b/package.json index 7e0e5d6da5c..f338cbadbe9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.17.0", + "version": "4.18.0", "private": true, "scripts": { "start": "react-native start", From 190853225fe1b3ecd784f9f14b18f450c3990f62 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 9 Jul 2021 11:11:26 -0300 Subject: [PATCH 170/177] [FIX] Create team crashing the app (#3248) Co-authored-by: Gerzon Z <gerzonc@icloud.com> Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/sagas/createChannel.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/sagas/createChannel.js b/app/sagas/createChannel.js index a768916c8be..9493d540592 100644 --- a/app/sagas/createChannel.js +++ b/app/sagas/createChannel.js @@ -41,10 +41,10 @@ const handleRequest = function* handleRequest({ data }) { encrypted } = data; logEvent(events.CT_CREATE, { - type, - readOnly, - broadcast, - encrypted + type: `${ type }`, + readOnly: `${ readOnly }`, + broadcast: `${ broadcast }`, + encrypted: `${ encrypted }` }); const result = yield call(createTeam, data); sub = { From 16fee2aa64fbd2bd358af312909e625da33e1da8 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 9 Jul 2021 15:46:24 -0300 Subject: [PATCH 171/177] [IMPROVE] Convert Team to Channel (#3249) * [IMPROVE] Add convert team to a channel * Action to SelectListView and new words to i18n * Implemented the post and it's working with selected channels or not * Fixed the Convert Team Warning at english i18n and changed the function name * E2E test completed in sequence the convert/move teams * [IMPROVE] Add convert team to a channel * Action to SelectListView and new words to i18n * Implemented the post and it's working with selected channels or not * Fixed the Convert Team Warning at english i18n and changed the function name * rebase develop into this branch * [IMPROVE] Add convert team to a channel * Action to SelectListView and new words to i18n * Implemented the post and it's working with selected channels or not * Fixed the Convert Team Warning at english i18n and changed the function name * rebase develop into this branch Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/en.json | 8 +- app/i18n/locales/pt-BR.json | 3 +- app/lib/methods/getPermissions.js | 3 +- app/lib/rocketchat.js | 7 ++ app/utils/log/events.js | 2 + app/views/RoomActionsView/index.js | 103 +++++++++++++++++++++++++- e2e/tests/team/03-moveconvert.spec.js | 29 +++++++- 7 files changed, 146 insertions(+), 9 deletions(-) diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 723b4dd9e53..426aaa77a8c 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -756,7 +756,7 @@ "member-does-not-exist": "Member does not exist", "Convert": "Convert", "Convert_to_Team": "Convert to Team", - "Convert_to_Team_Warning": "This can't be undone. Once you convert a channel to a team, you can not turn it back to a channel.", + "Convert_to_Team_Warning": "You are converting this Channel to a Team. All Members will be kept.", "Move_to_Team": "Move to Team", "Move_Channel_Paragraph": "Moving a channel inside a team means that this channel will be added in the team’s context, however, all channel’s members, which are not members of the respective team, will still have access to this channel, but will not be added as team’s members. \n\nAll channel’s management will still be made by the owners of this channel.\n\nTeam’s members and even team’s owners, if not a member of this channel, can not have access to the channel’s content. \n\nPlease notice that the Team’s owner will be able remove members from the Channel.", "Move_to_Team_Warning": "After reading the previous intructions about this behavior, do you still want to move this channel to the selected team?", @@ -765,5 +765,9 @@ "Load_Older": "Load Older", "Left_The_Room_Successfully": "Left the room successfully", "Deleted_The_Team_Successfully": "Team deleted successfully", - "Deleted_The_Room_Successfully": "Room deleted successfully" + "Deleted_The_Room_Successfully": "Room deleted successfully", + "Convert_to_Channel": "Convert to Channel", + "Converting_Team_To_Channel": "Converting Team to Channel", + "Select_Team_Channels_To_Delete": "Select the Team’s Channels you would like to delete, the ones you do not select will be moved to the Workspace. \n\nNotice that public Channels will be public and visible to everyone.", + "You_are_converting_the_team": "You are converting this Team to a Channel" } \ No newline at end of file diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index a56f169b872..aefd9610675 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -669,5 +669,6 @@ "invalid-room": "Sala inválida", "Left_The_Room_Successfully": "Saiu da sala com sucesso", "Deleted_The_Team_Successfully": "Time deletado com sucesso", - "Deleted_The_Room_Successfully": "Sala deletada com sucesso" + "Deleted_The_Room_Successfully": "Sala deletada com sucesso", + "Convert_to_Channel": "Converter para um Canal" } \ No newline at end of file diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 6e68f5c3336..1c4c56b46b5 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -47,7 +47,8 @@ const PERMISSIONS = [ 'view-statistics', 'view-user-administration', 'view-all-teams', - 'view-all-team-channels' + 'view-all-team-channels', + 'convert-team' ]; export async function setPermissions() { diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 5b69b92ba4f..59ee94fc51b 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -866,6 +866,13 @@ const RocketChat = { }; return this.sdk.post(type === 'c' ? 'channels.convertToTeam' : 'groups.convertToTeam', params); }, + convertTeamToChannel({ teamId, selected }) { + const params = { + teamId, + ...(selected.length && { roomsToRemove: selected }) + }; + return this.sdk.post('teams.convertToChannel', params); + }, joinRoom(roomId, joinCode, type) { // TODO: join code // RC 0.48.0 diff --git a/app/utils/log/events.js b/app/utils/log/events.js index a183735ba46..2ab3f539bcd 100644 --- a/app/utils/log/events.js +++ b/app/utils/log/events.js @@ -259,6 +259,8 @@ export default { RA_LEAVE_TEAM_F: 'ra_leave_team_f', RA_CONVERT_TO_TEAM: 'ra_convert_to_team', RA_CONVERT_TO_TEAM_F: 'ra_convert_to_team_f', + RA_CONVERT_TEAM_TO_CHANNEL: 'ra_convert_team_to_channel', + RA_CONVERT_TEAM_TO_CHANNEL_F: 'ra_convert_team_to_channel_f', RA_MOVE_TO_TEAM: 'ra_move_to_team', RA_MOVE_TO_TEAM_F: 'ra_move_to_team_f', RA_SEARCH_TEAM: 'ra_search_team', diff --git a/app/views/RoomActionsView/index.js b/app/views/RoomActionsView/index.js index 75c977a280d..914a42913fb 100644 --- a/app/views/RoomActionsView/index.js +++ b/app/views/RoomActionsView/index.js @@ -67,7 +67,8 @@ class RoomActionsView extends React.Component { viewBroadcastMemberListPermission: PropTypes.array, transferLivechatGuestPermission: PropTypes.array, createTeamPermission: PropTypes.array, - addTeamChannelPermission: PropTypes.array + addTeamChannelPermission: PropTypes.array, + convertTeamPermission: PropTypes.array } constructor(props) { @@ -91,7 +92,8 @@ class RoomActionsView extends React.Component { canEdit: false, canToggleEncryption: false, canCreateTeam: false, - canAddChannelToTeam: false + canAddChannelToTeam: false, + canConvertTeam: false }; if (room && room.observe && room.rid) { this.roomObservable = room.observe(); @@ -142,9 +144,10 @@ class RoomActionsView extends React.Component { const canViewMembers = await this.canViewMembers(); const canCreateTeam = await this.canCreateTeam(); const canAddChannelToTeam = await this.canAddChannelToTeam(); + const canConvertTeam = await this.canConvertTeam(); this.setState({ - canAutoTranslate, canAddUser, canInviteUser, canEdit, canToggleEncryption, canViewMembers, canCreateTeam, canAddChannelToTeam + canAutoTranslate, canAddUser, canInviteUser, canEdit, canToggleEncryption, canViewMembers, canCreateTeam, canAddChannelToTeam, canConvertTeam }); // livechat permissions @@ -240,6 +243,16 @@ class RoomActionsView extends React.Component { return canAddChannelToTeam; } + canConvertTeam = async() => { + const { room } = this.state; + const { convertTeamPermission } = this.props; + const { rid } = room; + const permissions = await RocketChat.hasPermission([convertTeamPermission], rid); + + const canConvertTeam = permissions[0]; + return canConvertTeam; + } + canToggleEncryption = async() => { const { room } = this.state; const { toggleRoomE2EEncryptionPermission } = this.props; @@ -433,6 +446,59 @@ class RoomActionsView extends React.Component { }); } + convertTeamToChannel = async() => { + const { room } = this.state; + const { navigation } = this.props; + + try { + const result = await RocketChat.teamListRoomsOfUser({ teamId: room.teamId, userId: room.u._id }); + + if (result.rooms?.length) { + const teamChannels = result.rooms.map(r => ({ + rid: r._id, + name: r.name, + teamId: r.teamId + })); + navigation.navigate('SelectListView', { + title: 'Converting_Team_To_Channel', + data: teamChannels, + infoText: 'Select_Team_Channels_To_Delete', + nextAction: data => this.convertTeamToChannelConfirmation(data) + }); + } else { + this.convertTeamToChannelConfirmation(); + } + } catch (e) { + this.convertTeamToChannelConfirmation(); + } + } + + handleConvertTeamToChannel = async(selected) => { + logEvent(events.RA_CONVERT_TEAM_TO_CHANNEL); + try { + const { room } = this.state; + const { navigation } = this.props; + + const result = await RocketChat.convertTeamToChannel({ teamId: room.teamId, selected }); + + if (result.success) { + navigation.navigate('RoomView'); + } + } catch (e) { + logEvent(events.RA_CONVERT_TEAM_TO_CHANNEL_F); + log(e); + } + } + + convertTeamToChannelConfirmation = (selected = []) => { + showConfirmationAlert({ + title: I18n.t('Confirmation'), + message: I18n.t('You_are_converting_the_team'), + confirmationText: I18n.t('Convert'), + onPress: () => this.handleConvertTeamToChannel(selected) + }); + } + leaveTeam = async() => { const { room } = this.state; const { navigation, leaveRoom } = this.props; @@ -806,6 +872,32 @@ class RoomActionsView extends React.Component { ); } + teamToChannelActions = (t, room) => { + const { canEdit, canConvertTeam } = this.state; + const canConvertTeamToChannel = canEdit && canConvertTeam && !!room?.teamMain; + + return ( + <> + {['c', 'p'].includes(t) && canConvertTeamToChannel + ? ( + <> + <List.Item + title='Convert_to_Channel' + onPress={() => this.onPressTouchable({ + event: this.convertTeamToChannel + })} + testID='room-actions-convert-channel-to-team' + left={() => <List.Icon name='channel-public' />} + showActionIndicator + /> + <List.Separator /> + </> + ) + : null} + </> + ); + } + render() { const { room, membersCount, canViewMembers, canAddUser, canInviteUser, joined, canAutoTranslate, canForwardGuest, canReturnQueue @@ -1007,7 +1099,9 @@ class RoomActionsView extends React.Component { ) : null} + { this.teamChannelActions(t, room) } + {this.teamToChannelActions(t, room)} {['l'].includes(t) && !this.isOmnichannelPreview ? ( @@ -1099,7 +1193,8 @@ const mapStateToProps = state => ({ viewBroadcastMemberListPermission: state.permissions['view-broadcast-member-list'], transferLivechatGuestPermission: state.permissions['transfer-livechat-guest'], createTeamPermission: state.permissions['create-team'], - addTeamChannelPermission: state.permissions['add-team-channel'] + addTeamChannelPermission: state.permissions['add-team-channel'], + convertTeamPermission: state.permissions['convert-team'] }); const mapDispatchToProps = dispatch => ({ diff --git a/e2e/tests/team/03-moveconvert.spec.js b/e2e/tests/team/03-moveconvert.spec.js index 7c071442b03..754aafc09a5 100644 --- a/e2e/tests/team/03-moveconvert.spec.js +++ b/e2e/tests/team/03-moveconvert.spec.js @@ -51,7 +51,7 @@ describe('Move/Convert Team', () => { await element(by.id('room-actions-scrollview')).scrollTo('bottom'); await waitFor(element(by.id('room-actions-convert-to-team'))).toExist().withTimeout(2000); await element(by.id('room-actions-convert-to-team')).tap(); - await waitFor(element(by.label('This can\'t be undone. Once you convert a channel to a team, you can not turn it back to a channel.'))).toExist().withTimeout(2000); + await waitFor(element(by.label('You are converting this Channel to a Team. All Members will be kept.'))).toExist().withTimeout(2000); await element(by.text('Convert')).tap(); await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); await waitFor(element(by.id(`room-view-title-${ toBeConverted }`))).toExist().withTimeout(6000); @@ -84,5 +84,32 @@ describe('Move/Convert Team', () => { await element(by.text('Yes, move it!')).tap(); await waitFor(element(by.id('room-view-header-team-channels'))).toExist().withTimeout(10000); }); + + after(async() => { + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); + }); + }); + + describe('Convert Team to Channel and Delete toBeMoved channel within the Converted', () => { + it('should convert a team to a channel', async() => { + await navigateToRoomActions(toBeConverted); + await element(by.id('room-actions-scrollview')).scrollTo('bottom'); + await waitFor(element(by.id('room-actions-convert-channel-to-team'))).toExist().withTimeout(2000); + await element(by.id('room-actions-convert-channel-to-team')).tap(); + await sleep(2000); + await waitFor(element(by.id('select-list-view'))).toExist().withTimeout(2000); + await waitFor(element(by.id(`select-list-view-item-${ toBeMoved }`))).toExist().withTimeout(2000); + await element(by.id(`select-list-view-item-${ toBeMoved }`)).tap(); + await waitFor(element(by.id('select-list-view-submit'))).toExist().withTimeout(2000); + await element(by.id('select-list-view-submit')).tap(); + await waitFor(element(by.label('You are converting this Team to a Channel'))).toExist().withTimeout(2000); + await element(by.text('Convert')).tap(); + await waitFor(element(by.id('room-view'))).toExist().withTimeout(20000); + await waitFor(element(by.id(`room-view-title-${ toBeConverted }`))).toExist().withTimeout(6000); + await tapBack(); + await waitFor(element(by.id('rooms-list-view'))).toExist().withTimeout(2000); + await waitFor(element(by.id(`rooms-list-view-item-${ toBeMoved }`))).toBeNotVisible().withTimeout(60000); + }); }); }); From c9d5bc37c48904c2cc81a6ad2ee5b0165448ef1c Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Mon, 12 Jul 2021 14:05:09 -0400 Subject: [PATCH 172/177] [IMPROVE] Set black as default dark theme (#3270) * Update default darkLevel * Minor tweak --- app/index.js | 2 +- app/share.js | 2 +- app/views/ThemeView.js | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/index.js b/app/index.js index 048323a5b77..efcf1557e3d 100644 --- a/app/index.js +++ b/app/index.js @@ -75,7 +75,7 @@ export default class Root extends React.Component { theme: defaultTheme(), themePreferences: { currentTheme: supportSystemTheme() ? 'automatic' : 'light', - darkLevel: 'dark' + darkLevel: 'black' }, width, height, diff --git a/app/share.js b/app/share.js index bfe0112643b..dbf0bfbffa0 100644 --- a/app/share.js +++ b/app/share.js @@ -124,7 +124,7 @@ class Root extends React.Component { theme: defaultTheme(), themePreferences: { currentTheme: supportSystemTheme() ? 'automatic' : 'light', - darkLevel: 'dark' + darkLevel: 'black' }, root: '', width, diff --git a/app/views/ThemeView.js b/app/views/ThemeView.js index e62d7ca58a4..1152a920cc3 100644 --- a/app/views/ThemeView.js +++ b/app/views/ThemeView.js @@ -30,14 +30,14 @@ const THEMES = [ label: 'Dark', value: 'dark', group: THEME_GROUP - }, { - label: 'Dark', - value: 'dark', - group: DARK_GROUP }, { label: 'Black', value: 'black', group: DARK_GROUP + }, { + label: 'Dark', + value: 'dark', + group: DARK_GROUP } ]; From 4882ccd58831dac6671eaef2dbf9da6e3eac8777 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Mon, 12 Jul 2021 16:19:25 -0300 Subject: [PATCH 173/177] [IMPROVE] Make `system default` the default browser (#3265) * [FIX] use systemdefault: as the default browser, not inApp * Fix Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/utils/openLink.js | 8 ++++---- app/views/DefaultBrowserView.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/utils/openLink.js b/app/utils/openLink.js index 36f72c0e2c8..70362549782 100644 --- a/app/utils/openLink.js +++ b/app/utils/openLink.js @@ -39,16 +39,16 @@ const openLink = async(url, theme = 'light') => { try { const browser = await UserPreferences.getStringAsync(DEFAULT_BROWSER_KEY); - if (browser) { - const schemeUrl = appSchemeURL(url, browser.replace(':', '')); - await Linking.openURL(schemeUrl); - } else { + if (browser === 'inApp') { await WebBrowser.openBrowserAsync(url, { toolbarColor: themes[theme].headerBackground, controlsColor: themes[theme].headerTintColor, collapseToolbar: true, showTitle: true }); + } else { + const schemeUrl = appSchemeURL(url, browser.replace(':', '')); + await Linking.openURL(schemeUrl); } } catch { try { diff --git a/app/views/DefaultBrowserView.js b/app/views/DefaultBrowserView.js index 119ce9fa895..56880236098 100644 --- a/app/views/DefaultBrowserView.js +++ b/app/views/DefaultBrowserView.js @@ -83,7 +83,7 @@ class DefaultBrowserView extends React.Component { isSelected = (value) => { const { browser } = this.state; - if (!browser && value === 'inApp') { + if (!browser && value === 'systemDefault:') { return true; } return browser === value; @@ -92,7 +92,7 @@ class DefaultBrowserView extends React.Component { changeDefaultBrowser = async(newBrowser) => { logEvent(events.DB_CHANGE_DEFAULT_BROWSER, { browser: newBrowser }); try { - const browser = newBrowser !== 'inApp' ? newBrowser : null; + const browser = newBrowser !== 'systemDefault:' ? newBrowser : null; await UserPreferences.setStringAsync(DEFAULT_BROWSER_KEY, browser); this.setState({ browser }); } catch { From 8a91d0d50903f5b51b15f4af488694bb6e49b22c Mon Sep 17 00:00:00 2001 From: "lingohub[bot]" <69908207+lingohub[bot]@users.noreply.github.com> Date: Tue, 13 Jul 2021 08:50:49 -0300 Subject: [PATCH 174/177] =?UTF-8?q?Language=20update=20from=20LingoHub=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3269)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Project Name: Rocket.Chat.ReactNative Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative User: Robot LingoHub Easy language translations with LingoHub 🚀 Co-authored-by: Robot LingoHub <robot@lingohub.com> Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/i18n/locales/fr.json | 8 ++++++-- app/i18n/locales/nl.json | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json index 22088b5d149..5f26a2c8322 100644 --- a/app/i18n/locales/fr.json +++ b/app/i18n/locales/fr.json @@ -756,7 +756,7 @@ "member-does-not-exist": "Le membre n'existe pas", "Convert": "Convertir", "Convert_to_Team": "Convertir en équipe", - "Convert_to_Team_Warning": "Ceci ne peut pas être annulé. Une fois que vous avez converti un canal en équipe, vous ne pouvez pas le retransformer en canal.", + "Convert_to_Team_Warning": "Vous convertissez ce canal en équipe. Tous les membres seront conservés.", "Move_to_Team": "Déplacer vers l'équipe", "Move_Channel_Paragraph": "Le déplacement d'un canal dans une équipe signifie que ce canal sera ajouté dans le contexte d'équipe. Cependant, tous les membres du canal, qui ne sont pas membres de l'équipe respective, auront toujours accès à ce canal, mais ne seront pas ajoutés comme membres de l'équipe.\n\nLa gestion de tout le canal sera toujours assurée par les propriétaires de ce canal.\n\nLes membres de l'équipe et même les propriétaires de l'équipe, s'ils ne sont pas membres de ce canal, ne peuvent pas avoir accès au contenu du canal.\n\nVeuillez noter que le propriétaire de l'équipe pourra supprimer des membres du canal.", "Move_to_Team_Warning": "Après avoir lu les instructions précédentes sur ce comportement, voulez-vous toujours déplacer ce canal vers l'équipe sélectionnée ?", @@ -765,5 +765,9 @@ "Load_Older": "Charger plus ancien", "Left_The_Room_Successfully": "A quitté le salon avec succès", "Deleted_The_Team_Successfully": "Equipe supprimée avec succès", - "Deleted_The_Room_Successfully": "Salon supprimé avec succès" + "Deleted_The_Room_Successfully": "Salon supprimé avec succès", + "Convert_to_Channel": "Convertir en canal", + "Converting_Team_To_Channel": "Conversion de l’équipe en canal", + "Select_Team_Channels_To_Delete": "Sélectionnez les canaux de l'équipe que vous souhaitez supprimer, ceux que vous ne sélectionnez pas, seront déplacés vers l'espace de travail. \n\n\nNotez que les canaux publics seront publics et visibles par tous.", + "You_are_converting_the_team": "Vous convertissez cette équipe en canal" } \ No newline at end of file diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index 5d54bfee733..4b06156d559 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -756,7 +756,7 @@ "member-does-not-exist": "Lid bestaat niet", "Convert": "Converteren", "Convert_to_Team": "Converteren naar team", - "Convert_to_Team_Warning": "Dit kan niet ongedaan worden gemaakt. Eens je een kanaal naar een team hebt geconverteerd, kun je het niet meer naar een kanaal terugzetten.", + "Convert_to_Team_Warning": "Je converteert dit kanaal naar een team. Alle leden blijven behouden.", "Move_to_Team": "Verplaats naar team", "Move_Channel_Paragraph": "Het verplaatsen van een kanaal binnen een team betekent dat dit kanaal wordt toegevoegd in de context van het team. Maar, alle leden van dit kanaal, die geen lid zijn van het respectieve team, zullen nog steeds toegang hebben tot dit kanaal, maar worden niet als teamleden toegevoegd.\n\nHet volledige beheer van dit kanaal wordt nog steeds door de eigenaren van dit kanaal gedaan.\n\nTeamleden en zelfs teameigenaren, wanneer ze geen lid zijn van dit kanaal, hebben geen toegang tot de content van het kanaal.\n\nHou er rekening mee dat de eigenaar van het team de leden uit het kanaal kan verwijderen.", "Move_to_Team_Warning": "Wil je na het lezen van de vorige instructies over dit gedrag, dit kanaal nog steeds naar het geselecteerde team verplaatsen?", @@ -765,5 +765,9 @@ "Load_Older": "Ouder laden", "Left_The_Room_Successfully": "Heeft kamer met succes verlaten", "Deleted_The_Team_Successfully": "Team succesvol verwijderd", - "Deleted_The_Room_Successfully": "Kamer succesvol verwijderd" + "Deleted_The_Room_Successfully": "Kamer succesvol verwijderd", + "Convert_to_Channel": "Converteren naar kanaal", + "Converting_Team_To_Channel": "Team converteren naar kanaal", + "Select_Team_Channels_To_Delete": "Selecteer de teamkanalen die je wilt verwijderen, de kanalen die u niet selecteert, worden naar de werkruimte verplaatst.\n\nMerk op dat openbare kanalen openbaar en voor iedereen zichtbaar zullen zijn.", + "You_are_converting_the_team": "Je converteert dit team naar een kanaal" } \ No newline at end of file From e040be0b453c1d8d256e56770d03ba9f591b286f Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Tue, 13 Jul 2021 15:35:21 -0400 Subject: [PATCH 175/177] [IMPROVE] Remove difference between public/private on "Group by type" (#3271) * Merge channels and private groups * Remove i18n --- app/i18n/locales/ar.json | 1 - app/i18n/locales/de.json | 1 - app/i18n/locales/en.json | 1 - app/i18n/locales/es-ES.json | 1 - app/i18n/locales/fr.json | 1 - app/i18n/locales/it.json | 1 - app/i18n/locales/ja.json | 1 - app/i18n/locales/nl.json | 1 - app/i18n/locales/pt-BR.json | 1 - app/i18n/locales/pt-PT.json | 1 - app/i18n/locales/ru.json | 1 - app/i18n/locales/tr.json | 1 - app/i18n/locales/zh-CN.json | 1 - app/i18n/locales/zh-TW.json | 1 - app/views/RoomsListView/index.js | 5 +---- 15 files changed, 1 insertion(+), 18 deletions(-) diff --git a/app/i18n/locales/ar.json b/app/i18n/locales/ar.json index 6f188ca5548..8b08c047d64 100644 --- a/app/i18n/locales/ar.json +++ b/app/i18n/locales/ar.json @@ -387,7 +387,6 @@ "Preferences_saved": "تم حفظ التفضيلات", "Privacy_Policy": "سياسة الخصوصية", "Private_Channel": "قناة خاصة", - "Private_Groups": "مجموعات خاصة", "Private": "خاص", "Processing": "جار معالجة...", "Profile_saved_successfully": "تم حفظ الملف الشخصي بنجاح!", diff --git a/app/i18n/locales/de.json b/app/i18n/locales/de.json index e734fd1649b..cf61aac8697 100644 --- a/app/i18n/locales/de.json +++ b/app/i18n/locales/de.json @@ -400,7 +400,6 @@ "Preferences_saved": "Einstellungen gespeichert!", "Privacy_Policy": " Datenschutzbestimmungen", "Private_Channel": "Privater Kanal", - "Private_Groups": "Private Gruppen", "Private": "Privat", "Processing": "Bearbeite …", "Profile_saved_successfully": "Profil erfolgreich gespeichert!", diff --git a/app/i18n/locales/en.json b/app/i18n/locales/en.json index 426aaa77a8c..194031660cc 100644 --- a/app/i18n/locales/en.json +++ b/app/i18n/locales/en.json @@ -400,7 +400,6 @@ "Preferences_saved": "Preferences saved!", "Privacy_Policy": " Privacy Policy", "Private_Channel": "Private Channel", - "Private_Groups": "Private Groups", "Private": "Private", "Processing": "Processing...", "Profile_saved_successfully": "Profile saved successfully!", diff --git a/app/i18n/locales/es-ES.json b/app/i18n/locales/es-ES.json index ac665704265..25a65523df0 100644 --- a/app/i18n/locales/es-ES.json +++ b/app/i18n/locales/es-ES.json @@ -280,7 +280,6 @@ "Preferences_saved": "¡Preferencias guardadas!", "Privacy_Policy": "Política de privacidad", "Private_Channel": "Canal privado", - "Private_Groups": "Grupos privados", "Private": "Privado", "Processing": "Procesando...", "Profile_saved_successfully": "¡Perfil guardado correctamente!", diff --git a/app/i18n/locales/fr.json b/app/i18n/locales/fr.json index 5f26a2c8322..07d441eedf0 100644 --- a/app/i18n/locales/fr.json +++ b/app/i18n/locales/fr.json @@ -400,7 +400,6 @@ "Preferences_saved": "Préférences sauvegardées !", "Privacy_Policy": " Politique de confidentialité", "Private_Channel": "Canal privé", - "Private_Groups": "Groupes privés", "Private": "Privé", "Processing": "Traitement...", "Profile_saved_successfully": "Profil enregistré avec succès !", diff --git a/app/i18n/locales/it.json b/app/i18n/locales/it.json index 505282dd551..e8618f28e6f 100644 --- a/app/i18n/locales/it.json +++ b/app/i18n/locales/it.json @@ -392,7 +392,6 @@ "Preferences_saved": "Impostazioni salvate!", "Privacy_Policy": " Privacy Policy", "Private_Channel": "Canale privato", - "Private_Groups": "Gruppi privati", "Private": "Privato", "Processing": "Elaborazione...", "Profile_saved_successfully": "Profilo salvato correttamente!", diff --git a/app/i18n/locales/ja.json b/app/i18n/locales/ja.json index 994753fbb59..61accdd79e9 100644 --- a/app/i18n/locales/ja.json +++ b/app/i18n/locales/ja.json @@ -296,7 +296,6 @@ "Preferences_saved": "設定が保存されました。", "Privacy_Policy": " プライバシーポリシー", "Private_Channel": "プライベートチャンネル", - "Private_Groups": "プライベートグループ", "Private": "プライベート", "Processing": "処理中...", "Profile_saved_successfully": "プロフィールが保存されました!", diff --git a/app/i18n/locales/nl.json b/app/i18n/locales/nl.json index 4b06156d559..7c823c9ba97 100644 --- a/app/i18n/locales/nl.json +++ b/app/i18n/locales/nl.json @@ -400,7 +400,6 @@ "Preferences_saved": "Voorkeuren opgeslagen!", "Privacy_Policy": " Privacybeleid", "Private_Channel": "Privékanaal", - "Private_Groups": "Privé groepen", "Private": "Privé", "Processing": "Verwerking...", "Profile_saved_successfully": "Profiel succesvol opgeslagen!", diff --git a/app/i18n/locales/pt-BR.json b/app/i18n/locales/pt-BR.json index aefd9610675..a6fed1be236 100644 --- a/app/i18n/locales/pt-BR.json +++ b/app/i18n/locales/pt-BR.json @@ -370,7 +370,6 @@ "Preferences_saved": "Preferências salvas!", "Privacy_Policy": " Política de Privacidade", "Private_Channel": "Canal Privado", - "Private_Groups": "Grupo Privado", "Private": "Privado", "Processing": "Processando...", "Profile_saved_successfully": "Perfil salvo com sucesso!", diff --git a/app/i18n/locales/pt-PT.json b/app/i18n/locales/pt-PT.json index 3724b063492..fa10dcd36dc 100644 --- a/app/i18n/locales/pt-PT.json +++ b/app/i18n/locales/pt-PT.json @@ -399,7 +399,6 @@ "Preferences_saved": "Preferências guardadas!", "Privacy_Policy": " Política de Privacidade", "Private_Channel": "Canal Privado", - "Private_Groups": "Grupos Privados", "Private": "Privado", "Processing": "A processar...", "Profile_saved_successfully": "Perfil actualizado com sucesso!", diff --git a/app/i18n/locales/ru.json b/app/i18n/locales/ru.json index 5267a4a4118..58174b8ea03 100644 --- a/app/i18n/locales/ru.json +++ b/app/i18n/locales/ru.json @@ -400,7 +400,6 @@ "Preferences_saved": "Настройки сохранены!", "Privacy_Policy": " Политика конфиденциальности", "Private_Channel": "Приватный канал", - "Private_Groups": "Приватные группы", "Private": "Приватный", "Processing": "Обработка...", "Profile_saved_successfully": "Профиль успешно сохранен!", diff --git a/app/i18n/locales/tr.json b/app/i18n/locales/tr.json index 82959de8bcb..bc58ee92b8e 100644 --- a/app/i18n/locales/tr.json +++ b/app/i18n/locales/tr.json @@ -393,7 +393,6 @@ "Preferences_saved": "Tercihler kaydedildi!", "Privacy_Policy": " Privacy Policy", "Private_Channel": "Özel Kanal", - "Private_Groups": "Özel Gruplar", "Private": "Özel", "Processing": "İşleniyor...", "Profile_saved_successfully": "Profil başarıyla kaydedildi!", diff --git a/app/i18n/locales/zh-CN.json b/app/i18n/locales/zh-CN.json index 1b6fe974c76..4836d9a834f 100644 --- a/app/i18n/locales/zh-CN.json +++ b/app/i18n/locales/zh-CN.json @@ -390,7 +390,6 @@ "Preferences_saved": "偏好已保存!", "Privacy_Policy": "隐私政策", "Private_Channel": "私人频道", - "Private_Groups": "私人群组", "Private": "私有的", "Processing": "处理中", "Profile_saved_successfully": "个人资料保存成功!", diff --git a/app/i18n/locales/zh-TW.json b/app/i18n/locales/zh-TW.json index 6f60d155adb..29626191c85 100644 --- a/app/i18n/locales/zh-TW.json +++ b/app/i18n/locales/zh-TW.json @@ -391,7 +391,6 @@ "Preferences_saved": "偏好設定已被儲存!", "Privacy_Policy": "隱私政策", "Private_Channel": "私人頻道", - "Private_Groups": "私人群組", "Private": "私有的", "Processing": "處理中", "Profile_saved_successfully": "個人資料儲存成功!", diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 19df2c3b0ff..214f213e42b 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -71,7 +71,6 @@ const DISCUSSIONS_HEADER = 'Discussions'; const TEAMS_HEADER = 'Teams'; const CHANNELS_HEADER = 'Channels'; const DM_HEADER = 'Direct_Messages'; -const GROUPS_HEADER = 'Private_Groups'; const OMNICHANNEL_HEADER = 'Open_Livechats'; const QUERY_SIZE = 20; @@ -480,13 +479,11 @@ class RoomsListView extends React.Component { if (groupByType) { const teams = chats.filter(s => filterIsTeam(s)); const discussions = chats.filter(s => filterIsDiscussion(s)); - const channels = chats.filter(s => s.t === 'c' && !filterIsDiscussion(s) && !filterIsTeam(s)); - const privateGroup = chats.filter(s => s.t === 'p' && !filterIsDiscussion(s) && !filterIsTeam(s)); + const channels = chats.filter(s => (s.t === 'c' || s.t === 'p') && !filterIsDiscussion(s) && !filterIsTeam(s)); const direct = chats.filter(s => s.t === 'd' && !filterIsDiscussion(s) && !filterIsTeam(s)); tempChats = this.addRoomsGroup(teams, TEAMS_HEADER, tempChats); tempChats = this.addRoomsGroup(discussions, DISCUSSIONS_HEADER, tempChats); tempChats = this.addRoomsGroup(channels, CHANNELS_HEADER, tempChats); - tempChats = this.addRoomsGroup(privateGroup, GROUPS_HEADER, tempChats); tempChats = this.addRoomsGroup(direct, DM_HEADER, tempChats); } else if (showUnread || showFavorites || isOmnichannelAgent) { tempChats = this.addRoomsGroup(chats, CHATS_HEADER, tempChats); From d1702aa4165a25d8673429904a76ec4584a95611 Mon Sep 17 00:00:00 2001 From: Diego Mello <diegolmello@gmail.com> Date: Thu, 15 Jul 2021 11:34:39 -0300 Subject: [PATCH 176/177] Regression: Settings pagination not working (#3277) --- app/lib/methods/getSettings.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index c51ac406859..be6ef1ee356 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -138,9 +138,10 @@ export function subscribeSettings() { export default async function() { try { const db = database.active; - const settingsParams = JSON.stringify(Object.keys(settings).filter(key => !loginSettings.includes(key))); + const settingsParams = Object.keys(settings).filter(key => !loginSettings.includes(key)); // RC 0.60.0 - const result = await fetch(`${ this.sdk.client.host }/api/v1/settings.public?query={"_id":{"$in":${ settingsParams }}}`).then(response => response.json()); + const result = await fetch(`${ this.sdk.client.host }/api/v1/settings.public?query={"_id":{"$in":${ JSON.stringify(settingsParams) }}}&count=${ settingsParams.length }`) + .then(response => response.json()); if (!result.success) { return; From d1f35bb79988aa95264961b171ad4943bdca3332 Mon Sep 17 00:00:00 2001 From: Gerzon Z <gerzonc@icloud.com> Date: Thu, 15 Jul 2021 10:39:44 -0400 Subject: [PATCH 177/177] Regression: Markdown handlePress not working properly (#3278) Co-authored-by: Diego Mello <diegolmello@gmail.com> --- app/containers/markdown/Link.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/containers/markdown/Link.js b/app/containers/markdown/Link.js index 008dc0ba83d..615b661286e 100644 --- a/app/containers/markdown/Link.js +++ b/app/containers/markdown/Link.js @@ -7,15 +7,19 @@ import { themes } from '../../constants/colors'; import { LISTENER } from '../Toast'; import EventEmitter from '../../utils/events'; import I18n from '../../i18n'; +import openLink from '../../utils/openLink'; const Link = React.memo(({ children, link, theme, onLinkPress }) => { const handlePress = () => { - if (!link || !onLinkPress) { + if (!link) { return; } - onLinkPress(link); + if (onLinkPress) { + return onLinkPress(link); + } + openLink(link, theme); }; const childLength = React.Children.toArray(children).filter(o => o).length;